{"version":3,"file":"index.d9ab8c5e.js","sources":["../../vite/modulepreload-polyfill","../../node_modules/@vue/shared/dist/shared.esm-bundler.js","../../node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../node_modules/pinia/node_modules/vue-demi/lib/index.mjs","../../node_modules/pinia/dist/pinia.mjs","../../node_modules/vue-router/dist/vue-router.mjs","../../src/assets/errors.js","../../src/store.js","../../node_modules/@sentry/utils/esm/is.js","../../node_modules/@sentry/utils/esm/string.js","../../node_modules/@sentry/utils/esm/aggregate-errors.js","../../node_modules/@sentry/utils/esm/worldwide.js","../../node_modules/@sentry/utils/esm/browser.js","../../node_modules/@sentry/utils/esm/debug-build.js","../../node_modules/@sentry/utils/esm/logger.js","../../node_modules/@sentry/utils/esm/dsn.js","../../node_modules/@sentry/utils/esm/error.js","../../node_modules/@sentry/utils/esm/object.js","../../node_modules/@sentry/utils/esm/stacktrace.js","../../node_modules/@sentry/utils/esm/instrument/_handlers.js","../../node_modules/@sentry/utils/esm/instrument/console.js","../../node_modules/@sentry/utils/esm/misc.js","../../node_modules/@sentry/utils/esm/instrument/dom.js","../../node_modules/@sentry/utils/esm/supports.js","../../node_modules/@sentry/utils/esm/instrument/fetch.js","../../node_modules/@sentry/utils/esm/instrument/globalError.js","../../node_modules/@sentry/utils/esm/instrument/globalUnhandledRejection.js","../../node_modules/@sentry/utils/esm/vendor/supportsHistory.js","../../node_modules/@sentry/utils/esm/instrument/history.js","../../node_modules/@sentry/utils/esm/instrument/xhr.js","../../node_modules/@sentry/utils/esm/env.js","../../node_modules/@sentry/utils/esm/node.js","../../node_modules/@sentry/utils/esm/isBrowser.js","../../node_modules/@sentry/utils/esm/memo.js","../../node_modules/@sentry/utils/esm/normalize.js","../../node_modules/@sentry/utils/esm/syncpromise.js","../../node_modules/@sentry/utils/esm/promisebuffer.js","../../node_modules/@sentry/utils/esm/url.js","../../node_modules/@sentry/utils/esm/severity.js","../../node_modules/@sentry/utils/esm/time.js","../../node_modules/@sentry/utils/esm/envelope.js","../../node_modules/@sentry/utils/esm/clientreport.js","../../node_modules/@sentry/utils/esm/ratelimit.js","../../node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","../../node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","../../node_modules/@sentry/core/esm/debug-build.js","../../node_modules/@sentry/core/esm/constants.js","../../node_modules/@sentry/core/esm/eventProcessors.js","../../node_modules/@sentry/core/esm/session.js","../../node_modules/@sentry/core/esm/utils/spanUtils.js","../../node_modules/@sentry/core/esm/utils/prepareEvent.js","../../node_modules/@sentry/core/esm/exports.js","../../node_modules/@sentry/core/esm/utils/getRootSpan.js","../../node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js","../../node_modules/@sentry/core/esm/utils/applyScopeDataToEvent.js","../../node_modules/@sentry/core/esm/scope.js","../../node_modules/@sentry/core/esm/version.js","../../node_modules/@sentry/core/esm/hub.js","../../node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","../../node_modules/@sentry/core/esm/tracing/trace.js","../../node_modules/@sentry/core/esm/semanticAttributes.js","../../node_modules/@sentry/core/esm/envelope.js","../../node_modules/@sentry/core/esm/api.js","../../node_modules/@sentry/core/esm/integration.js","../../node_modules/@sentry/core/esm/metrics/utils.js","../../node_modules/@sentry/core/esm/metrics/envelope.js","../../node_modules/@sentry/core/esm/baseclient.js","../../node_modules/@sentry/core/esm/sdk.js","../../node_modules/@sentry/core/esm/transports/base.js","../../node_modules/@sentry/core/esm/utils/isSentryRequestUrl.js","../../node_modules/@sentry/core/esm/utils/sdkMetadata.js","../../node_modules/@sentry/core/esm/integrations/inboundfilters.js","../../node_modules/@sentry/core/esm/integrations/functiontostring.js","../../node_modules/@sentry-internal/tracing/esm/common/debug-build.js","../../node_modules/@sentry-internal/tracing/esm/browser/types.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","../../node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","../../node_modules/@sentry-internal/tracing/esm/browser/instrument.js","../../node_modules/@sentry/browser/esm/helpers.js","../../node_modules/@sentry/browser/esm/debug-build.js","../../node_modules/@sentry/browser/esm/eventbuilder.js","../../node_modules/@sentry/browser/esm/userfeedback.js","../../node_modules/@sentry/browser/esm/client.js","../../node_modules/@sentry/browser/esm/transports/utils.js","../../node_modules/@sentry/browser/esm/transports/fetch.js","../../node_modules/@sentry/browser/esm/transports/xhr.js","../../node_modules/@sentry/browser/esm/stack-parsers.js","../../node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","../../node_modules/@sentry/browser/esm/integrations/dedupe.js","../../node_modules/@sentry/browser/esm/integrations/globalhandlers.js","../../node_modules/@sentry/browser/esm/integrations/httpcontext.js","../../node_modules/@sentry/browser/esm/integrations/linkederrors.js","../../node_modules/@sentry/browser/esm/integrations/trycatch.js","../../node_modules/@sentry/browser/esm/sdk.js","../../node_modules/@sentry/replay/esm/index.js","../../node_modules/@sentry/vue/esm/constants.js","../../node_modules/@sentry/vue/esm/vendor/components.js","../../node_modules/@sentry/vue/esm/errorhandler.js","../../node_modules/@sentry/vue/esm/debug-build.js","../../node_modules/@sentry/vue/esm/tracing.js","../../node_modules/@sentry/vue/esm/integration.js","../../node_modules/@sentry/vue/esm/sdk.js","../../src/assets/logger.js","../../../../../../logo.svg","../../src/assets/http.js","../../src/components/Login.vue","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js","../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","../../node_modules/floating-vue/dist/floating-vue.mjs","../../node_modules/file-saver/dist/FileSaver.min.js","../../src/assets/loading-screen.js","../../src/components/Navbar.vue","../../../../../../loading-spinner.gif","../../node_modules/@kouts/vue-modal/dist/vue-modal.es.js","../../src/components/ProjectList.vue","../../../../../../loading.gif","../../node_modules/orderedmap/dist/index.js","../../node_modules/prosemirror-model/dist/index.js","../../node_modules/prosemirror-transform/dist/index.js","../../node_modules/prosemirror-state/dist/index.js","../../node_modules/prosemirror-view/dist/index.js","../../node_modules/w3c-keyname/index.js","../../node_modules/prosemirror-keymap/dist/index.js","../../node_modules/prosemirror-tables/dist/index.js","../../node_modules/rope-sequence/dist/index.js","../../node_modules/prosemirror-history/dist/index.js","../../__vite-browser-external","../../node_modules/crypto-js/core.js","../../node_modules/crypto-js/x64-core.js","../../node_modules/crypto-js/lib-typedarrays.js","../../node_modules/crypto-js/enc-utf16.js","../../node_modules/crypto-js/enc-base64.js","../../node_modules/crypto-js/enc-base64url.js","../../node_modules/crypto-js/md5.js","../../node_modules/crypto-js/sha1.js","../../node_modules/crypto-js/sha256.js","../../node_modules/crypto-js/sha224.js","../../node_modules/crypto-js/sha512.js","../../node_modules/crypto-js/sha384.js","../../node_modules/crypto-js/sha3.js","../../node_modules/crypto-js/ripemd160.js","../../node_modules/crypto-js/hmac.js","../../node_modules/crypto-js/pbkdf2.js","../../node_modules/crypto-js/evpkdf.js","../../node_modules/crypto-js/cipher-core.js","../../node_modules/crypto-js/mode-cfb.js","../../node_modules/crypto-js/mode-ctr.js","../../node_modules/crypto-js/mode-ctr-gladman.js","../../node_modules/crypto-js/mode-ofb.js","../../node_modules/crypto-js/mode-ecb.js","../../node_modules/crypto-js/pad-ansix923.js","../../node_modules/crypto-js/pad-iso10126.js","../../node_modules/crypto-js/pad-iso97971.js","../../node_modules/crypto-js/pad-zeropadding.js","../../node_modules/crypto-js/pad-nopadding.js","../../node_modules/crypto-js/format-hex.js","../../node_modules/crypto-js/aes.js","../../node_modules/crypto-js/tripledes.js","../../node_modules/crypto-js/rc4.js","../../node_modules/crypto-js/rabbit.js","../../node_modules/crypto-js/rabbit-legacy.js","../../node_modules/crypto-js/blowfish.js","../../node_modules/crypto-js/index.js","../../src/assets/utils.js","../../src/assets/prosemirror-helpers.js","../../src/components/EditorToolbar.vue","../../node_modules/prosemirror-commands/dist/index.js","../../node_modules/prosemirror-gapcursor/dist/index.js","../../src/assets/prosemirror-doc-structure.js","../../src/components/EditTranscript.vue","../../src/assets/use-memos.js","../../src/components/CreateMemoModal.vue","../../src/assets/save-transcript.js","../../src/assets/use-codebook.js","../../node_modules/jszip/dist/jszip.min.js","../../src/components/ExcerptDetailsModal.vue","../../src/components/CodeDetailsModal.vue","../../node_modules/@kurkle/color/dist/color.esm.js","../../node_modules/chart.js/dist/chunks/helpers.segment.js","../../node_modules/chart.js/dist/chart.js","../../node_modules/@sgratzl/boxplots/build/index.js","../../node_modules/@sgratzl/chartjs-chart-boxplot/build/index.js","../../src/components/ChartRenderer.vue","../../src/assets/use-charts.js","../../src/components/ThemeDetailsModal.vue","../../src/components/AutoCodingStatusModal.vue","../../src/components/ThematizingModal.vue","../../src/components/Transcript.vue","../../src/components/Signup.vue","../../src/components/ExcerptList.vue","../../src/components/Memos.vue","../../src/components/BarChart.vue","../../src/components/CooccurrenceMatrix.vue","../../src/components/Insights.vue","../../src/components/ForgotPassword.vue","../../src/components/ResetPassword.vue","../../src/components/VerifyEmail.vue","../../src/components/ProjectInvitation.vue","../../src/components/Upgrade.vue","../../../../../../logo_white.svg","../../src/components/ReliabilitySurvey.vue","../../src/components/AudioTranscriptionUpload.vue","../../src/components/AudioTranscriptionPreview.vue","../../src/components/AudioTranscriptionStart.vue","../../src/router.js","../../src/components/ErrorNotification.vue","../../src/App.vue","../../src/main.js"],"sourcesContent":["__VITE_IS_MODERN__&&(function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n}());","function makeMap(str, expectsLowerCase) {\n const map = /* @__PURE__ */ Object.create(null);\n const list = str.split(\",\");\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction(\n (str) => str.charAt(0).toUpperCase() + str.slice(1)\n);\nconst toHandlerKey = cacheStringFunction(\n (str) => str ? `on${capitalize(str)}` : ``\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `HYDRATE_EVENTS`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_WHITE_LISTED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console\";\nconst isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value)) {\n return value;\n } else if (isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => {\n entries[`${key} =>`] = val2;\n return entries;\n }, {})\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()]\n };\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","import { extend, isArray, isMap, isIntegerKey, hasOwn, isSymbol, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nconst createDep = (effects) => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit;\n }\n }\n};\nconst finalizeDepMarkers = (effect) => {\n const { deps } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n } else {\n deps[ptr++] = dep;\n }\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = void 0;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n } else {\n cleanupEffect(this);\n }\n return this.fn();\n } finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = void 0;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n if (activeEffect === this) {\n this.deferStop = true;\n } else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect2) {\n const { deps } = effect2;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect2);\n }\n deps.length = 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn);\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep());\n }\n const eventInfo = !!(process.env.NODE_ENV !== \"production\") ? { effect: activeEffect, target, type, key } : void 0;\n trackEffects(dep, eventInfo);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack2 = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit;\n shouldTrack2 = !wasTracked(dep);\n }\n } else {\n shouldTrack2 = !dep.has(activeEffect);\n }\n if (shouldTrack2) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if (!!(process.env.NODE_ENV !== \"production\") && activeEffect.onTrack) {\n activeEffect.onTrack(\n extend(\n {\n effect: activeEffect\n },\n debuggerEventExtraInfo\n )\n );\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const eventInfo = !!(process.env.NODE_ENV !== \"production\") ? { target, type, key, newValue, oldValue, oldTarget } : void 0;\n if (deps.length === 1) {\n if (deps[0]) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n triggerEffects(deps[0], eventInfo);\n } else {\n triggerEffects(deps[0]);\n }\n }\n } else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n triggerEffects(createDep(effects), eventInfo);\n } else {\n triggerEffects(createDep(effects));\n }\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n const effects = isArray(dep) ? dep : [...dep];\n for (const effect2 of effects) {\n if (effect2.computed) {\n triggerEffect(effect2, debuggerEventExtraInfo);\n }\n }\n for (const effect2 of effects) {\n if (!effect2.computed) {\n triggerEffect(effect2, debuggerEventExtraInfo);\n }\n }\n}\nfunction triggerEffect(effect2, debuggerEventExtraInfo) {\n if (effect2 !== activeEffect || effect2.allowRecurse) {\n if (!!(process.env.NODE_ENV !== \"production\") && effect2.onTrigger) {\n effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n if (effect2.scheduler) {\n effect2.scheduler();\n } else {\n effect2.run();\n }\n }\n}\nfunction getDepFromReactive(object, key) {\n var _a;\n return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst get$1 = /* @__PURE__ */ createGetter();\nconst shallowGet = /* @__PURE__ */ createGetter(false, true);\nconst readonlyGet = /* @__PURE__ */ createGetter(true);\nconst shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nfunction createGetter(isReadonly2 = false, shallow = false) {\n return function get2(target, key, receiver) {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return shallow;\n } else if (key === \"__v_raw\" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set$1 = /* @__PURE__ */ createSetter();\nconst shallowSet = /* @__PURE__ */ createSetter(true);\nfunction createSetter(shallow = false) {\n return function set2(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow) {\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction has$1(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\", isArray(target) ? \"length\" : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get: get$1,\n set: set$1,\n deleteProperty,\n has: has$1,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n },\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n};\nconst shallowReactiveHandlers = /* @__PURE__ */ extend(\n {},\n mutableHandlers,\n {\n get: shallowGet,\n set: shallowSet\n }\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ extend(\n {},\n readonlyHandlers,\n {\n get: shallowReadonlyGet\n }\n);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(\n method,\n false,\n false\n );\n readonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n false\n );\n shallowInstrumentations2[method] = createIterableMethod(\n method,\n false,\n true\n );\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n def(value, \"__v_skip\", true);\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref2) {\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n trackEffects(ref2.dep || (ref2.dep = createDep()), {\n target: ref2,\n type: \"get\",\n key: \"value\"\n });\n } else {\n trackEffects(ref2.dep || (ref2.dep = createDep()));\n }\n }\n}\nfunction triggerRefValue(ref2, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n triggerEffects(dep, {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n });\n } else {\n triggerEffects(dep);\n }\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(\n source,\n key,\n defaultValue\n );\n}\n\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n trackRefValue(self);\n if (self._dirty || !self._cacheable) {\n self._dirty = false;\n self._value = self.effect.run();\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n console.warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst tick = /* @__PURE__ */ Promise.resolve();\nconst queue = [];\nlet queued = false;\nconst scheduler = (fn) => {\n queue.push(fn);\n if (!queued) {\n queued = true;\n tick.then(flush);\n }\n};\nconst flush = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n queued = false;\n};\nclass DeferredComputedRefImpl {\n constructor(getter) {\n this.dep = void 0;\n this._dirty = true;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = true;\n let compareTarget;\n let hasCompareTarget = false;\n let scheduled = false;\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\n if (this.dep) {\n if (computedTrigger) {\n compareTarget = this._value;\n hasCompareTarget = true;\n } else if (!scheduled) {\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\n scheduled = true;\n hasCompareTarget = false;\n scheduler(() => {\n if (this.effect.active && this._get() !== valueToCompare) {\n triggerRefValue(this);\n }\n scheduled = false;\n });\n }\n for (const e of this.dep) {\n if (e.computed instanceof DeferredComputedRefImpl) {\n e.scheduler(\n true\n /* computedTrigger */\n );\n }\n }\n }\n this._dirty = true;\n });\n this.effect.computed = this;\n }\n _get() {\n if (this._dirty) {\n this._dirty = false;\n return this._value = this.effect.run();\n }\n return this._value;\n }\n get value() {\n trackRefValue(this);\n return toRaw(this)._get();\n }\n}\nfunction deferredComputed(getter) {\n return new DeferredComputedRefImpl(getter);\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, getCurrentScope, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, toNumber, hasChanged, remove, isSet, isMap, isPlainObject, isBuiltInDirective, invokeArrayFns, isRegExp, capitalize, isGloballyWhitelisted, NO, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (!!!(process.env.NODE_ENV !== \"production\"))\n return;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\"))\n return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? start = middle + 1 : end = middle;\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.add(oldComp);\n }\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n queueJob(instance.parent.update);\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(\n normalizeClassComponent(instance.type)\n );\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools && typeof devtools.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n props,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(\n render.call(\n proxyToUse,\n proxyToUse,\n renderCache,\n props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n props,\n null\n /* we know it doesn't need it */\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn(\n `Component inside renders non-element root node that cannot be animated.`\n );\n }\n root.transition = vnode.transition;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, void 0];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n isSVG,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n isSVG,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n isSVG,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n isSVG,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n isSVG,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n isSVG,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n isSVG,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else {\n suspense.pendingId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n isSVG,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n isSVG,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n isSVG,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n isSVG,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n isSVG,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n isSVG,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n ` is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n const delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container2, anchor2, 0);\n }\n };\n }\n let { anchor: anchor2 } = suspense;\n if (activeBranch) {\n anchor2 = next(activeBranch);\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor2, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n isSVG2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n isSVG,\n optimized\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n document.createElement(\"div\"),\n null,\n isSVG,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n /* hydrating */\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild) {\n warn(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = vnode.el = branch.el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n var _a;\n return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;\n}\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n var _a;\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n } else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow$1(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return traverse(s);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n };\n };\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n onCleanup = NOOP;\n if (!cb) {\n getter();\n } else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3, [\n getter(),\n isMultiSource ? [] : void 0,\n onCleanup\n ]);\n }\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some(\n (v, i) => hasChanged(v, oldValue[i])\n ) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n } else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(internalInstance) || internalInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\"))\n break;\n }\n }\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === void 0) {\n prevTransitionKey = key;\n } else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\") {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = void 0;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1))\n done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el._leaveCb) {\n el._leaveCb(\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) {\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n return resolveTransitionHooks(vnode2, props, state, instance);\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128)\n keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n /* do not throw in dev if user provided error component */\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n isSVG,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || !isSameVNodeType(cached, current)) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, \"\"));\n warn(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n /* do not include inferred name to avoid breaking existing code */\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res)\n res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\")\n props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance, \"get\", key);\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn(`Cannot mutate \n\n\n","const sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n return {\n ...rect,\n top: rect.y,\n left: rect.x,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n continue;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n ...rects.floating,\n x,\n y\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. This stops `shift()` from taking action, but can\n // be worked around by calling it again after the `arrow()` if desired.\n const shouldAddOffset = getAlignment(placement) != null && center != offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? min$1 - center : max - center : 0;\n return {\n [axis]: coords[axis] - alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset + alignmentOffset\n }\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const side = getSide(placement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$map$so;\n const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: 0,\n crossAxis: 0,\n alignmentAxis: null,\n ...rawValue\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n const {\n x,\n y\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: diffCoords\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const overflowAvailableHeight = height - overflow[heightSide];\n const overflowAvailableWidth = width - overflow[widthSide];\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (isYAxis) {\n const maximumClippingWidth = width - overflow.left - overflow.right;\n availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n } else {\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n let width = parseFloat(css.width);\n let height = parseFloat(css.height);\n const offsetWidth = element.offsetWidth;\n const offsetHeight = element.offsetHeight;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n fallback: shouldFallback\n };\n}\n\nfunction getNodeName(node) {\n return isNode(node) ? (node.nodeName || '').toLowerCase() : '';\n}\n\nlet uaString;\nfunction getUAString() {\n if (uaString) {\n return uaString;\n }\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n uaString = uaData.brands.map(item => item.brand + \"/\" + item.version).join(' ');\n return uaString;\n }\n return navigator.userAgent;\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle$1(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n // TODO: Try to use feature detection here instead.\n const isFirefox = /firefox/i.test(getUAString());\n const css = getComputedStyle$1(element);\n const backdropFilter = css.backdropFilter || css.WebkitBackdropFilter;\n\n // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (backdropFilter ? backdropFilter !== 'none' : false) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => {\n // Add type check for old browsers.\n const contain = css.contain;\n return contain != null ? contain.includes(value) : false;\n });\n}\nfunction isLayoutViewport() {\n // TODO: Try to use feature detection here instead. Feature detection for\n // this can fail in various ways, making the userAgent check the most:\n // reliable:\n // • Always-visible scrollbar or not\n // • Width of \n\n // Not Safari.\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nconst FALLBACK_SCALE = {\n x: 1,\n y: 1\n};\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return FALLBACK_SCALE;\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n fallback\n } = getCssDimensions(domElement);\n let x = (fallback ? round(rect.width) : rect.width) / width;\n let y = (fallback ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n var _win$visualViewport, _win$visualViewport2;\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = FALLBACK_SCALE;\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const win = domElement ? getWindow(domElement) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n let x = (clientRect.left + (addVisualOffsets ? ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0 : 0)) / scale.x;\n let y = (clientRect.top + (addVisualOffsets ? ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0 : 0)) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n iframeRect.x += (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n iframeRect.y += (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += iframeRect.x;\n y += iframeRect.y;\n currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y\n };\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = {\n x: 1,\n y: 1\n };\n const offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n // `getParentNode` will never return a `Document` due to the fallback\n // check, so it's either the or element.\n return parentNode.ownerDocument.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n if (list === void 0) {\n list = [];\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const layoutViewport = isLayoutViewport();\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : {\n x: 1,\n y: 1\n };\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n if (clippingAncestor === 'viewport') {\n return rectToClientRect(getViewportRect(element, strategy));\n }\n if (isElement(clippingAncestor)) {\n return rectToClientRect(getInnerBoundingClientRect(clippingAncestor, strategy));\n }\n return rectToClientRect(getDocumentRect(getDocumentElement(element)));\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const containingBlock = isContainingBlock(currentNode);\n const shouldDropCurrentNode = elementIsFixed ? !containingBlock && !currentContainingBlockComputedStyle : !containingBlock && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n if (isHTMLElement(element)) {\n return getCssDimensions(element);\n }\n return element.getBoundingClientRect();\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element) {\n const window = getWindow(element);\n let offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(element, true, strategy === 'fixed', offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll: _ancestorScroll = true,\n ancestorResize = true,\n elementResize = true,\n animationFrame = false\n } = options;\n const ancestorScroll = _ancestorScroll && !animationFrame;\n const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : reference.contextElement ? getOverflowAncestors(reference.contextElement) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n let observer = null;\n if (elementResize) {\n let initialUpdate = true;\n observer = new ResizeObserver(() => {\n if (!initialUpdate) {\n update();\n }\n initialUpdate = false;\n });\n isElement(reference) && !animationFrame && observer.observe(reference);\n if (!isElement(reference) && reference.contextElement && !animationFrame) {\n observer.observe(reference.contextElement);\n }\n observer.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _observer;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n (_observer = observer) == null ? void 0 : _observer.disconnect();\n observer = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { defineComponent as H, openBlock as c, createElementBlock as P, normalizeClass as O, renderSlot as N, normalizeProps as Me, guardReactiveProps as ke, pushScopeId as Ee, popScopeId as Le, nextTick as Be, createBlock as M, withScopeId as De, resolveComponent as T, normalizeStyle as x, withKeys as Ie, createElementVNode as $, Fragment as Re, createCommentVNode as ee, withCtx as A, createVNode as ce, mergeProps as Fe, toDisplayString as Ve, ref as Y, createApp as je, h as xe } from \"vue\";\nimport { offset as We, autoPlacement as Ge, shift as qe, flip as Ye, arrow as Xe, size as Ue, computePosition as Ke, getOverflowAncestors as te } from \"@floating-ui/dom\";\nfunction fe(e, t) {\n for (const o in t)\n Object.prototype.hasOwnProperty.call(t, o) && (typeof t[o] == \"object\" && e[o] ? fe(e[o], t[o]) : e[o] = t[o]);\n}\nconst u = {\n // Disable popper components\n disabled: !1,\n // Default position offset along main axis (px)\n distance: 5,\n // Default position offset along cross axis (px)\n skidding: 0,\n // Default container where the tooltip will be appended\n container: \"body\",\n // Element used to compute position and size boundaries\n boundary: void 0,\n // Skip delay & CSS transitions when another popper is shown, so that the popper appear to instanly move to the new position.\n instantMove: !1,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 5e3,\n // Triggers on the popper itself\n popperTriggers: [],\n // Positioning strategy\n strategy: \"absolute\",\n // Prevent overflow\n preventOverflow: !0,\n // Flip to the opposite placement if needed\n flip: !0,\n // Shift on the cross axis to prevent the popper from overflowing\n shift: !0,\n // Overflow padding (px)\n overflowPadding: 0,\n // Arrow padding (px)\n arrowPadding: 0,\n // Compute arrow overflow (useful to hide it)\n arrowOverflow: !0,\n // Themes\n themes: {\n tooltip: {\n // Default tooltip placement relative to target element\n placement: \"top\",\n // Default events that trigger the tooltip\n triggers: [\"hover\", \"focus\", \"touch\"],\n // Close tooltip on click on tooltip target\n hideTriggers: (e) => [...e, \"click\"],\n // Delay (ms)\n delay: {\n show: 200,\n hide: 0\n },\n // Update popper on content resize\n handleResize: !1,\n // Enable HTML content in directive\n html: !1,\n // Displayed when tooltip content is loading\n loadingContent: \"...\"\n },\n dropdown: {\n // Default dropdown placement relative to target element\n placement: \"bottom\",\n // Default events that trigger the dropdown\n triggers: [\"click\"],\n // Delay (ms)\n delay: 0,\n // Update popper on content resize\n handleResize: !0,\n // Hide on clock outside\n autoHide: !0\n },\n menu: {\n $extend: \"dropdown\",\n triggers: [\"hover\", \"focus\"],\n popperTriggers: [\"hover\", \"focus\"],\n delay: {\n show: 0,\n hide: 400\n }\n }\n }\n};\nfunction b(e, t) {\n let o = u.themes[e] || {}, i;\n do\n i = o[t], typeof i > \"u\" ? o.$extend ? o = u.themes[o.$extend] || {} : (o = null, i = u[t]) : o = null;\n while (o);\n return i;\n}\nfunction Je(e) {\n const t = [e];\n let o = u.themes[e] || {};\n do\n o.$extend && !o.$resetCss ? (t.push(o.$extend), o = u.themes[o.$extend] || {}) : o = null;\n while (o);\n return t.map((i) => `v-popper--theme-${i}`);\n}\nfunction oe(e) {\n const t = [e];\n let o = u.themes[e] || {};\n do\n o.$extend ? (t.push(o.$extend), o = u.themes[o.$extend] || {}) : o = null;\n while (o);\n return t;\n}\nlet _ = !1;\nif (typeof window < \"u\") {\n _ = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get() {\n _ = !0;\n }\n });\n window.addEventListener(\"test\", null, e);\n } catch {\n }\n}\nlet me = !1;\ntypeof window < \"u\" && typeof navigator < \"u\" && (me = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream);\nconst ge = [\"auto\", \"top\", \"bottom\", \"left\", \"right\"].reduce((e, t) => e.concat([\n t,\n `${t}-start`,\n `${t}-end`\n]), []), ie = {\n hover: \"mouseenter\",\n focus: \"focus\",\n click: \"click\",\n touch: \"touchstart\",\n pointer: \"pointerdown\"\n}, se = {\n hover: \"mouseleave\",\n focus: \"blur\",\n click: \"click\",\n touch: \"touchend\",\n pointer: \"pointerup\"\n};\nfunction ne(e, t) {\n const o = e.indexOf(t);\n o !== -1 && e.splice(o, 1);\n}\nfunction W() {\n return new Promise((e) => requestAnimationFrame(() => {\n requestAnimationFrame(e);\n }));\n}\nconst d = [];\nlet g = null;\nconst re = {};\nfunction pe(e) {\n let t = re[e];\n return t || (t = re[e] = []), t;\n}\nlet X = function() {\n};\ntypeof window < \"u\" && (X = window.Element);\nfunction n(e) {\n return function(t) {\n return b(t.theme, e);\n };\n}\nconst G = \"__floating-vue__popper\", K = () => H({\n name: \"VPopper\",\n provide() {\n return {\n [G]: {\n parentPopper: this\n }\n };\n },\n inject: {\n [G]: { default: null }\n },\n props: {\n theme: {\n type: String,\n required: !0\n },\n targetNodes: {\n type: Function,\n required: !0\n },\n referenceNode: {\n type: Function,\n default: null\n },\n popperNode: {\n type: Function,\n required: !0\n },\n shown: {\n type: Boolean,\n default: !1\n },\n showGroup: {\n type: String,\n default: null\n },\n // eslint-disable-next-line vue/require-prop-types\n ariaId: {\n default: null\n },\n disabled: {\n type: Boolean,\n default: n(\"disabled\")\n },\n positioningDisabled: {\n type: Boolean,\n default: n(\"positioningDisabled\")\n },\n placement: {\n type: String,\n default: n(\"placement\"),\n validator: (e) => ge.includes(e)\n },\n delay: {\n type: [String, Number, Object],\n default: n(\"delay\")\n },\n distance: {\n type: [Number, String],\n default: n(\"distance\")\n },\n skidding: {\n type: [Number, String],\n default: n(\"skidding\")\n },\n triggers: {\n type: Array,\n default: n(\"triggers\")\n },\n showTriggers: {\n type: [Array, Function],\n default: n(\"showTriggers\")\n },\n hideTriggers: {\n type: [Array, Function],\n default: n(\"hideTriggers\")\n },\n popperTriggers: {\n type: Array,\n default: n(\"popperTriggers\")\n },\n popperShowTriggers: {\n type: [Array, Function],\n default: n(\"popperShowTriggers\")\n },\n popperHideTriggers: {\n type: [Array, Function],\n default: n(\"popperHideTriggers\")\n },\n container: {\n type: [String, Object, X, Boolean],\n default: n(\"container\")\n },\n boundary: {\n type: [String, X],\n default: n(\"boundary\")\n },\n strategy: {\n type: String,\n validator: (e) => [\"absolute\", \"fixed\"].includes(e),\n default: n(\"strategy\")\n },\n autoHide: {\n type: [Boolean, Function],\n default: n(\"autoHide\")\n },\n handleResize: {\n type: Boolean,\n default: n(\"handleResize\")\n },\n instantMove: {\n type: Boolean,\n default: n(\"instantMove\")\n },\n eagerMount: {\n type: Boolean,\n default: n(\"eagerMount\")\n },\n popperClass: {\n type: [String, Array, Object],\n default: n(\"popperClass\")\n },\n computeTransformOrigin: {\n type: Boolean,\n default: n(\"computeTransformOrigin\")\n },\n /**\n * @deprecated\n */\n autoMinSize: {\n type: Boolean,\n default: n(\"autoMinSize\")\n },\n autoSize: {\n type: [Boolean, String],\n default: n(\"autoSize\")\n },\n /**\n * @deprecated\n */\n autoMaxSize: {\n type: Boolean,\n default: n(\"autoMaxSize\")\n },\n autoBoundaryMaxSize: {\n type: Boolean,\n default: n(\"autoBoundaryMaxSize\")\n },\n preventOverflow: {\n type: Boolean,\n default: n(\"preventOverflow\")\n },\n overflowPadding: {\n type: [Number, String],\n default: n(\"overflowPadding\")\n },\n arrowPadding: {\n type: [Number, String],\n default: n(\"arrowPadding\")\n },\n arrowOverflow: {\n type: Boolean,\n default: n(\"arrowOverflow\")\n },\n flip: {\n type: Boolean,\n default: n(\"flip\")\n },\n shift: {\n type: Boolean,\n default: n(\"shift\")\n },\n shiftCrossAxis: {\n type: Boolean,\n default: n(\"shiftCrossAxis\")\n },\n noAutoFocus: {\n type: Boolean,\n default: n(\"noAutoFocus\")\n },\n disposeTimeout: {\n type: Number,\n default: n(\"disposeTimeout\")\n }\n },\n emits: [\n \"show\",\n \"hide\",\n \"update:shown\",\n \"apply-show\",\n \"apply-hide\",\n \"close-group\",\n \"close-directive\",\n \"auto-hide\",\n \"resize\",\n \"dispose\"\n ],\n data() {\n return {\n isShown: !1,\n isMounted: !1,\n skipTransition: !1,\n classes: {\n showFrom: !1,\n showTo: !1,\n hideFrom: !1,\n hideTo: !0\n },\n result: {\n x: 0,\n y: 0,\n placement: \"\",\n strategy: this.strategy,\n arrow: {\n x: 0,\n y: 0,\n centerOffset: 0\n },\n transformOrigin: null\n },\n shownChildren: /* @__PURE__ */ new Set(),\n lastAutoHide: !0\n };\n },\n computed: {\n popperId() {\n return this.ariaId != null ? this.ariaId : this.randomId;\n },\n shouldMountContent() {\n return this.eagerMount || this.isMounted;\n },\n slotData() {\n return {\n popperId: this.popperId,\n isShown: this.isShown,\n shouldMountContent: this.shouldMountContent,\n skipTransition: this.skipTransition,\n autoHide: typeof this.autoHide == \"function\" ? this.lastAutoHide : this.autoHide,\n show: this.show,\n hide: this.hide,\n handleResize: this.handleResize,\n onResize: this.onResize,\n classes: {\n ...this.classes,\n popperClass: this.popperClass\n },\n result: this.positioningDisabled ? null : this.result,\n attrs: this.$attrs\n };\n },\n parentPopper() {\n var e;\n return (e = this[G]) == null ? void 0 : e.parentPopper;\n },\n hasPopperShowTriggerHover() {\n var e, t;\n return ((e = this.popperTriggers) == null ? void 0 : e.includes(\"hover\")) || ((t = this.popperShowTriggers) == null ? void 0 : t.includes(\"hover\"));\n }\n },\n watch: {\n shown: \"$_autoShowHide\",\n disabled(e) {\n e ? this.dispose() : this.init();\n },\n async container() {\n this.isShown && (this.$_ensureTeleport(), await this.$_computePosition());\n },\n ...[\n \"triggers\",\n \"positioningDisabled\"\n ].reduce((e, t) => (e[t] = \"$_refreshListeners\", e), {}),\n ...[\n \"placement\",\n \"distance\",\n \"skidding\",\n \"boundary\",\n \"strategy\",\n \"overflowPadding\",\n \"arrowPadding\",\n \"preventOverflow\",\n \"shift\",\n \"shiftCrossAxis\",\n \"flip\"\n ].reduce((e, t) => (e[t] = \"$_computePosition\", e), {})\n },\n created() {\n this.$_isDisposed = !0, this.randomId = `popper_${[Math.random(), Date.now()].map((e) => e.toString(36).substring(2, 10)).join(\"_\")}`, this.autoMinSize && console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize=\"min\"` instead.'), this.autoMaxSize && console.warn(\"[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.\");\n },\n mounted() {\n this.init(), this.$_detachPopperNode();\n },\n activated() {\n this.$_autoShowHide();\n },\n deactivated() {\n this.hide();\n },\n beforeUnmount() {\n this.dispose();\n },\n methods: {\n show({ event: e = null, skipDelay: t = !1, force: o = !1 } = {}) {\n var i, s;\n (i = this.parentPopper) != null && i.lockedChild && this.parentPopper.lockedChild !== this || (this.$_pendingHide = !1, (o || !this.disabled) && (((s = this.parentPopper) == null ? void 0 : s.lockedChild) === this && (this.parentPopper.lockedChild = null), this.$_scheduleShow(e, t), this.$emit(\"show\"), this.$_showFrameLocked = !0, requestAnimationFrame(() => {\n this.$_showFrameLocked = !1;\n })), this.$emit(\"update:shown\", !0));\n },\n hide({ event: e = null, skipDelay: t = !1 } = {}) {\n var o;\n if (!this.$_hideInProgress) {\n if (this.shownChildren.size > 0) {\n this.$_pendingHide = !0;\n return;\n }\n if (this.hasPopperShowTriggerHover && this.$_isAimingPopper()) {\n this.parentPopper && (this.parentPopper.lockedChild = this, clearTimeout(this.parentPopper.lockedChildTimer), this.parentPopper.lockedChildTimer = setTimeout(() => {\n this.parentPopper.lockedChild === this && (this.parentPopper.lockedChild.hide({ skipDelay: t }), this.parentPopper.lockedChild = null);\n }, 1e3));\n return;\n }\n ((o = this.parentPopper) == null ? void 0 : o.lockedChild) === this && (this.parentPopper.lockedChild = null), this.$_pendingHide = !1, this.$_scheduleHide(e, t), this.$emit(\"hide\"), this.$emit(\"update:shown\", !1);\n }\n },\n init() {\n var e;\n this.$_isDisposed && (this.$_isDisposed = !1, this.isMounted = !1, this.$_events = [], this.$_preventShow = !1, this.$_referenceNode = ((e = this.referenceNode) == null ? void 0 : e.call(this)) ?? this.$el, this.$_targetNodes = this.targetNodes().filter((t) => t.nodeType === t.ELEMENT_NODE), this.$_popperNode = this.popperNode(), this.$_innerNode = this.$_popperNode.querySelector(\".v-popper__inner\"), this.$_arrowNode = this.$_popperNode.querySelector(\".v-popper__arrow-container\"), this.$_swapTargetAttrs(\"title\", \"data-original-title\"), this.$_detachPopperNode(), this.triggers.length && this.$_addEventListeners(), this.shown && this.show());\n },\n dispose() {\n this.$_isDisposed || (this.$_isDisposed = !0, this.$_removeEventListeners(), this.hide({ skipDelay: !0 }), this.$_detachPopperNode(), this.isMounted = !1, this.isShown = !1, this.$_updateParentShownChildren(!1), this.$_swapTargetAttrs(\"data-original-title\", \"title\"), this.$emit(\"dispose\"));\n },\n async onResize() {\n this.isShown && (await this.$_computePosition(), this.$emit(\"resize\"));\n },\n async $_computePosition() {\n if (this.$_isDisposed || this.positioningDisabled)\n return;\n const e = {\n strategy: this.strategy,\n middleware: []\n };\n (this.distance || this.skidding) && e.middleware.push(We({\n mainAxis: this.distance,\n crossAxis: this.skidding\n }));\n const t = this.placement.startsWith(\"auto\");\n if (t ? e.middleware.push(Ge({\n alignment: this.placement.split(\"-\")[1] ?? \"\"\n })) : e.placement = this.placement, this.preventOverflow && (this.shift && e.middleware.push(qe({\n padding: this.overflowPadding,\n boundary: this.boundary,\n crossAxis: this.shiftCrossAxis\n })), !t && this.flip && e.middleware.push(Ye({\n padding: this.overflowPadding,\n boundary: this.boundary\n }))), e.middleware.push(Xe({\n element: this.$_arrowNode,\n padding: this.arrowPadding\n })), this.arrowOverflow && e.middleware.push({\n name: \"arrowOverflow\",\n fn: ({ placement: i, rects: s, middlewareData: r }) => {\n let p;\n const { centerOffset: a } = r.arrow;\n return i.startsWith(\"top\") || i.startsWith(\"bottom\") ? p = Math.abs(a) > s.reference.width / 2 : p = Math.abs(a) > s.reference.height / 2, {\n data: {\n overflow: p\n }\n };\n }\n }), this.autoMinSize || this.autoSize) {\n const i = this.autoSize ? this.autoSize : this.autoMinSize ? \"min\" : null;\n e.middleware.push({\n name: \"autoSize\",\n fn: ({ rects: s, placement: r, middlewareData: p }) => {\n var h;\n if ((h = p.autoSize) != null && h.skip)\n return {};\n let a, l;\n return r.startsWith(\"top\") || r.startsWith(\"bottom\") ? a = s.reference.width : l = s.reference.height, this.$_innerNode.style[i === \"min\" ? \"minWidth\" : i === \"max\" ? \"maxWidth\" : \"width\"] = a != null ? `${a}px` : null, this.$_innerNode.style[i === \"min\" ? \"minHeight\" : i === \"max\" ? \"maxHeight\" : \"height\"] = l != null ? `${l}px` : null, {\n data: {\n skip: !0\n },\n reset: {\n rects: !0\n }\n };\n }\n });\n }\n (this.autoMaxSize || this.autoBoundaryMaxSize) && (this.$_innerNode.style.maxWidth = null, this.$_innerNode.style.maxHeight = null, e.middleware.push(Ue({\n boundary: this.boundary,\n padding: this.overflowPadding,\n apply: ({ availableWidth: i, availableHeight: s }) => {\n this.$_innerNode.style.maxWidth = i != null ? `${i}px` : null, this.$_innerNode.style.maxHeight = s != null ? `${s}px` : null;\n }\n })));\n const o = await Ke(this.$_referenceNode, this.$_popperNode, e);\n Object.assign(this.result, {\n x: o.x,\n y: o.y,\n placement: o.placement,\n strategy: o.strategy,\n arrow: {\n ...o.middlewareData.arrow,\n ...o.middlewareData.arrowOverflow\n }\n });\n },\n $_scheduleShow(e = null, t = !1) {\n if (this.$_updateParentShownChildren(!0), this.$_hideInProgress = !1, clearTimeout(this.$_scheduleTimer), g && this.instantMove && g.instantMove && g !== this.parentPopper) {\n g.$_applyHide(!0), this.$_applyShow(!0);\n return;\n }\n t ? this.$_applyShow() : this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay(\"show\"));\n },\n $_scheduleHide(e = null, t = !1) {\n if (this.shownChildren.size > 0) {\n this.$_pendingHide = !0;\n return;\n }\n this.$_updateParentShownChildren(!1), this.$_hideInProgress = !0, clearTimeout(this.$_scheduleTimer), this.isShown && (g = this), t ? this.$_applyHide() : this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay(\"hide\"));\n },\n $_computeDelay(e) {\n const t = this.delay;\n return parseInt(t && t[e] || t || 0);\n },\n async $_applyShow(e = !1) {\n clearTimeout(this.$_disposeTimer), clearTimeout(this.$_scheduleTimer), this.skipTransition = e, !this.isShown && (this.$_ensureTeleport(), await W(), await this.$_computePosition(), await this.$_applyShowEffect(), this.positioningDisabled || this.$_registerEventListeners([\n ...te(this.$_referenceNode),\n ...te(this.$_popperNode)\n ], \"scroll\", () => {\n this.$_computePosition();\n }));\n },\n async $_applyShowEffect() {\n if (this.$_hideInProgress)\n return;\n if (this.computeTransformOrigin) {\n const t = this.$_referenceNode.getBoundingClientRect(), o = this.$_popperNode.querySelector(\".v-popper__wrapper\"), i = o.parentNode.getBoundingClientRect(), s = t.x + t.width / 2 - (i.left + o.offsetLeft), r = t.y + t.height / 2 - (i.top + o.offsetTop);\n this.result.transformOrigin = `${s}px ${r}px`;\n }\n this.isShown = !0, this.$_applyAttrsToTarget({\n \"aria-describedby\": this.popperId,\n \"data-popper-shown\": \"\"\n });\n const e = this.showGroup;\n if (e) {\n let t;\n for (let o = 0; o < d.length; o++)\n t = d[o], t.showGroup !== e && (t.hide(), t.$emit(\"close-group\"));\n }\n d.push(this), document.body.classList.add(\"v-popper--some-open\");\n for (const t of oe(this.theme))\n pe(t).push(this), document.body.classList.add(`v-popper--some-open--${t}`);\n this.$emit(\"apply-show\"), this.classes.showFrom = !0, this.classes.showTo = !1, this.classes.hideFrom = !1, this.classes.hideTo = !1, await W(), this.classes.showFrom = !1, this.classes.showTo = !0, this.noAutoFocus || this.$_popperNode.focus();\n },\n async $_applyHide(e = !1) {\n if (this.shownChildren.size > 0) {\n this.$_pendingHide = !0, this.$_hideInProgress = !1;\n return;\n }\n if (clearTimeout(this.$_scheduleTimer), !this.isShown)\n return;\n this.skipTransition = e, ne(d, this), d.length === 0 && document.body.classList.remove(\"v-popper--some-open\");\n for (const o of oe(this.theme)) {\n const i = pe(o);\n ne(i, this), i.length === 0 && document.body.classList.remove(`v-popper--some-open--${o}`);\n }\n g === this && (g = null), this.isShown = !1, this.$_applyAttrsToTarget({\n \"aria-describedby\": void 0,\n \"data-popper-shown\": void 0\n }), clearTimeout(this.$_disposeTimer);\n const t = this.disposeTimeout;\n t !== null && (this.$_disposeTimer = setTimeout(() => {\n this.$_popperNode && (this.$_detachPopperNode(), this.isMounted = !1);\n }, t)), this.$_removeEventListeners(\"scroll\"), this.$emit(\"apply-hide\"), this.classes.showFrom = !1, this.classes.showTo = !1, this.classes.hideFrom = !0, this.classes.hideTo = !1, await W(), this.classes.hideFrom = !1, this.classes.hideTo = !0;\n },\n $_autoShowHide() {\n this.shown ? this.show() : this.hide();\n },\n $_ensureTeleport() {\n if (this.$_isDisposed)\n return;\n let e = this.container;\n if (typeof e == \"string\" ? e = window.document.querySelector(e) : e === !1 && (e = this.$_targetNodes[0].parentNode), !e)\n throw new Error(\"No container for popover: \" + this.container);\n e.appendChild(this.$_popperNode), this.isMounted = !0;\n },\n $_addEventListeners() {\n const e = (o) => {\n this.isShown && !this.$_hideInProgress || (o.usedByTooltip = !0, !this.$_preventShow && this.show({ event: o }));\n };\n this.$_registerTriggerListeners(this.$_targetNodes, ie, this.triggers, this.showTriggers, e), this.$_registerTriggerListeners([this.$_popperNode], ie, this.popperTriggers, this.popperShowTriggers, e);\n const t = (o) => {\n o.usedByTooltip || this.hide({ event: o });\n };\n this.$_registerTriggerListeners(this.$_targetNodes, se, this.triggers, this.hideTriggers, t), this.$_registerTriggerListeners([this.$_popperNode], se, this.popperTriggers, this.popperHideTriggers, t);\n },\n $_registerEventListeners(e, t, o) {\n this.$_events.push({ targetNodes: e, eventType: t, handler: o }), e.forEach((i) => i.addEventListener(t, o, _ ? {\n passive: !0\n } : void 0));\n },\n $_registerTriggerListeners(e, t, o, i, s) {\n let r = o;\n i != null && (r = typeof i == \"function\" ? i(r) : i), r.forEach((p) => {\n const a = t[p];\n a && this.$_registerEventListeners(e, a, s);\n });\n },\n $_removeEventListeners(e) {\n const t = [];\n this.$_events.forEach((o) => {\n const { targetNodes: i, eventType: s, handler: r } = o;\n !e || e === s ? i.forEach((p) => p.removeEventListener(s, r)) : t.push(o);\n }), this.$_events = t;\n },\n $_refreshListeners() {\n this.$_isDisposed || (this.$_removeEventListeners(), this.$_addEventListeners());\n },\n $_handleGlobalClose(e, t = !1) {\n this.$_showFrameLocked || (this.hide({ event: e }), e.closePopover ? this.$emit(\"close-directive\") : this.$emit(\"auto-hide\"), t && (this.$_preventShow = !0, setTimeout(() => {\n this.$_preventShow = !1;\n }, 300)));\n },\n $_detachPopperNode() {\n this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode);\n },\n $_swapTargetAttrs(e, t) {\n for (const o of this.$_targetNodes) {\n const i = o.getAttribute(e);\n i && (o.removeAttribute(e), o.setAttribute(t, i));\n }\n },\n $_applyAttrsToTarget(e) {\n for (const t of this.$_targetNodes)\n for (const o in e) {\n const i = e[o];\n i == null ? t.removeAttribute(o) : t.setAttribute(o, i);\n }\n },\n $_updateParentShownChildren(e) {\n let t = this.parentPopper;\n for (; t; )\n e ? t.shownChildren.add(this.randomId) : (t.shownChildren.delete(this.randomId), t.$_pendingHide && t.hide()), t = t.parentPopper;\n },\n $_isAimingPopper() {\n const e = this.$_referenceNode.getBoundingClientRect();\n if (v >= e.left && v <= e.right && y >= e.top && y <= e.bottom) {\n const t = this.$_popperNode.getBoundingClientRect(), o = v - f, i = y - m, r = t.left + t.width / 2 - f + (t.top + t.height / 2) - m + t.width + t.height, p = f + o * r, a = m + i * r;\n return S(f, m, p, a, t.left, t.top, t.left, t.bottom) || // Left edge\n S(f, m, p, a, t.left, t.top, t.right, t.top) || // Top edge\n S(f, m, p, a, t.right, t.top, t.right, t.bottom) || // Right edge\n S(f, m, p, a, t.left, t.bottom, t.right, t.bottom);\n }\n return !1;\n }\n },\n render() {\n return this.$slots.default(this.slotData);\n }\n});\ntypeof document < \"u\" && typeof window < \"u\" && (me ? (document.addEventListener(\"touchstart\", ae, _ ? {\n passive: !0,\n capture: !0\n} : !0), document.addEventListener(\"touchend\", Ze, _ ? {\n passive: !0,\n capture: !0\n} : !0)) : (window.addEventListener(\"mousedown\", ae, !0), window.addEventListener(\"click\", Qe, !0)), window.addEventListener(\"resize\", ot));\nfunction ae(e) {\n for (let t = 0; t < d.length; t++) {\n const o = d[t];\n try {\n const i = o.popperNode();\n o.$_mouseDownContains = i.contains(e.target);\n } catch {\n }\n }\n}\nfunction Qe(e) {\n $e(e);\n}\nfunction Ze(e) {\n $e(e, !0);\n}\nfunction $e(e, t = !1) {\n const o = {};\n for (let i = d.length - 1; i >= 0; i--) {\n const s = d[i];\n try {\n const r = s.$_containsGlobalTarget = et(s, e);\n s.$_pendingHide = !1, requestAnimationFrame(() => {\n if (s.$_pendingHide = !1, !o[s.randomId] && de(s, r, e)) {\n if (s.$_handleGlobalClose(e, t), !e.closeAllPopover && e.closePopover && r) {\n let a = s.parentPopper;\n for (; a; )\n o[a.randomId] = !0, a = a.parentPopper;\n return;\n }\n let p = s.parentPopper;\n for (; p && de(p, p.$_containsGlobalTarget, e); ) {\n p.$_handleGlobalClose(e, t);\n p = p.parentPopper;\n }\n }\n });\n } catch {\n }\n }\n}\nfunction et(e, t) {\n const o = e.popperNode();\n return e.$_mouseDownContains || o.contains(t.target);\n}\nfunction de(e, t, o) {\n return o.closeAllPopover || o.closePopover && t || tt(e, o) && !t;\n}\nfunction tt(e, t) {\n if (typeof e.autoHide == \"function\") {\n const o = e.autoHide(t);\n return e.lastAutoHide = o, o;\n }\n return e.autoHide;\n}\nfunction ot(e) {\n for (let t = 0; t < d.length; t++)\n d[t].$_computePosition(e);\n}\nfunction Ht() {\n for (let e = 0; e < d.length; e++)\n d[e].hide();\n}\nlet f = 0, m = 0, v = 0, y = 0;\ntypeof window < \"u\" && window.addEventListener(\"mousemove\", (e) => {\n f = v, m = y, v = e.clientX, y = e.clientY;\n}, _ ? {\n passive: !0\n} : void 0);\nfunction S(e, t, o, i, s, r, p, a) {\n const l = ((p - s) * (t - r) - (a - r) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t)), h = ((o - e) * (t - r) - (i - t) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t));\n return l >= 0 && l <= 1 && h >= 0 && h <= 1;\n}\nconst it = {\n extends: K()\n}, k = (e, t) => {\n const o = e.__vccOpts || e;\n for (const [i, s] of t)\n o[i] = s;\n return o;\n};\nfunction st(e, t, o, i, s, r) {\n return c(), P(\"div\", {\n ref: \"reference\",\n class: O([\"v-popper\", {\n \"v-popper--shown\": e.slotData.isShown\n }])\n }, [\n N(e.$slots, \"default\", Me(ke(e.slotData)))\n ], 2);\n}\nconst nt = /* @__PURE__ */ k(it, [[\"render\", st]]);\nfunction rt() {\n var e = window.navigator.userAgent, t = e.indexOf(\"MSIE \");\n if (t > 0)\n return parseInt(e.substring(t + 5, e.indexOf(\".\", t)), 10);\n var o = e.indexOf(\"Trident/\");\n if (o > 0) {\n var i = e.indexOf(\"rv:\");\n return parseInt(e.substring(i + 3, e.indexOf(\".\", i)), 10);\n }\n var s = e.indexOf(\"Edge/\");\n return s > 0 ? parseInt(e.substring(s + 5, e.indexOf(\".\", s)), 10) : -1;\n}\nlet z;\nfunction U() {\n U.init || (U.init = !0, z = rt() !== -1);\n}\nvar E = {\n name: \"ResizeObserver\",\n props: {\n emitOnMount: {\n type: Boolean,\n default: !1\n },\n ignoreWidth: {\n type: Boolean,\n default: !1\n },\n ignoreHeight: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\n \"notify\"\n ],\n mounted() {\n U(), Be(() => {\n this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitOnMount && this.emitSize();\n });\n const e = document.createElement(\"object\");\n this._resizeObject = e, e.setAttribute(\"aria-hidden\", \"true\"), e.setAttribute(\"tabindex\", -1), e.onload = this.addResizeHandlers, e.type = \"text/html\", z && this.$el.appendChild(e), e.data = \"about:blank\", z || this.$el.appendChild(e);\n },\n beforeUnmount() {\n this.removeResizeHandlers();\n },\n methods: {\n compareAndNotify() {\n (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) && (this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitSize());\n },\n emitSize() {\n this.$emit(\"notify\", {\n width: this._w,\n height: this._h\n });\n },\n addResizeHandlers() {\n this._resizeObject.contentDocument.defaultView.addEventListener(\"resize\", this.compareAndNotify), this.compareAndNotify();\n },\n removeResizeHandlers() {\n this._resizeObject && this._resizeObject.onload && (!z && this._resizeObject.contentDocument && this._resizeObject.contentDocument.defaultView.removeEventListener(\"resize\", this.compareAndNotify), this.$el.removeChild(this._resizeObject), this._resizeObject.onload = null, this._resizeObject = null);\n }\n }\n};\nconst pt = /* @__PURE__ */ De(\"data-v-b329ee4c\");\nEe(\"data-v-b329ee4c\");\nconst at = {\n class: \"resize-observer\",\n tabindex: \"-1\"\n};\nLe();\nconst dt = /* @__PURE__ */ pt((e, t, o, i, s, r) => (c(), M(\"div\", at)));\nE.render = dt;\nE.__scopeId = \"data-v-b329ee4c\";\nE.__file = \"src/components/ResizeObserver.vue\";\nconst J = (e = \"theme\") => ({\n computed: {\n themeClass() {\n return Je(this[e]);\n }\n }\n}), ht = H({\n name: \"VPopperContent\",\n components: {\n ResizeObserver: E\n },\n mixins: [\n J()\n ],\n props: {\n popperId: String,\n theme: String,\n shown: Boolean,\n mounted: Boolean,\n skipTransition: Boolean,\n autoHide: Boolean,\n handleResize: Boolean,\n classes: Object,\n result: Object\n },\n emits: [\n \"hide\",\n \"resize\"\n ],\n methods: {\n toPx(e) {\n return e != null && !isNaN(e) ? `${e}px` : null;\n }\n }\n});\nconst lt = [\"id\", \"aria-hidden\", \"tabindex\", \"data-popper-placement\"], ut = {\n ref: \"inner\",\n class: \"v-popper__inner\"\n}, ct = /* @__PURE__ */ $(\"div\", { class: \"v-popper__arrow-outer\" }, null, -1), ft = /* @__PURE__ */ $(\"div\", { class: \"v-popper__arrow-inner\" }, null, -1), mt = [\n ct,\n ft\n];\nfunction gt(e, t, o, i, s, r) {\n const p = T(\"ResizeObserver\");\n return c(), P(\"div\", {\n id: e.popperId,\n ref: \"popover\",\n class: O([\"v-popper__popper\", [\n e.themeClass,\n e.classes.popperClass,\n {\n \"v-popper__popper--shown\": e.shown,\n \"v-popper__popper--hidden\": !e.shown,\n \"v-popper__popper--show-from\": e.classes.showFrom,\n \"v-popper__popper--show-to\": e.classes.showTo,\n \"v-popper__popper--hide-from\": e.classes.hideFrom,\n \"v-popper__popper--hide-to\": e.classes.hideTo,\n \"v-popper__popper--skip-transition\": e.skipTransition,\n \"v-popper__popper--arrow-overflow\": e.result && e.result.arrow.overflow,\n \"v-popper__popper--no-positioning\": !e.result\n }\n ]]),\n style: x(e.result ? {\n position: e.result.strategy,\n transform: `translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`\n } : void 0),\n \"aria-hidden\": e.shown ? \"false\" : \"true\",\n tabindex: e.autoHide ? 0 : void 0,\n \"data-popper-placement\": e.result ? e.result.placement : void 0,\n onKeyup: t[2] || (t[2] = Ie((a) => e.autoHide && e.$emit(\"hide\"), [\"esc\"]))\n }, [\n $(\"div\", {\n class: \"v-popper__backdrop\",\n onClick: t[0] || (t[0] = (a) => e.autoHide && e.$emit(\"hide\"))\n }),\n $(\"div\", {\n class: \"v-popper__wrapper\",\n style: x(e.result ? {\n transformOrigin: e.result.transformOrigin\n } : void 0)\n }, [\n $(\"div\", ut, [\n e.mounted ? (c(), P(Re, { key: 0 }, [\n $(\"div\", null, [\n N(e.$slots, \"default\")\n ]),\n e.handleResize ? (c(), M(p, {\n key: 0,\n onNotify: t[1] || (t[1] = (a) => e.$emit(\"resize\", a))\n })) : ee(\"\", !0)\n ], 64)) : ee(\"\", !0)\n ], 512),\n $(\"div\", {\n ref: \"arrow\",\n class: \"v-popper__arrow-container\",\n style: x(e.result ? {\n left: e.toPx(e.result.arrow.x),\n top: e.toPx(e.result.arrow.y)\n } : void 0)\n }, mt, 4)\n ], 4)\n ], 46, lt);\n}\nconst Q = /* @__PURE__ */ k(ht, [[\"render\", gt]]), Z = {\n methods: {\n show(...e) {\n return this.$refs.popper.show(...e);\n },\n hide(...e) {\n return this.$refs.popper.hide(...e);\n },\n dispose(...e) {\n return this.$refs.popper.dispose(...e);\n },\n onResize(...e) {\n return this.$refs.popper.onResize(...e);\n }\n }\n}, $t = H({\n name: \"VPopperWrapper\",\n components: {\n Popper: nt,\n PopperContent: Q\n },\n mixins: [\n Z,\n J(\"finalTheme\")\n ],\n props: {\n theme: {\n type: String,\n default: null\n }\n },\n computed: {\n finalTheme() {\n return this.theme ?? this.$options.vPopperTheme;\n }\n },\n methods: {\n getTargetNodes() {\n return Array.from(this.$el.children).filter((e) => e !== this.$refs.popperContent.$el);\n }\n }\n});\nfunction _t(e, t, o, i, s, r) {\n const p = T(\"PopperContent\"), a = T(\"Popper\");\n return c(), M(a, {\n ref: \"popper\",\n theme: e.finalTheme,\n \"target-nodes\": e.getTargetNodes,\n \"popper-node\": () => e.$refs.popperContent.$el,\n class: O([\n e.themeClass\n ])\n }, {\n default: A(({\n popperId: l,\n isShown: h,\n shouldMountContent: B,\n skipTransition: D,\n autoHide: I,\n show: R,\n hide: w,\n handleResize: F,\n onResize: V,\n classes: j,\n result: Oe\n }) => [\n N(e.$slots, \"default\", {\n shown: h,\n show: R,\n hide: w\n }),\n ce(p, {\n ref: \"popperContent\",\n \"popper-id\": l,\n theme: e.finalTheme,\n shown: h,\n mounted: B,\n \"skip-transition\": D,\n \"auto-hide\": I,\n \"handle-resize\": F,\n classes: j,\n result: Oe,\n onHide: w,\n onResize: V\n }, {\n default: A(() => [\n N(e.$slots, \"popper\", {\n shown: h,\n hide: w\n })\n ]),\n _: 2\n }, 1032, [\"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n ]),\n _: 3\n }, 8, [\"theme\", \"target-nodes\", \"popper-node\", \"class\"]);\n}\nconst L = /* @__PURE__ */ k($t, [[\"render\", _t]]), _e = {\n ...L,\n name: \"VDropdown\",\n vPopperTheme: \"dropdown\"\n};\nconst we = {\n ...L,\n name: \"VMenu\",\n vPopperTheme: \"menu\"\n}, ve = {\n ...L,\n name: \"VTooltip\",\n vPopperTheme: \"tooltip\"\n};\nconst wt = H({\n name: \"VTooltipDirective\",\n components: {\n Popper: K(),\n PopperContent: Q\n },\n mixins: [\n Z\n ],\n inheritAttrs: !1,\n props: {\n theme: {\n type: String,\n default: \"tooltip\"\n },\n html: {\n type: Boolean,\n default: (e) => b(e.theme, \"html\")\n },\n content: {\n type: [String, Number, Function],\n default: null\n },\n loadingContent: {\n type: String,\n default: (e) => b(e.theme, \"loadingContent\")\n },\n targetNodes: {\n type: Function,\n required: !0\n }\n },\n data() {\n return {\n asyncContent: null\n };\n },\n computed: {\n isContentAsync() {\n return typeof this.content == \"function\";\n },\n loading() {\n return this.isContentAsync && this.asyncContent == null;\n },\n finalContent() {\n return this.isContentAsync ? this.loading ? this.loadingContent : this.asyncContent : this.content;\n }\n },\n watch: {\n content: {\n handler() {\n this.fetchContent(!0);\n },\n immediate: !0\n },\n async finalContent() {\n await this.$nextTick(), this.$refs.popper.onResize();\n }\n },\n created() {\n this.$_fetchId = 0;\n },\n methods: {\n fetchContent(e) {\n if (typeof this.content == \"function\" && this.$_isShown && (e || !this.$_loading && this.asyncContent == null)) {\n this.asyncContent = null, this.$_loading = !0;\n const t = ++this.$_fetchId, o = this.content(this);\n o.then ? o.then((i) => this.onResult(t, i)) : this.onResult(t, o);\n }\n },\n onResult(e, t) {\n e === this.$_fetchId && (this.$_loading = !1, this.asyncContent = t);\n },\n onShow() {\n this.$_isShown = !0, this.fetchContent();\n },\n onHide() {\n this.$_isShown = !1;\n }\n }\n}), vt = [\"innerHTML\"], yt = [\"textContent\"];\nfunction Pt(e, t, o, i, s, r) {\n const p = T(\"PopperContent\"), a = T(\"Popper\");\n return c(), M(a, Fe({ ref: \"popper\" }, e.$attrs, {\n theme: e.theme,\n \"target-nodes\": e.targetNodes,\n \"popper-node\": () => e.$refs.popperContent.$el,\n onApplyShow: e.onShow,\n onApplyHide: e.onHide\n }), {\n default: A(({\n popperId: l,\n isShown: h,\n shouldMountContent: B,\n skipTransition: D,\n autoHide: I,\n hide: R,\n handleResize: w,\n onResize: F,\n classes: V,\n result: j\n }) => [\n ce(p, {\n ref: \"popperContent\",\n class: O({\n \"v-popper--tooltip-loading\": e.loading\n }),\n \"popper-id\": l,\n theme: e.theme,\n shown: h,\n mounted: B,\n \"skip-transition\": D,\n \"auto-hide\": I,\n \"handle-resize\": w,\n classes: V,\n result: j,\n onHide: R,\n onResize: F\n }, {\n default: A(() => [\n e.html ? (c(), P(\"div\", {\n key: 0,\n innerHTML: e.finalContent\n }, null, 8, vt)) : (c(), P(\"div\", {\n key: 1,\n textContent: Ve(e.finalContent)\n }, null, 8, yt))\n ]),\n _: 2\n }, 1032, [\"class\", \"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n ]),\n _: 1\n }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"onApplyShow\", \"onApplyHide\"]);\n}\nconst ye = /* @__PURE__ */ k(wt, [[\"render\", Pt]]), Pe = \"v-popper--has-tooltip\";\nfunction Tt(e, t) {\n let o = e.placement;\n if (!o && t)\n for (const i of ge)\n t[i] && (o = i);\n return o || (o = b(e.theme || \"tooltip\", \"placement\")), o;\n}\nfunction Te(e, t, o) {\n let i;\n const s = typeof t;\n return s === \"string\" ? i = { content: t } : t && s === \"object\" ? i = t : i = { content: !1 }, i.placement = Tt(i, o), i.targetNodes = () => [e], i.referenceNode = () => e, i;\n}\nlet q, C, bt = 0;\nfunction Ct() {\n if (q)\n return;\n C = Y([]), q = je({\n name: \"VTooltipDirectiveApp\",\n setup() {\n return {\n directives: C\n };\n },\n render() {\n return this.directives.map((t) => xe(ye, {\n ...t.options,\n shown: t.shown || t.options.shown,\n key: t.id\n }));\n },\n devtools: {\n hide: !0\n }\n });\n const e = document.createElement(\"div\");\n document.body.appendChild(e), q.mount(e);\n}\nfunction St(e, t, o) {\n Ct();\n const i = Y(Te(e, t, o)), s = Y(!1), r = {\n id: bt++,\n options: i,\n shown: s\n };\n return C.value.push(r), e.classList && e.classList.add(Pe), e.$_popper = {\n options: i,\n item: r,\n show() {\n s.value = !0;\n },\n hide() {\n s.value = !1;\n }\n };\n}\nfunction be(e) {\n if (e.$_popper) {\n const t = C.value.indexOf(e.$_popper.item);\n t !== -1 && C.value.splice(t, 1), delete e.$_popper, delete e.$_popperOldShown, delete e.$_popperMountTarget;\n }\n e.classList && e.classList.remove(Pe);\n}\nfunction he(e, { value: t, modifiers: o }) {\n const i = Te(e, t, o);\n if (!i.content || b(i.theme || \"tooltip\", \"disabled\"))\n be(e);\n else {\n let s;\n e.$_popper ? (s = e.$_popper, s.options.value = i) : s = St(e, t, o), typeof t.shown < \"u\" && t.shown !== e.$_popperOldShown && (e.$_popperOldShown = t.shown, t.shown ? s.show() : s.hide());\n }\n}\nconst Ce = {\n beforeMount: he,\n updated: he,\n beforeUnmount(e) {\n be(e);\n }\n};\nfunction le(e) {\n e.addEventListener(\"click\", Se), e.addEventListener(\"touchstart\", ze, _ ? {\n passive: !0\n } : !1);\n}\nfunction ue(e) {\n e.removeEventListener(\"click\", Se), e.removeEventListener(\"touchstart\", ze), e.removeEventListener(\"touchend\", Ne), e.removeEventListener(\"touchcancel\", Ae);\n}\nfunction Se(e) {\n const t = e.currentTarget;\n e.closePopover = !t.$_vclosepopover_touch, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n}\nfunction ze(e) {\n if (e.changedTouches.length === 1) {\n const t = e.currentTarget;\n t.$_vclosepopover_touch = !0;\n const o = e.changedTouches[0];\n t.$_vclosepopover_touchPoint = o, t.addEventListener(\"touchend\", Ne), t.addEventListener(\"touchcancel\", Ae);\n }\n}\nfunction Ne(e) {\n const t = e.currentTarget;\n if (t.$_vclosepopover_touch = !1, e.changedTouches.length === 1) {\n const o = e.changedTouches[0], i = t.$_vclosepopover_touchPoint;\n e.closePopover = Math.abs(o.screenY - i.screenY) < 20 && Math.abs(o.screenX - i.screenX) < 20, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n }\n}\nfunction Ae(e) {\n const t = e.currentTarget;\n t.$_vclosepopover_touch = !1;\n}\nconst He = {\n beforeMount(e, { value: t, modifiers: o }) {\n e.$_closePopoverModifiers = o, (typeof t > \"u\" || t) && le(e);\n },\n updated(e, { value: t, oldValue: o, modifiers: i }) {\n e.$_closePopoverModifiers = i, t !== o && (typeof t > \"u\" || t ? le(e) : ue(e));\n },\n beforeUnmount(e) {\n ue(e);\n }\n}, Ot = u, Mt = Ce, kt = He, Et = _e, Lt = we, Bt = K, Dt = Q, It = Z, Rt = L, Ft = J, Vt = ve, jt = ye;\nfunction zt(e, t = {}) {\n e.$_vTooltipInstalled || (e.$_vTooltipInstalled = !0, fe(u, t), e.directive(\"tooltip\", Ce), e.directive(\"close-popper\", He), e.component(\"VTooltip\", ve), e.component(\"VDropdown\", _e), e.component(\"VMenu\", we));\n}\nconst xt = {\n // eslint-disable-next-line no-undef\n version: \"2.0.0-beta.24\",\n install: zt,\n options: u\n};\nexport {\n Et as Dropdown,\n se as HIDE_EVENT_MAP,\n Lt as Menu,\n Bt as Popper,\n Dt as PopperContent,\n It as PopperMethods,\n Rt as PopperWrapper,\n ie as SHOW_EVENT_MAP,\n Ft as ThemeClass,\n Vt as Tooltip,\n jt as TooltipDirective,\n kt as VClosePopper,\n Mt as VTooltip,\n St as createTooltip,\n xt as default,\n be as destroyTooltip,\n Ht as hideAllPoppers,\n zt as install,\n Ot as options,\n ge as placements\n};\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","export default {\n // element that was in focus before lock screen placed\n lockFocusElem: null,\n lockFocus: function(e) {\n e.preventDefault();\n },\n show: function(zIndex) {\n zIndex = zIndex ?? 1100;\n this.lockFocusElem = document.activeElement;\n if (!document.getElementById('loading-screen-ui-blocker')) {\n var elem = document.createElement('div');\n elem.id = 'loading-screen-ui-blocker';\n elem.setAttribute('tabindex', '0');\n elem.setAttribute('class', 'lock-focus');\n elem.setAttribute('style', `position: fixed; z-index: ${zIndex}; top: 0px; bottom: 0px; left: 0px; right: 0px; background-color: transparent; cursor: wait;`);\n elem.setAttribute('aria-live', 'polite');\n elem.setAttribute('aria-label', 'Loading');\n document.body.appendChild(elem);\n elem.addEventListener('keydown', this.lockFocus);\n elem.focus();\n }\n },\n hide: function() {\n var elem = document.getElementById('loading-screen-ui-blocker');\n if (elem) {\n if (typeof this.lockFocusElem !== 'undefined' && this.lockFocusElem !== null) this.lockFocusElem.focus();\n elem.removeEventListener('keydown', this.lockFocus);\n document.body.removeChild(elem);\n }\n }\n}","\n\n","export default \"__VITE_PUBLIC_ASSET__29e370bb__\"","import { openBlock as h, createBlock as x, Teleport as w, createVNode as m, Transition as b, withCtx as v, withDirectives as p, createElementVNode as o, normalizeClass as c, normalizeStyle as f, vShow as g, renderSlot as u, toDisplayString as _, createElementBlock as k, withModifiers as I, createCommentVNode as y } from \"vue\";\nconst S = (e, s) => {\n const t = e.__vccOpts || e;\n for (const [n, l] of s)\n t[n] = l;\n return t;\n}, a = {\n type: [String, Object, Array],\n default: \"\"\n}, C = 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\nlet d = 0;\nconst T = {\n name: \"VueModal\",\n props: {\n title: {\n type: String,\n default: \"\"\n },\n baseZindex: {\n type: Number,\n default: 1051\n },\n bgClass: a,\n wrapperClass: a,\n modalClass: a,\n modalStyle: a,\n inClass: Object.assign({}, a, { default: \"vm-fadeIn\" }),\n outClass: Object.assign({}, a, { default: \"vm-fadeOut\" }),\n bgInClass: Object.assign({}, a, { default: \"vm-fadeIn\" }),\n bgOutClass: Object.assign({}, a, { default: \"vm-fadeOut\" }),\n appendTo: {\n type: String,\n default: \"body\"\n },\n live: {\n type: Boolean,\n default: !1\n },\n enableClose: {\n type: Boolean,\n default: !0\n },\n modelValue: {\n type: Boolean,\n default: !1\n },\n closeLabel: {\n type: String,\n default: \"Close\"\n }\n },\n emits: [\"before-open\", \"opening\", \"after-open\", \"before-close\", \"closing\", \"after-close\", \"update:modelValue\"],\n data() {\n return {\n zIndex: 0,\n id: null,\n show: !1,\n mount: !1,\n elToFocus: null\n };\n },\n created() {\n this.live && (this.mount = !0);\n },\n mounted() {\n this.id = \"vm-\" + this.$.uid, this.$watch(\n \"modelValue\",\n function(e) {\n e ? (this.mount = !0, this.$nextTick(() => {\n this.show = !0;\n })) : this.show = !1;\n },\n {\n immediate: !0\n }\n );\n },\n beforeUnmount() {\n this.elToFocus = null;\n },\n methods: {\n close() {\n this.enableClose === !0 && this.$emit(\"update:modelValue\", !1);\n },\n clickOutside(e) {\n e.target === this.$refs[\"vm-wrapper\"] && this.close();\n },\n keydown(e) {\n if ((e.which === 27 || e.keyCode === 27) && this.close(), e.which === 9 || e.keyCode === 9) {\n const s = [].slice.call(this.$refs[\"vm-wrapper\"].querySelectorAll(C)).filter(function(t) {\n return !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length);\n });\n e.shiftKey ? (e.target === s[0] || e.target === this.$refs[\"vm-wrapper\"]) && (e.preventDefault(), s[s.length - 1].focus()) : e.target === s[s.length - 1] && (e.preventDefault(), s[0].focus());\n }\n },\n getAllVisibleWrappers() {\n return [].slice.call(document.querySelectorAll(\"[data-vm-wrapper-id]\")).filter((e) => e.display !== \"none\");\n },\n getTopZindex() {\n return this.getAllVisibleWrappers().reduce((e, s) => parseInt(s.style.zIndex) > e ? parseInt(s.style.zIndex) : e, 0);\n },\n handleFocus(e) {\n const s = e.querySelector(\"[autofocus]\");\n if (s)\n s.focus();\n else {\n const t = e.querySelectorAll(C);\n t.length ? t[0].focus() : e.focus();\n }\n },\n beforeOpen() {\n this.elToFocus = document.activeElement;\n const e = this.getTopZindex();\n d ? this.zIndex = d + 2 : this.zIndex = e === 0 ? this.baseZindex : e + 2, d = this.zIndex, this.$emit(\"before-open\");\n },\n opening() {\n this.$emit(\"opening\");\n },\n afterOpen() {\n this.handleFocus(this.$refs[\"vm-wrapper\"]), this.$emit(\"after-open\");\n },\n beforeClose() {\n this.$emit(\"before-close\");\n },\n closing() {\n this.$emit(\"closing\");\n },\n afterClose() {\n this.zIndex = 0, this.live || (this.mount = !1), this.$nextTick(() => {\n window.requestAnimationFrame(() => {\n const e = this.getTopZindex();\n if (e > 0) {\n const s = this.getAllVisibleWrappers();\n for (let t = 0; t < s.length; t++) {\n const n = s[t];\n if (parseInt(n.style.zIndex) === e) {\n n.contains(this.elToFocus) ? this.elToFocus.focus() : this.handleFocus(n);\n break;\n }\n }\n } else\n document.body.contains(this.elToFocus) && this.elToFocus.focus();\n d = 0, this.$emit(\"after-close\");\n });\n });\n }\n }\n}, O = [\"data-vm-backdrop-id\"], z = [\"data-vm-wrapper-id\", \"aria-label\", \"aria-describedby\", \"aria-labelledby\"], E = [\"data-vm-id\"], A = { class: \"vm-titlebar\" }, F = [\"id\"], B = [\"aria-label\"], V = [\"id\"];\nfunction L(e, s, t, n, l, i) {\n return l.mount ? (h(), x(w, {\n key: 0,\n to: t.appendTo\n }, [\n m(b, {\n name: \"vm-backdrop-transition\",\n \"enter-active-class\": t.bgInClass,\n \"leave-active-class\": t.bgOutClass\n }, {\n default: v(() => [\n p(o(\"div\", {\n \"data-vm-backdrop-id\": l.id,\n class: c([\"vm-backdrop\", t.bgClass]),\n style: f({ \"z-index\": l.zIndex - 1 })\n }, null, 14, O), [\n [g, l.show]\n ])\n ]),\n _: 1\n }, 8, [\"enter-active-class\", \"leave-active-class\"]),\n m(b, {\n name: \"vm-transition\",\n \"enter-active-class\": t.inClass,\n \"leave-active-class\": t.outClass,\n onBeforeEnter: i.beforeOpen,\n onEnter: i.opening,\n onAfterEnter: i.afterOpen,\n onBeforeLeave: i.beforeClose,\n onLeave: i.closing,\n onAfterLeave: i.afterClose\n }, {\n default: v(() => [\n p(o(\"div\", {\n ref: \"vm-wrapper\",\n \"data-vm-wrapper-id\": l.id,\n tabindex: \"-1\",\n class: c([\"vm-wrapper\", t.wrapperClass]),\n style: f({ \"z-index\": l.zIndex, cursor: t.enableClose ? \"pointer\" : \"default\" }),\n role: \"dialog\",\n \"aria-label\": t.title,\n \"aria-modal\": \"true\",\n \"aria-describedby\": `${l.id}-content`,\n \"aria-labelledby\": `${l.id}-title`,\n onClick: s[1] || (s[1] = (r) => i.clickOutside(r)),\n onKeydown: s[2] || (s[2] = (r) => i.keydown(r))\n }, [\n o(\"div\", {\n ref: \"vm\",\n class: c([\"vm\", t.modalClass]),\n \"data-vm-id\": l.id,\n style: f(t.modalStyle)\n }, [\n u(e.$slots, \"titlebar\", {}, () => [\n o(\"div\", A, [\n o(\"h3\", {\n id: `${l.id}-title`,\n class: \"vm-title\"\n }, _(t.title), 9, F),\n t.enableClose ? (h(), k(\"button\", {\n key: 0,\n type: \"button\",\n class: \"vm-btn-close\",\n \"aria-label\": t.closeLabel,\n onClick: s[0] || (s[0] = I((...r) => i.close && i.close(...r), [\"prevent\"]))\n }, null, 8, B)) : y(\"\", !0)\n ])\n ]),\n u(e.$slots, \"content\", {}, () => [\n o(\"div\", {\n id: `${l.id}-content`,\n class: \"vm-content\"\n }, [\n u(e.$slots, \"default\")\n ], 8, V)\n ])\n ], 14, E)\n ], 46, z), [\n [g, l.show]\n ])\n ]),\n _: 3\n }, 8, [\"enter-active-class\", \"leave-active-class\", \"onBeforeEnter\", \"onEnter\", \"onAfterEnter\", \"onBeforeLeave\", \"onLeave\", \"onAfterLeave\"])\n ], 8, [\"to\"])) : y(\"\", !0);\n}\nconst j = /* @__PURE__ */ S(T, [[\"render\", L]]);\nexport {\n j as default\n};\n","\n\n\n\n\n","export default \"__VITE_PUBLIC_ASSET__b103437e__\"","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () → Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", separated = true;\n this.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n text += node.text.slice(Math.max(from, pos) - pos, to - pos);\n separated = !blockSeparator;\n }\n else if (node.isLeaf) {\n if (leafText) {\n text += typeof leafText === \"function\" ? leafText(node) : leafText;\n }\n else if (node.type.spec.leafText) {\n text += node.type.spec.leafText(node);\n }\n separated = !blockSeparator;\n }\n else if (!separated && node.isBlock) {\n text += blockSeparator;\n separated = true;\n }\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. (Not public.)\n */\n findIndex(pos, round = -1) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n return type.create(json.attrs);\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n for (let i = 0; i < resolveCache.length; i++) {\n let cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc)\n return cached;\n }\n let result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result;\n }\n}\nlet resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise error when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++)\n copy = this.marks[i].addToSet(copy);\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks);\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_​th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.groups.indexOf(name) > -1)\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n/**\nConstruct an NFA from an expression as returned by the parser. The\nNFA is represented as an array of states, which are themselves\narrays of edges, which are `{term, to}` objects. The first state is\nthe entry state and the last node is the success state.\n\nNote that unlike typical NFAs, the edge ordering in this one is\nsignificant, in that it is used to contruct filler content when\nnecessary.\n*/\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction initAttrs(attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type with the given attributes.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\n// Attribute descriptors\nclass Attribute {\n constructor(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = OrderedMap.from(spec.nodes),\n instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n Deserialize a node from its JSON representation. This method is\n bound.\n */\n nodeFromJSON(json) {\n return Node.fromJSON(this, json);\n }\n /**\n Deserialize a mark from its JSON representation. This method is\n bound.\n */\n markFromJSON(json) {\n return Mark.fromJSON(this, json);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n rules.forEach(rule => {\n if (rule.tag)\n this.tags.push(rule);\n else if (rule.style)\n this.styles.push(rule);\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, \n // Marks applied to this node itself\n marks, \n // Marks that can't apply here, but will be used in children if possible\n pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.pendingMarks = pendingMarks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n // Nested Marks with same type\n this.stashMarks = [];\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n popFromStashMark(mark) {\n for (let i = this.stashMarks.length - 1; i >= 0; i--)\n if (mark.eq(this.stashMarks[i]))\n return this.stashMarks.splice(i, 1)[0];\n }\n applyPending(nextType) {\n for (let i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n let mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom) {\n if (dom.nodeType == 3)\n this.addTextNode(dom);\n else if (dom.nodeType == 1)\n this.addElement(dom);\n }\n withStyleRules(dom, f) {\n let style = dom.getAttribute(\"style\");\n if (!style)\n return f();\n let marks = this.readStyles(parseStyles(style));\n if (!marks)\n return; // A style with ignore: true\n let [addMarks, removeMarks] = marks, top = this.top;\n for (let i = 0; i < removeMarks.length; i++)\n this.removePendingMark(removeMarks[i], top);\n for (let i = 0; i < addMarks.length; i++)\n this.addPendingMark(addMarks[i]);\n f();\n for (let i = 0; i < addMarks.length; i++)\n this.removePendingMark(addMarks[i], top);\n for (let i = 0; i < removeMarks.length; i++)\n this.addPendingMark(removeMarks[i]);\n }\n addTextNode(dom) {\n let value = dom.nodeValue;\n let top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value)\n this.insertNode(this.parser.schema.text(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, matchAfter) {\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom);\n return;\n }\n if (rule && rule.skip)\n this.addAll(dom);\n else\n this.withStyleRules(dom, () => this.addAll(dom));\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n this.withStyleRules(dom, () => {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : undefined);\n });\n }\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"));\n }\n // Called for ignored nodes\n ignoreFallback(dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"));\n }\n // Run any style parser associated with the node's styles. Either\n // return an array of marks, or null to indicate some of the styles\n // had a rule with `ignore` set.\n readStyles(styles) {\n let add = Mark.none, remove = Mark.none;\n for (let i = 0; i < styles.length; i += 2) {\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark) {\n this.top.pendingMarks.concat(this.top.activeMarks).forEach(m => {\n if (rule.clearMark(m))\n remove = m.addToSet(remove);\n });\n }\n else {\n add = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(add);\n }\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return [add, remove];\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, continueAfter) {\n let sync, nodeType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs || null, rule.preserveWhitespace);\n }\n else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM);\n }\n if (sync && this.sync(startIn))\n this.open--;\n if (mark)\n this.removePendingMark(mark, startIn);\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node) {\n let route, sync;\n for (let depth = this.open; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid)\n break;\n }\n if (!route)\n return false;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n this.enterInner(route[i], null, false);\n return true;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n this.enterInner(block);\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(node.type);\n if (top.match)\n top.match = top.match.matchType(node.type);\n let marks = top.activeMarks;\n for (let i = 0; i < node.marks.length; i++)\n if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n marks = node.marks[i].addToSet(marks);\n top.content.push(node.mark(marks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, preserveWS) {\n let ok = this.findPlace(type.create(attrs));\n if (ok)\n this.enterInner(type, attrs, true, preserveWS);\n return ok;\n }\n // Open a node of the given type\n enterInner(type, attrs = null, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen);\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--)\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n addPendingMark(mark) {\n let found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found)\n this.top.stashMarks.push(found);\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n }\n removePendingMark(mark, upto) {\n for (let depth = this.open; depth >= 0; depth--) {\n let level = this.nodes[depth];\n let found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n }\n else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n let stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n level.activeMarks = stashMark.addToSet(level.activeMarks);\n }\n if (level == upto)\n break;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n let re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style))\n result.push(m[1], m[2].trim());\n return result;\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\nfunction findSameMarkInSet(mark, set) {\n for (let i = 0; i < set.length; i++) {\n if (mark.eq(set[i]))\n return set[i];\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline));\n }\n /**\n Render an [output spec](https://prosemirror.net/docs/ref/#model.DOMOutputSpec) to a DOM node. If\n the spec has a hole (zero) in it, `contentDOM` will point at the\n node with the hole.\n */\n static renderSpec(doc, structure, xmlNS = null) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = DOMSerializer.renderSpec(doc, child, xmlNS);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(\n /**\n The step maps in this mapping.\n */\n maps = [], \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps.length) {\n this.maps = maps;\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this.maps, this.mirror, from, to);\n }\n /**\n @internal\n */\n copy() {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null)\n this.setMirror(this.maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this.maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (child.isText && !parentType.spec.code) {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), type);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false;\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let type = leftNodes[d].type, def = definesContent(type);\n if (def && $from.node(preferredTargetIndex).type != type)\n preferredDepth = d;\n else if (def || !type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split.\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n to = to == null ? from : to;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure—it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @internal\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Start a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","import { TextSelection, NodeSelection, Selection, AllSelection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\")\n return false;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n if (pos)\n return { node: pos.offsetNode, offset: pos.offset };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: range.startOffset };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent)\n break;\n if (parent.nodeType != 1)\n continue;\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n if (atTop || /^(fixed|sticky)$/.test(getComputedStyle(parent).position))\n break;\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange();\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect))\n return { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n }\n return { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true);\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent && !sawBlock || !desc.contentDOM)) {\n let rect = desc.dom.getBoundingClientRect();\n if (desc.node.isBlock && desc.parent && !sawBlock) {\n sawBlock = true;\n if (rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length)\n child = child.children[0];\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, root, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = root.getSelection();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n let after = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline));\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n ({ dom, contentDOM } = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
\n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let sel = view.domSelectionRange();\n let textNode = nearbyTextNode(sel.focusNode, sel.focusOffset);\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.draggable = true;\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.removeAttribute(\"draggable\");\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : super.setSelection(anchor, head, root, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1;\n for (let i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.top.children[this.index] = updated;\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (!wrapper.contentDOM)\n return null;\n wrapper.children = next.children;\n next.children = [];\n next.destroy();\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n if (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let widget = locals[decoIndex++], widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset)\n (widgets || (widgets = [widget])).push(locals[decoIndex++]);\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n return node.childNodes[offset];\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n }\n else {\n return null;\n }\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n let anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n if (anchor < 0)\n return null;\n $anchor = doc.resolve(anchor);\n }\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection(), range = document.createRange();\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n range.setEnd(node.parentNode, domIndex(node) + 1);\n else\n range.setEnd(node, 0);\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (!sel.empty || mods.indexOf(\"s\") > -1) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom) {\n if (dom.contentEditable == \"false\")\n return true;\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset]))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n if (node.nodeType == 3)\n return node;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n node = node.childNodes[offset - 1];\n if (node.nodeType == 3)\n return node;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodesAfter(view);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode)\n return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty;\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"..\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nfunction readHTML(html) {\n let metas = /^(\\s*]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let elt = detachedDoc().createElement(\"div\");\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"\").reverse().join(\"\");\n elt.innerHTML = html;\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\" };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastAndroidDelete = 0;\n this.composing = false;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text)))\n view.dispatch(view.state.tr.insertText(text).scrollIntoView());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true;\n }\n return false;\n }\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\");\n else if (NodeSelection.isSelectable(node))\n updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\");\n else\n continue;\n return true;\n }\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier]) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n view.domSelection().collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, forceUpdate = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection))\n view.dispatch(view.state.tr.setSelection(sel));\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, data.getData(\"text/plain\"), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move) {\n this.slice = slice;\n this.move = move;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos)));\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, desc.posBefore)));\n }\n let slice = view.state.selection.content(), { dom, text } = serializeForClipboard(view, slice);\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, !event[dragCopyModifier]);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, _event) => {\n let event = _event;\n let dragging = view.dragging;\n view.dragging = null;\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n }\n else {\n slice = parseFromClipboard(view, event.dataTransfer.getData(brokenClipboardAPI ? \"Text\" : \"text/plain\"), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && !event[dragCopyModifier]);\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move)\n tr.deleteSelection();\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants—see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure—it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Needs access to the current document to\n create the appropriate tree structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n /**\n @internal\n */\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (newStart >= offset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n this.flushSoon();\n else\n this.flush();\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (gecko && added.length > 1) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let a = brs[0], b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++)\n added.push(mut.addedNodes[i]);\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view) {\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n let anchorNode = found.startContainer, anchorOffset = found.startOffset;\n let focusNode = found.endContainer, focusOffset = found.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n // Chrome sometimes leaves the cursor before the inserted text when\n // composing after a cursor wrapper. This moves it forward.\n if (chrome && view.cursorWrapper && parse.sel && parse.sel.anchor == view.cursorWrapper.deco.from &&\n parse.sel.head == parse.sel.anchor) {\n let size = change.endB - change.start;\n parse.sel = { anchor: parse.sel.anchor + size, head: parse.sel.anchor + size };\n }\n view.input.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n let nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size && !$from.sameParent($to) &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && android && change.endB == change.start)\n view.input.lastAndroidDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let tr, storedMarks, markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n tr = view.state.tr;\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text)))\n return;\n tr = view.state.tr.insertText(text, chFrom, chTo);\n }\n }\n if (!tr)\n tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && android && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastAndroidDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (storedMarks)\n tr.ensureMarks(storedMarks);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr.scrollIntoView());\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, pos + a.size, pos + b.size);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\n\n/**\n@internal\n*/\nconst __serializeForClipboard = serializeForClipboard;\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://github.com/ProseMirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([]);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites)\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes—for example when interpreting an event\n target—you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n Dispatch a transaction. Will call\n [`dispatchTransaction`](https://prosemirror.net/docs/ref/#view.DirectEditorProps.dispatchTransaction)\n when given, and otherwise defaults to applying the transaction to\n the current state and calling\n [`updateState`](https://prosemirror.net/docs/ref/#view.EditorView.updateState) with the result.\n This method is bound to the view instance, so that it can be\n easily passed around.\n */\n dispatch(tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n }\n /**\n @internal\n */\n domSelectionRange() {\n return safari && this.root.nodeType === 11 && deepActiveElement(this.dom.ownerDocument) == this.dom\n ? safariShadowSelectionRange(this) : this.domSelection();\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.head, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard, __serializeForClipboard };\n","export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n","import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform) : false;\nfunction normalizeKeyName(name) {\n let parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; i++) {\n let mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (mac)\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction normalize(map) {\n let copy = Object.create(null);\n for (let prop in map)\n copy[normalizeKeyName(prop)] = map[prop];\n return copy;\n}\nfunction modifiers(name, event, shift = true) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\n/**\nCreate a keymap plugin for the given set of bindings.\n\nBindings should map key names to [command](https://prosemirror.net/docs/ref/#commands)-style\nfunctions, which will be called with `(EditorState, dispatch,\nEditorView)` arguments, and should return true when they've handled\nthe key. Note that the view argument isn't part of the command\nprotocol, but can be used as an escape hatch if a binding needs to\ndirectly interact with the UI.\n\nKey names may be strings like `\"Shift-Ctrl-Enter\"`—a key\nidentifier prefixed with zero or more modifiers. Key identifiers\nare based on the strings that can appear in\n[`KeyEvent.key`](https:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\nUse lowercase letters to refer to letter keys (or uppercase letters\nif you want shift to be held). You may use `\"Space\"` as an alias\nfor the `\" \"` name.\n\nModifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n`a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n`Meta-`) are recognized. For characters that are created by holding\nshift, the `Shift-` prefix is implied, and should not be added\nexplicitly.\n\nYou can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\nother platforms.\n\nYou can add multiple keymap plugins to an editor. The order in\nwhich they appear determines their precedence (the ones early in\nthe array get to dispatch first).\n*/\nfunction keymap(bindings) {\n return new Plugin({ props: { handleKeyDown: keydownHandler(bindings) } });\n}\n/**\nGiven a set of bindings (using the same format as\n[`keymap`](https://prosemirror.net/docs/ref/#keymap.keymap)), return a [keydown\nhandler](https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown) that handles them.\n*/\nfunction keydownHandler(bindings) {\n let map = normalize(bindings);\n return function (view, event) {\n let name = keyName(event), baseName, direct = map[modifiers(name, event)];\n if (direct && direct(view.state, view.dispatch, view))\n return true;\n // A character key\n if (name.length == 1 && name != \" \") {\n if (event.shiftKey) {\n // In case the name was already modified by shift, try looking\n // it up without its shift modifier\n let noShift = map[modifiers(name, event, false)];\n if (noShift && noShift(view.state, view.dispatch, view))\n return true;\n }\n if ((event.shiftKey || event.altKey || event.metaKey || name.charCodeAt(0) > 127) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060\n let fromCode = map[modifiers(baseName, event)];\n if (fromCode && fromCode(view.state, view.dispatch, view))\n return true;\n }\n }\n return false;\n };\n}\n\nexport { keydownHandler, keymap };\n","// src/index.ts\nimport { Plugin as Plugin2 } from \"prosemirror-state\";\n\n// src/cellselection.ts\nimport { Fragment, Slice } from \"prosemirror-model\";\nimport {\n NodeSelection as NodeSelection2,\n Selection,\n SelectionRange,\n TextSelection\n} from \"prosemirror-state\";\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n\n// src/tablemap.ts\nvar readFromCache;\nvar addToCache;\nif (typeof WeakMap != \"undefined\") {\n let cache = /* @__PURE__ */ new WeakMap();\n readFromCache = (key) => cache.get(key);\n addToCache = (key, value) => {\n cache.set(key, value);\n return value;\n };\n} else {\n const cache = [];\n const cacheSize = 10;\n let cachePos = 0;\n readFromCache = (key) => {\n for (let i = 0; i < cache.length; i += 2)\n if (cache[i] == key)\n return cache[i + 1];\n };\n addToCache = (key, value) => {\n if (cachePos == cacheSize)\n cachePos = 0;\n cache[cachePos++] = key;\n return cache[cachePos++] = value;\n };\n}\nvar TableMap = class {\n constructor(width, height, map, problems) {\n this.width = width;\n this.height = height;\n this.map = map;\n this.problems = problems;\n }\n // Find the dimensions of the cell at the given position.\n findCell(pos) {\n for (let i = 0; i < this.map.length; i++) {\n const curPos = this.map[i];\n if (curPos != pos)\n continue;\n const left = i % this.width;\n const top = i / this.width | 0;\n let right = left + 1;\n let bottom = top + 1;\n for (let j = 1; right < this.width && this.map[i + j] == curPos; j++) {\n right++;\n }\n for (let j = 1; bottom < this.height && this.map[i + this.width * j] == curPos; j++) {\n bottom++;\n }\n return { left, top, right, bottom };\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n // Find the left side of the cell at the given position.\n colCount(pos) {\n for (let i = 0; i < this.map.length; i++) {\n if (this.map[i] == pos) {\n return i % this.width;\n }\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n // Find the next cell in the given direction, starting from the cell\n // at `pos`, if any.\n nextCell(pos, axis, dir) {\n const { left, right, top, bottom } = this.findCell(pos);\n if (axis == \"horiz\") {\n if (dir < 0 ? left == 0 : right == this.width)\n return null;\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)];\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height)\n return null;\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)];\n }\n }\n // Get the rectangle spanning the two given cells.\n rectBetween(a, b) {\n const {\n left: leftA,\n right: rightA,\n top: topA,\n bottom: bottomA\n } = this.findCell(a);\n const {\n left: leftB,\n right: rightB,\n top: topB,\n bottom: bottomB\n } = this.findCell(b);\n return {\n left: Math.min(leftA, leftB),\n top: Math.min(topA, topB),\n right: Math.max(rightA, rightB),\n bottom: Math.max(bottomA, bottomB)\n };\n }\n // Return the position of all cells that have the top left corner in\n // the given rectangle.\n cellsInRect(rect) {\n const result = [];\n const seen = {};\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const index = row * this.width + col;\n const pos = this.map[index];\n if (seen[pos])\n continue;\n seen[pos] = true;\n if (col == rect.left && col && this.map[index - 1] == pos || row == rect.top && row && this.map[index - this.width] == pos) {\n continue;\n }\n result.push(pos);\n }\n }\n return result;\n }\n // Return the position at which the cell at the given row and column\n // starts, or would start, if a cell started there.\n positionAt(row, col, table) {\n for (let i = 0, rowStart = 0; ; i++) {\n const rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n let index = col + row * this.width;\n const rowEndIndex = (row + 1) * this.width;\n while (index < rowEndIndex && this.map[index] < rowStart)\n index++;\n return index == rowEndIndex ? rowEnd - 1 : this.map[index];\n }\n rowStart = rowEnd;\n }\n }\n // Find the table map for the given table node.\n static get(table) {\n return readFromCache(table) || addToCache(table, computeMap(table));\n }\n};\nfunction computeMap(table) {\n if (table.type.spec.tableRole != \"table\")\n throw new RangeError(\"Not a table node: \" + table.type.name);\n const width = findWidth(table), height = table.childCount;\n const map = [];\n let mapPos = 0;\n let problems = null;\n const colWidths = [];\n for (let i = 0, e = width * height; i < e; i++)\n map[i] = 0;\n for (let row = 0, pos = 0; row < height; row++) {\n const rowNode = table.child(row);\n pos++;\n for (let i = 0; ; i++) {\n while (mapPos < map.length && map[mapPos] != 0)\n mapPos++;\n if (i == rowNode.childCount)\n break;\n const cellNode = rowNode.child(i);\n const { colspan, rowspan, colwidth } = cellNode.attrs;\n for (let h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({\n type: \"overlong_rowspan\",\n pos,\n n: rowspan - h\n });\n break;\n }\n const start = mapPos + h * width;\n for (let w = 0; w < colspan; w++) {\n if (map[start + w] == 0)\n map[start + w] = pos;\n else\n (problems || (problems = [])).push({\n type: \"collision\",\n row,\n pos,\n n: colspan - w\n });\n const colW = colwidth && colwidth[w];\n if (colW) {\n const widthIndex = (start + w) % width * 2, prev = colWidths[widthIndex];\n if (prev == null || prev != colW && colWidths[widthIndex + 1] == 1) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n const expectedPos = (row + 1) * width;\n let missing = 0;\n while (mapPos < expectedPos)\n if (map[mapPos++] == 0)\n missing++;\n if (missing)\n (problems || (problems = [])).push({ type: \"missing\", row, n: missing });\n pos++;\n }\n const tableMap = new TableMap(width, height, map, problems);\n let badWidths = false;\n for (let i = 0; !badWidths && i < colWidths.length; i += 2)\n if (colWidths[i] != null && colWidths[i + 1] < height)\n badWidths = true;\n if (badWidths)\n findBadColWidths(tableMap, colWidths, table);\n return tableMap;\n}\nfunction findWidth(table) {\n let width = -1;\n let hasRowSpan = false;\n for (let row = 0; row < table.childCount; row++) {\n const rowNode = table.child(row);\n let rowWidth = 0;\n if (hasRowSpan)\n for (let j = 0; j < row; j++) {\n const prevRow = table.child(j);\n for (let i = 0; i < prevRow.childCount; i++) {\n const cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row)\n rowWidth += cell.attrs.colspan;\n }\n }\n for (let i = 0; i < rowNode.childCount; i++) {\n const cell = rowNode.child(i);\n rowWidth += cell.attrs.colspan;\n if (cell.attrs.rowspan > 1)\n hasRowSpan = true;\n }\n if (width == -1)\n width = rowWidth;\n else if (width != rowWidth)\n width = Math.max(width, rowWidth);\n }\n return width;\n}\nfunction findBadColWidths(map, colWidths, table) {\n if (!map.problems)\n map.problems = [];\n const seen = {};\n for (let i = 0; i < map.map.length; i++) {\n const pos = map.map[i];\n if (seen[pos])\n continue;\n seen[pos] = true;\n const node = table.nodeAt(pos);\n if (!node) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n let updated = null;\n const attrs = node.attrs;\n for (let j = 0; j < attrs.colspan; j++) {\n const col = (i + j) % map.width;\n const colWidth = colWidths[col * 2];\n if (colWidth != null && (!attrs.colwidth || attrs.colwidth[j] != colWidth))\n (updated || (updated = freshColWidth(attrs)))[j] = colWidth;\n }\n if (updated)\n map.problems.unshift({\n type: \"colwidth mismatch\",\n pos,\n colwidth: updated\n });\n }\n}\nfunction freshColWidth(attrs) {\n if (attrs.colwidth)\n return attrs.colwidth.slice();\n const result = [];\n for (let i = 0; i < attrs.colspan; i++)\n result.push(0);\n return result;\n}\n\n// src/util.ts\nimport { PluginKey } from \"prosemirror-state\";\n\n// src/schema.ts\nfunction getCellAttrs(dom, extraAttrs) {\n if (typeof dom === \"string\") {\n return {};\n }\n const widthAttr = dom.getAttribute(\"data-colwidth\");\n const widths = widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr) ? widthAttr.split(\",\").map((s) => Number(s)) : null;\n const colspan = Number(dom.getAttribute(\"colspan\") || 1);\n const result = {\n colspan,\n rowspan: Number(dom.getAttribute(\"rowspan\") || 1),\n colwidth: widths && widths.length == colspan ? widths : null\n };\n for (const prop in extraAttrs) {\n const getter = extraAttrs[prop].getFromDOM;\n const value = getter && getter(dom);\n if (value != null) {\n result[prop] = value;\n }\n }\n return result;\n}\nfunction setCellAttrs(node, extraAttrs) {\n const attrs = {};\n if (node.attrs.colspan != 1)\n attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan != 1)\n attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth)\n attrs[\"data-colwidth\"] = node.attrs.colwidth.join(\",\");\n for (const prop in extraAttrs) {\n const setter = extraAttrs[prop].setDOMAttr;\n if (setter)\n setter(node.attrs[prop], attrs);\n }\n return attrs;\n}\nfunction tableNodes(options) {\n const extraAttrs = options.cellAttributes || {};\n const cellAttrs = {\n colspan: { default: 1 },\n rowspan: { default: 1 },\n colwidth: { default: null }\n };\n for (const prop in extraAttrs)\n cellAttrs[prop] = { default: extraAttrs[prop].default };\n return {\n table: {\n content: \"table_row+\",\n tableRole: \"table\",\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{ tag: \"table\" }],\n toDOM() {\n return [\"table\", [\"tbody\", 0]];\n }\n },\n table_row: {\n content: \"(table_cell | table_header)*\",\n tableRole: \"row\",\n parseDOM: [{ tag: \"tr\" }],\n toDOM() {\n return [\"tr\", 0];\n }\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"cell\",\n isolating: true,\n parseDOM: [\n { tag: \"td\", getAttrs: (dom) => getCellAttrs(dom, extraAttrs) }\n ],\n toDOM(node) {\n return [\"td\", setCellAttrs(node, extraAttrs), 0];\n }\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"header_cell\",\n isolating: true,\n parseDOM: [\n { tag: \"th\", getAttrs: (dom) => getCellAttrs(dom, extraAttrs) }\n ],\n toDOM(node) {\n return [\"th\", setCellAttrs(node, extraAttrs), 0];\n }\n }\n };\n}\nfunction tableNodeTypes(schema) {\n let result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (const name in schema.nodes) {\n const type = schema.nodes[name], role = type.spec.tableRole;\n if (role)\n result[role] = type;\n }\n }\n return result;\n}\n\n// src/util.ts\nvar tableEditingKey = new PluginKey(\"selectingCells\");\nfunction cellAround($pos) {\n for (let d = $pos.depth - 1; d > 0; d--)\n if ($pos.node(d).type.spec.tableRole == \"row\")\n return $pos.node(0).resolve($pos.before(d + 1));\n return null;\n}\nfunction cellWrapping($pos) {\n for (let d = $pos.depth; d > 0; d--) {\n const role = $pos.node(d).type.spec.tableRole;\n if (role === \"cell\" || role === \"header_cell\")\n return $pos.node(d);\n }\n return null;\n}\nfunction isInTable(state) {\n const $head = state.selection.$head;\n for (let d = $head.depth; d > 0; d--)\n if ($head.node(d).type.spec.tableRole == \"row\")\n return true;\n return false;\n}\nfunction selectionCell(state) {\n const sel = state.selection;\n if (\"$anchorCell\" in sel && sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos ? sel.$anchorCell : sel.$headCell;\n } else if (\"node\" in sel && sel.node && sel.node.type.spec.tableRole == \"cell\") {\n return sel.$anchor;\n }\n const $cell = cellAround(sel.$head) || cellNear(sel.$head);\n if ($cell) {\n return $cell;\n }\n throw new RangeError(`No cell found around position ${sel.head}`);\n}\nfunction cellNear($pos) {\n for (let after = $pos.nodeAfter, pos = $pos.pos; after; after = after.firstChild, pos++) {\n const role = after.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\")\n return $pos.doc.resolve(pos);\n }\n for (let before = $pos.nodeBefore, pos = $pos.pos; before; before = before.lastChild, pos--) {\n const role = before.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\")\n return $pos.doc.resolve(pos - before.nodeSize);\n }\n}\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole == \"row\" && !!$pos.nodeAfter;\n}\nfunction moveCellForward($pos) {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter.nodeSize);\n}\nfunction inSameTable($cellA, $cellB) {\n return $cellA.depth == $cellB.depth && $cellA.pos >= $cellB.start(-1) && $cellA.pos <= $cellB.end(-1);\n}\nfunction findCell($pos) {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1));\n}\nfunction colCount($pos) {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1));\n}\nfunction nextCell($pos, axis, dir) {\n const table = $pos.node(-1);\n const map = TableMap.get(table);\n const tableStart = $pos.start(-1);\n const moved = map.nextCell($pos.pos - tableStart, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(tableStart + moved);\n}\nfunction removeColSpan(attrs, pos, n = 1) {\n const result = { ...attrs, colspan: attrs.colspan - n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some((w) => w > 0))\n result.colwidth = null;\n }\n return result;\n}\nfunction addColSpan(attrs, pos, n = 1) {\n const result = { ...attrs, colspan: attrs.colspan + n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (let i = 0; i < n; i++)\n result.colwidth.splice(pos, 0, 0);\n }\n return result;\n}\nfunction columnIsHeader(map, table, col) {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let row = 0; row < map.height; row++)\n if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n return false;\n return true;\n}\n\n// src/cellselection.ts\nvar CellSelection = class extends Selection {\n // A table selection is identified by its anchor and head cells. The\n // positions given to this constructor should point _before_ two\n // cells in the same table. They may be the same, to select a single\n // cell.\n constructor($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const rect = map.rectBetween(\n $anchorCell.pos - tableStart,\n $headCell.pos - tableStart\n );\n const doc = $anchorCell.node(0);\n const cells = map.cellsInRect(rect).filter((p) => p != $headCell.pos - tableStart);\n cells.unshift($headCell.pos - tableStart);\n const ranges = cells.map((pos) => {\n const cell = table.nodeAt(pos);\n if (!cell) {\n throw RangeError(`No cell with offset ${pos} found`);\n }\n const from = tableStart + pos + 1;\n return new SelectionRange(\n doc.resolve(from),\n doc.resolve(from + cell.content.size)\n );\n });\n super(ranges[0].$from, ranges[0].$to, ranges);\n this.$anchorCell = $anchorCell;\n this.$headCell = $headCell;\n }\n map(doc, mapping) {\n const $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n const $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (pointsAtCell($anchorCell) && pointsAtCell($headCell) && inSameTable($anchorCell, $headCell)) {\n const tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n return CellSelection.rowSelection($anchorCell, $headCell);\n else if (tableChanged && this.isColSelection())\n return CellSelection.colSelection($anchorCell, $headCell);\n else\n return new CellSelection($anchorCell, $headCell);\n }\n return TextSelection.between($anchorCell, $headCell);\n }\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n content() {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const rect = map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart\n );\n const seen = {};\n const rows = [];\n for (let row = rect.top; row < rect.bottom; row++) {\n const rowContent = [];\n for (let index = row * map.width + rect.left, col = rect.left; col < rect.right; col++, index++) {\n const pos = map.map[index];\n if (seen[pos])\n continue;\n seen[pos] = true;\n const cellRect = map.findCell(pos);\n let cell = table.nodeAt(pos);\n if (!cell) {\n throw RangeError(`No cell with offset ${pos} found`);\n }\n const extraLeft = rect.left - cellRect.left;\n const extraRight = cellRect.right - rect.right;\n if (extraLeft > 0 || extraRight > 0) {\n let attrs = cell.attrs;\n if (extraLeft > 0) {\n attrs = removeColSpan(attrs, 0, extraLeft);\n }\n if (extraRight > 0) {\n attrs = removeColSpan(\n attrs,\n attrs.colspan - extraRight,\n extraRight\n );\n }\n if (cellRect.left < rect.left) {\n cell = cell.type.createAndFill(attrs);\n if (!cell) {\n throw RangeError(\n `Could not create cell with attrs ${JSON.stringify(attrs)}`\n );\n }\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n const attrs = {\n ...cell.attrs,\n rowspan: Math.min(cellRect.bottom, rect.bottom) - Math.max(cellRect.top, rect.top)\n };\n if (cellRect.top < rect.top) {\n cell = cell.type.createAndFill(attrs);\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n rowContent.push(cell);\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n const fragment = this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1);\n }\n replace(tr, content = Slice.empty) {\n const mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replace(\n mapping.map($from.pos),\n mapping.map($to.pos),\n i ? Slice.empty : content\n );\n }\n const sel = Selection.findFrom(\n tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)),\n -1\n );\n if (sel)\n tr.setSelection(sel);\n }\n replaceWith(tr, node) {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n }\n forEachCell(f) {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const cells = map.cellsInRect(\n map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart\n )\n );\n for (let i = 0; i < cells.length; i++) {\n f(table.nodeAt(cells[i]), tableStart + cells[i]);\n }\n }\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n isColSelection() {\n const anchorTop = this.$anchorCell.index(-1);\n const headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0)\n return false;\n const anchorBottom = anchorTop + this.$anchorCell.nodeAfter.attrs.rowspan;\n const headBottom = headTop + this.$headCell.nodeAfter.attrs.rowspan;\n return Math.max(anchorBottom, headBottom) == this.$headCell.node(-1).childCount;\n }\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n static colSelection($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n $anchorCell = doc.resolve(tableStart + map.map[anchorRect.left]);\n if (headRect.bottom < map.height)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (map.height - 1) + headRect.right - 1]\n );\n } else {\n if (headRect.top > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.left]);\n if (anchorRect.bottom < map.height)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (map.height - 1) + anchorRect.right - 1]\n );\n }\n return new CellSelection($anchorCell, $headCell);\n }\n // True if this selection goes all the way from the left to the\n // right of the table.\n isRowSelection() {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const anchorLeft = map.colCount(this.$anchorCell.pos - tableStart);\n const headLeft = map.colCount(this.$headCell.pos - tableStart);\n if (Math.min(anchorLeft, headLeft) > 0)\n return false;\n const anchorRight = anchorLeft + this.$anchorCell.nodeAfter.attrs.colspan;\n const headRight = headLeft + this.$headCell.nodeAfter.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width;\n }\n eq(other) {\n return other instanceof CellSelection && other.$anchorCell.pos == this.$anchorCell.pos && other.$headCell.pos == this.$headCell.pos;\n }\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n static rowSelection($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n $anchorCell = doc.resolve(\n tableStart + map.map[anchorRect.top * map.width]\n );\n if (headRect.right < map.width)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (headRect.top + 1) - 1]\n );\n } else {\n if (headRect.left > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.top * map.width]);\n if (anchorRect.right < map.width)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (anchorRect.top + 1) - 1]\n );\n }\n return new CellSelection($anchorCell, $headCell);\n }\n toJSON() {\n return {\n type: \"cell\",\n anchor: this.$anchorCell.pos,\n head: this.$headCell.pos\n };\n }\n static fromJSON(doc, json) {\n return new CellSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n static create(doc, anchorCell, headCell = anchorCell) {\n return new CellSelection(doc.resolve(anchorCell), doc.resolve(headCell));\n }\n getBookmark() {\n return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos);\n }\n};\nCellSelection.prototype.visible = false;\nSelection.jsonID(\"cell\", CellSelection);\nvar CellBookmark = class {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new CellBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n const $anchorCell = doc.resolve(this.anchor), $headCell = doc.resolve(this.head);\n if ($anchorCell.parent.type.spec.tableRole == \"row\" && $headCell.parent.type.spec.tableRole == \"row\" && $anchorCell.index() < $anchorCell.parent.childCount && $headCell.index() < $headCell.parent.childCount && inSameTable($anchorCell, $headCell))\n return new CellSelection($anchorCell, $headCell);\n else\n return Selection.near($headCell, 1);\n }\n};\nfunction drawCellSelection(state) {\n if (!(state.selection instanceof CellSelection))\n return null;\n const cells = [];\n state.selection.forEachCell((node, pos) => {\n cells.push(\n Decoration.node(pos, pos + node.nodeSize, { class: \"selectedCell\" })\n );\n });\n return DecorationSet.create(state.doc, cells);\n}\nfunction isCellBoundarySelection({ $from, $to }) {\n if ($from.pos == $to.pos || $from.pos < $from.pos - 6)\n return false;\n let afterFrom = $from.pos;\n let beforeTo = $to.pos;\n let depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n if ($from.after(depth + 1) < $from.end(depth))\n break;\n for (let d = $to.depth; d >= 0; d--, beforeTo--)\n if ($to.before(d + 1) > $to.start(d))\n break;\n return afterFrom == beforeTo && /row|table/.test($from.node(depth).type.spec.tableRole);\n}\nfunction isTextSelectionAcrossCells({ $from, $to }) {\n let fromCellBoundaryNode;\n let toCellBoundaryNode;\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (node.type.spec.tableRole === \"cell\" || node.type.spec.tableRole === \"header_cell\") {\n fromCellBoundaryNode = node;\n break;\n }\n }\n for (let i = $to.depth; i > 0; i--) {\n const node = $to.node(i);\n if (node.type.spec.tableRole === \"cell\" || node.type.spec.tableRole === \"header_cell\") {\n toCellBoundaryNode = node;\n break;\n }\n }\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0;\n}\nfunction normalizeSelection(state, tr, allowTableNodeSelection) {\n const sel = (tr || state).selection;\n const doc = (tr || state).doc;\n let normalize;\n let role;\n if (sel instanceof NodeSelection2 && (role = sel.node.type.spec.tableRole)) {\n if (role == \"cell\" || role == \"header_cell\") {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == \"row\") {\n const $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n const map = TableMap.get(sel.node);\n const start = sel.from + 1;\n const lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize)\n (tr || (tr = state.tr)).setSelection(normalize);\n return tr;\n}\n\n// src/fixtables.ts\nimport { PluginKey as PluginKey2 } from \"prosemirror-state\";\nvar fixTablesKey = new PluginKey2(\"fix-tables\");\nfunction changedDescendants(old, cur, offset, f) {\n const oldSize = old.childCount, curSize = cur.childCount;\n outer:\n for (let i = 0, j = 0; i < curSize; i++) {\n const child = cur.child(i);\n for (let scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer;\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n changedDescendants(old.child(j), child, offset + 1, f);\n else\n child.nodesBetween(0, child.content.size, f, offset + 1);\n offset += child.nodeSize;\n }\n}\nfunction fixTables(state, oldState) {\n let tr;\n const check = (node, pos) => {\n if (node.type.spec.tableRole == \"table\")\n tr = fixTable(state, node, pos, tr);\n };\n if (!oldState)\n state.doc.descendants(check);\n else if (oldState.doc != state.doc)\n changedDescendants(oldState.doc, state.doc, 0, check);\n return tr;\n}\nfunction fixTable(state, table, tablePos, tr) {\n const map = TableMap.get(table);\n if (!map.problems)\n return tr;\n if (!tr)\n tr = state.tr;\n const mustAdd = [];\n for (let i = 0; i < map.height; i++)\n mustAdd.push(0);\n for (let i = 0; i < map.problems.length; i++) {\n const prob = map.problems[i];\n if (prob.type == \"collision\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n const attrs = cell.attrs;\n for (let j = 0; j < attrs.rowspan; j++)\n mustAdd[prob.row + j] += prob.n;\n tr.setNodeMarkup(\n tr.mapping.map(tablePos + 1 + prob.pos),\n null,\n removeColSpan(attrs, attrs.colspan - prob.n, prob.n)\n );\n } else if (prob.type == \"missing\") {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == \"overlong_rowspan\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n rowspan: cell.attrs.rowspan - prob.n\n });\n } else if (prob.type == \"colwidth mismatch\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n colwidth: prob.colwidth\n });\n }\n }\n let first, last;\n for (let i = 0; i < mustAdd.length; i++)\n if (mustAdd[i]) {\n if (first == null)\n first = i;\n last = i;\n }\n for (let i = 0, pos = tablePos + 1; i < map.height; i++) {\n const row = table.child(i);\n const end = pos + row.nodeSize;\n const add = mustAdd[i];\n if (add > 0) {\n let role = \"cell\";\n if (row.firstChild) {\n role = row.firstChild.type.spec.tableRole;\n }\n const nodes = [];\n for (let j = 0; j < add; j++) {\n const node = tableNodeTypes(state.schema)[role].createAndFill();\n if (node)\n nodes.push(node);\n }\n const side = (i == 0 || first == i - 1) && last == i ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true });\n}\n\n// src/input.ts\nimport { Fragment as Fragment3, Slice as Slice3 } from \"prosemirror-model\";\nimport {\n Selection as Selection2,\n TextSelection as TextSelection2\n} from \"prosemirror-state\";\nimport { keydownHandler } from \"prosemirror-keymap\";\n\n// src/copypaste.ts\nimport { Fragment as Fragment2, Slice as Slice2 } from \"prosemirror-model\";\nimport { Transform } from \"prosemirror-transform\";\nfunction pastedCells(slice) {\n if (!slice.size)\n return null;\n let { content, openStart, openEnd } = slice;\n while (content.childCount == 1 && (openStart > 0 && openEnd > 0 || content.child(0).type.spec.tableRole == \"table\")) {\n openStart--;\n openEnd--;\n content = content.child(0).content;\n }\n const first = content.child(0);\n const role = first.type.spec.tableRole;\n const schema = first.type.schema, rows = [];\n if (role == \"row\") {\n for (let i = 0; i < content.childCount; i++) {\n let cells = content.child(i).content;\n const left = i ? 0 : Math.max(0, openStart - 1);\n const right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right)\n cells = fitSlice(\n tableNodeTypes(schema).row,\n new Slice2(cells, left, right)\n ).content;\n rows.push(cells);\n }\n } else if (role == \"cell\" || role == \"header_cell\") {\n rows.push(\n openStart || openEnd ? fitSlice(\n tableNodeTypes(schema).row,\n new Slice2(content, openStart, openEnd)\n ).content : content\n );\n } else {\n return null;\n }\n return ensureRectangular(schema, rows);\n}\nfunction ensureRectangular(schema, rows) {\n const widths = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n for (let j = row.childCount - 1; j >= 0; j--) {\n const { rowspan, colspan } = row.child(j).attrs;\n for (let r = i; r < i + rowspan; r++)\n widths[r] = (widths[r] || 0) + colspan;\n }\n }\n let width = 0;\n for (let r = 0; r < widths.length; r++)\n width = Math.max(width, widths[r]);\n for (let r = 0; r < widths.length; r++) {\n if (r >= rows.length)\n rows.push(Fragment2.empty);\n if (widths[r] < width) {\n const empty = tableNodeTypes(schema).cell.createAndFill();\n const cells = [];\n for (let i = widths[r]; i < width; i++) {\n cells.push(empty);\n }\n rows[r] = rows[r].append(Fragment2.from(cells));\n }\n }\n return { height: rows.length, width, rows };\n}\nfunction fitSlice(nodeType, slice) {\n const node = nodeType.createAndFill();\n const tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc;\n}\nfunction clipCells({ width, height, rows }, newWidth, newHeight) {\n if (width != newWidth) {\n const added = [];\n const newRows = [];\n for (let row = 0; row < rows.length; row++) {\n const frag = rows[row], cells = [];\n for (let col = added[row] || 0, i = 0; col < newWidth; i++) {\n let cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n cell = cell.type.createChecked(\n removeColSpan(\n cell.attrs,\n cell.attrs.colspan,\n col + cell.attrs.colspan - newWidth\n ),\n cell.content\n );\n cells.push(cell);\n col += cell.attrs.colspan;\n for (let j = 1; j < cell.attrs.rowspan; j++)\n added[row + j] = (added[row + j] || 0) + cell.attrs.colspan;\n }\n newRows.push(Fragment2.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n if (height != newHeight) {\n const newRows = [];\n for (let row = 0, i = 0; row < newHeight; row++, i++) {\n const cells = [], source = rows[i % height];\n for (let j = 0; j < source.childCount; j++) {\n let cell = source.child(j);\n if (row + cell.attrs.rowspan > newHeight)\n cell = cell.type.create(\n {\n ...cell.attrs,\n rowspan: Math.max(1, newHeight - cell.attrs.rowspan)\n },\n cell.content\n );\n cells.push(cell);\n }\n newRows.push(Fragment2.from(cells));\n }\n rows = newRows;\n height = newHeight;\n }\n return { width, height, rows };\n}\nfunction growTable(tr, map, table, start, width, height, mapFrom) {\n const schema = tr.doc.type.schema;\n const types = tableNodeTypes(schema);\n let empty;\n let emptyHead;\n if (width > map.width) {\n for (let row = 0, rowEnd = 0; row < map.height; row++) {\n const rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n const cells = [];\n let add;\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n add = empty || (empty = types.cell.createAndFill());\n else\n add = emptyHead || (emptyHead = types.header_cell.createAndFill());\n for (let i = map.width; i < width; i++)\n cells.push(add);\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n const cells = [];\n for (let i = 0, start2 = (map.height - 1) * map.width; i < Math.max(map.width, width); i++) {\n const header = i >= map.width ? false : table.nodeAt(map.map[start2 + i]).type == types.header_cell;\n cells.push(\n header ? emptyHead || (emptyHead = types.header_cell.createAndFill()) : empty || (empty = types.cell.createAndFill())\n );\n }\n const emptyRow = types.row.create(null, Fragment2.from(cells)), rows = [];\n for (let i = map.height; i < height; i++)\n rows.push(emptyRow);\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead);\n}\nfunction isolateHorizontal(tr, map, table, start, left, right, top, mapFrom) {\n if (top == 0 || top == map.height)\n return false;\n let found = false;\n for (let col = left; col < right; col++) {\n const index = top * map.width + col, pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n const cell = table.nodeAt(pos);\n const { top: cellTop, left: cellLeft } = map.findCell(pos);\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, {\n ...cell.attrs,\n rowspan: top - cellTop\n });\n tr.insert(\n tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill({\n ...cell.attrs,\n rowspan: cellTop + cell.attrs.rowspan - top\n })\n );\n col += cell.attrs.colspan - 1;\n }\n }\n return found;\n}\nfunction isolateVertical(tr, map, table, start, top, bottom, left, mapFrom) {\n if (left == 0 || left == map.width)\n return false;\n let found = false;\n for (let row = top; row < bottom; row++) {\n const index = row * map.width + left, pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n const cell = table.nodeAt(pos);\n const cellLeft = map.colCount(pos);\n const updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(\n updatePos,\n null,\n removeColSpan(\n cell.attrs,\n left - cellLeft,\n cell.attrs.colspan - (left - cellLeft)\n )\n );\n tr.insert(\n updatePos + cell.nodeSize,\n cell.type.createAndFill(\n removeColSpan(cell.attrs, 0, left - cellLeft)\n )\n );\n row += cell.attrs.rowspan - 1;\n }\n }\n return found;\n}\nfunction insertCells(state, dispatch, tableStart, rect, cells) {\n let table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc;\n if (!table) {\n throw new Error(\"No table found\");\n }\n let map = TableMap.get(table);\n const { top, left } = rect;\n const right = left + cells.width, bottom = top + cells.height;\n const tr = state.tr;\n let mapFrom = 0;\n function recomp() {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n if (!table) {\n throw new Error(\"No table found\");\n }\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom))\n recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom))\n recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom))\n recomp();\n for (let row = top; row < bottom; row++) {\n const from = map.positionAt(row, left, table), to = map.positionAt(row, right, table);\n tr.replace(\n tr.mapping.slice(mapFrom).map(from + tableStart),\n tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice2(cells.rows[row - top], 0, 0)\n );\n }\n recomp();\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table))\n )\n );\n dispatch(tr);\n}\n\n// src/input.ts\nvar handleKeyDown = keydownHandler({\n ArrowLeft: arrow(\"horiz\", -1),\n ArrowRight: arrow(\"horiz\", 1),\n ArrowUp: arrow(\"vert\", -1),\n ArrowDown: arrow(\"vert\", 1),\n \"Shift-ArrowLeft\": shiftArrow(\"horiz\", -1),\n \"Shift-ArrowRight\": shiftArrow(\"horiz\", 1),\n \"Shift-ArrowUp\": shiftArrow(\"vert\", -1),\n \"Shift-ArrowDown\": shiftArrow(\"vert\", 1),\n Backspace: deleteCellSelection,\n \"Mod-Backspace\": deleteCellSelection,\n Delete: deleteCellSelection,\n \"Mod-Delete\": deleteCellSelection\n});\nfunction maybeSetSelection(state, dispatch, selection) {\n if (selection.eq(state.selection))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(selection).scrollIntoView());\n return true;\n}\nfunction arrow(axis, dir) {\n return (state, dispatch, view) => {\n if (!view)\n return false;\n const sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(\n state,\n dispatch,\n Selection2.near(sel.$headCell, dir)\n );\n }\n if (axis != \"horiz\" && !sel.empty)\n return false;\n const end = atEndOfCell(view, axis, dir);\n if (end == null)\n return false;\n if (axis == \"horiz\") {\n return maybeSetSelection(\n state,\n dispatch,\n Selection2.near(state.doc.resolve(sel.head + dir), dir)\n );\n } else {\n const $cell = state.doc.resolve(end);\n const $next = nextCell($cell, axis, dir);\n let newSel;\n if ($next)\n newSel = Selection2.near($next, 1);\n else if (dir < 0)\n newSel = Selection2.near(state.doc.resolve($cell.before(-1)), -1);\n else\n newSel = Selection2.near(state.doc.resolve($cell.after(-1)), 1);\n return maybeSetSelection(state, dispatch, newSel);\n }\n };\n}\nfunction shiftArrow(axis, dir) {\n return (state, dispatch, view) => {\n if (!view)\n return false;\n const sel = state.selection;\n let cellSel;\n if (sel instanceof CellSelection) {\n cellSel = sel;\n } else {\n const end = atEndOfCell(view, axis, dir);\n if (end == null)\n return false;\n cellSel = new CellSelection(state.doc.resolve(end));\n }\n const $head = nextCell(cellSel.$headCell, axis, dir);\n if (!$head)\n return false;\n return maybeSetSelection(\n state,\n dispatch,\n new CellSelection(cellSel.$anchorCell, $head)\n );\n };\n}\nfunction deleteCellSelection(state, dispatch) {\n const sel = state.selection;\n if (!(sel instanceof CellSelection))\n return false;\n if (dispatch) {\n const tr = state.tr;\n const baseContent = tableNodeTypes(state.schema).cell.createAndFill().content;\n sel.forEachCell((cell, pos) => {\n if (!cell.content.eq(baseContent))\n tr.replace(\n tr.mapping.map(pos + 1),\n tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice3(baseContent, 0, 0)\n );\n });\n if (tr.docChanged)\n dispatch(tr);\n }\n return true;\n}\nfunction handleTripleClick(view, pos) {\n const doc = view.state.doc, $cell = cellAround(doc.resolve(pos));\n if (!$cell)\n return false;\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true;\n}\nfunction handlePaste(view, _, slice) {\n if (!isInTable(view.state))\n return false;\n let cells = pastedCells(slice);\n const sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells)\n cells = {\n width: 1,\n height: 1,\n rows: [\n Fragment3.from(\n fitSlice(tableNodeTypes(view.state.schema).cell, slice)\n )\n ]\n };\n const table = sel.$anchorCell.node(-1);\n const start = sel.$anchorCell.start(-1);\n const rect = TableMap.get(table).rectBetween(\n sel.$anchorCell.pos - start,\n sel.$headCell.pos - start\n );\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true;\n } else if (cells) {\n const $cell = selectionCell(view.state);\n const start = $cell.start(-1);\n insertCells(\n view.state,\n view.dispatch,\n start,\n TableMap.get($cell.node(-1)).findCell($cell.pos - start),\n cells\n );\n return true;\n } else {\n return false;\n }\n}\nfunction handleMouseDown(view, startEvent) {\n var _a;\n if (startEvent.ctrlKey || startEvent.metaKey)\n return;\n const startDOMCell = domInCell(view, startEvent.target);\n let $anchor;\n if (startEvent.shiftKey && view.state.selection instanceof CellSelection) {\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (startEvent.shiftKey && startDOMCell && ($anchor = cellAround(view.state.selection.$anchor)) != null && ((_a = cellUnderMouse(view, startEvent)) == null ? void 0 : _a.pos) != $anchor.pos) {\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n return;\n }\n function setCellSelection($anchor2, event) {\n let $head = cellUnderMouse(view, event);\n const starting = tableEditingKey.getState(view.state) == null;\n if (!$head || !inSameTable($anchor2, $head)) {\n if (starting)\n $head = $anchor2;\n else\n return;\n }\n const selection = new CellSelection($anchor2, $head);\n if (starting || !view.state.selection.eq(selection)) {\n const tr = view.state.tr.setSelection(selection);\n if (starting)\n tr.setMeta(tableEditingKey, $anchor2.pos);\n view.dispatch(tr);\n }\n }\n function stop() {\n view.root.removeEventListener(\"mouseup\", stop);\n view.root.removeEventListener(\"dragstart\", stop);\n view.root.removeEventListener(\"mousemove\", move);\n if (tableEditingKey.getState(view.state) != null)\n view.dispatch(view.state.tr.setMeta(tableEditingKey, -1));\n }\n function move(_event) {\n const event = _event;\n const anchor = tableEditingKey.getState(view.state);\n let $anchor2;\n if (anchor != null) {\n $anchor2 = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target) != startDOMCell) {\n $anchor2 = cellUnderMouse(view, startEvent);\n if (!$anchor2)\n return stop();\n }\n if ($anchor2)\n setCellSelection($anchor2, event);\n }\n view.root.addEventListener(\"mouseup\", stop);\n view.root.addEventListener(\"dragstart\", stop);\n view.root.addEventListener(\"mousemove\", move);\n}\nfunction atEndOfCell(view, axis, dir) {\n if (!(view.state.selection instanceof TextSelection2))\n return null;\n const { $head } = view.state.selection;\n for (let d = $head.depth - 1; d >= 0; d--) {\n const parent = $head.node(d), index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount))\n return null;\n if (parent.type.spec.tableRole == \"cell\" || parent.type.spec.tableRole == \"header_cell\") {\n const cellPos = $head.before(d);\n const dirStr = axis == \"vert\" ? dir > 0 ? \"down\" : \"up\" : dir > 0 ? \"right\" : \"left\";\n return view.endOfTextblock(dirStr) ? cellPos : null;\n }\n }\n return null;\n}\nfunction domInCell(view, dom) {\n for (; dom && dom != view.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"TD\" || dom.nodeName == \"TH\") {\n return dom;\n }\n }\n return null;\n}\nfunction cellUnderMouse(view, event) {\n const mousePos = view.posAtCoords({\n left: event.clientX,\n top: event.clientY\n });\n if (!mousePos)\n return null;\n return mousePos ? cellAround(view.state.doc.resolve(mousePos.pos)) : null;\n}\n\n// src/columnresizing.ts\nimport { Plugin, PluginKey as PluginKey3 } from \"prosemirror-state\";\nimport {\n Decoration as Decoration2,\n DecorationSet as DecorationSet2\n} from \"prosemirror-view\";\n\n// src/tableview.ts\nvar TableView = class {\n constructor(node, cellMinWidth) {\n this.node = node;\n this.cellMinWidth = cellMinWidth;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"tableWrapper\";\n this.table = this.dom.appendChild(document.createElement(\"table\"));\n this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n updateColumnsOnResize(node, this.colgroup, this.table, cellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n }\n update(node) {\n if (node.type != this.node.type)\n return false;\n this.node = node;\n updateColumnsOnResize(node, this.colgroup, this.table, this.cellMinWidth);\n return true;\n }\n ignoreMutation(record) {\n return record.type == \"attributes\" && (record.target == this.table || this.colgroup.contains(record.target));\n }\n};\nfunction updateColumnsOnResize(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {\n var _a;\n let totalWidth = 0;\n let fixedWidth = true;\n let nextDOM = colgroup.firstChild;\n const row = node.firstChild;\n if (!row)\n return;\n for (let i = 0, col = 0; i < row.childCount; i++) {\n const { colspan, colwidth } = row.child(i).attrs;\n for (let j = 0; j < colspan; j++, col++) {\n const hasWidth = overrideCol == col ? overrideValue : colwidth && colwidth[j];\n const cssWidth = hasWidth ? hasWidth + \"px\" : \"\";\n totalWidth += hasWidth || cellMinWidth;\n if (!hasWidth)\n fixedWidth = false;\n if (!nextDOM) {\n colgroup.appendChild(document.createElement(\"col\")).style.width = cssWidth;\n } else {\n if (nextDOM.style.width != cssWidth)\n nextDOM.style.width = cssWidth;\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n while (nextDOM) {\n const after = nextDOM.nextSibling;\n (_a = nextDOM.parentNode) == null ? void 0 : _a.removeChild(nextDOM);\n nextDOM = after;\n }\n if (fixedWidth) {\n table.style.width = totalWidth + \"px\";\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = totalWidth + \"px\";\n }\n}\n\n// src/columnresizing.ts\nvar columnResizingPluginKey = new PluginKey3(\n \"tableColumnResizing\"\n);\nfunction columnResizing({\n handleWidth = 5,\n cellMinWidth = 25,\n View = TableView,\n lastColumnResizable = true\n} = {}) {\n const plugin = new Plugin({\n key: columnResizingPluginKey,\n state: {\n init(_, state) {\n plugin.spec.props.nodeViews[tableNodeTypes(state.schema).table.name] = (node, view) => new View(node, cellMinWidth, view);\n return new ResizeState(-1, false);\n },\n apply(tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n attributes: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n return pluginState && pluginState.activeHandle > -1 ? { class: \"resize-cursor\" } : {};\n },\n handleDOMEvents: {\n mousemove: (view, event) => {\n handleMouseMove(\n view,\n event,\n handleWidth,\n cellMinWidth,\n lastColumnResizable\n );\n },\n mouseleave: (view) => {\n handleMouseLeave(view);\n },\n mousedown: (view, event) => {\n handleMouseDown2(view, event, cellMinWidth);\n }\n },\n decorations: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n if (pluginState && pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n nodeViews: {}\n }\n });\n return plugin;\n}\nvar ResizeState = class {\n constructor(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n }\n apply(tr) {\n const state = this;\n const action = tr.getMeta(columnResizingPluginKey);\n if (action && action.setHandle != null)\n return new ResizeState(action.setHandle, false);\n if (action && action.setDragging !== void 0)\n return new ResizeState(state.activeHandle, action.setDragging);\n if (state.activeHandle > -1 && tr.docChanged) {\n let handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = -1;\n }\n return new ResizeState(handle, state.dragging);\n }\n return state;\n }\n};\nfunction handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable) {\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState)\n return;\n if (!pluginState.dragging) {\n const target = domCellAround(event.target);\n let cell = -1;\n if (target) {\n const { left, right } = target.getBoundingClientRect();\n if (event.clientX - left <= handleWidth)\n cell = edgeCell(view, event, \"left\", handleWidth);\n else if (right - event.clientX <= handleWidth)\n cell = edgeCell(view, event, \"right\", handleWidth);\n }\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $cell.start(-1);\n const col = map.colCount($cell.pos - tableStart) + $cell.nodeAfter.attrs.colspan - 1;\n if (col == map.width - 1) {\n return;\n }\n }\n updateHandle(view, cell);\n }\n }\n}\nfunction handleMouseLeave(view) {\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (pluginState && pluginState.activeHandle > -1 && !pluginState.dragging)\n updateHandle(view, -1);\n}\nfunction handleMouseDown2(view, event, cellMinWidth) {\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState || pluginState.activeHandle == -1 || pluginState.dragging)\n return false;\n const cell = view.state.doc.nodeAt(pluginState.activeHandle);\n const width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, {\n setDragging: { startX: event.clientX, startWidth: width }\n })\n );\n function finish(event2) {\n window.removeEventListener(\"mouseup\", finish);\n window.removeEventListener(\"mousemove\", move);\n const pluginState2 = columnResizingPluginKey.getState(view.state);\n if (pluginState2 == null ? void 0 : pluginState2.dragging) {\n updateColumnWidth(\n view,\n pluginState2.activeHandle,\n draggedWidth(pluginState2.dragging, event2, cellMinWidth)\n );\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null })\n );\n }\n }\n function move(event2) {\n if (!event2.which)\n return finish(event2);\n const pluginState2 = columnResizingPluginKey.getState(view.state);\n if (!pluginState2)\n return;\n if (pluginState2.dragging) {\n const dragged = draggedWidth(pluginState2.dragging, event2, cellMinWidth);\n displayColumnWidth(view, pluginState2.activeHandle, dragged, cellMinWidth);\n }\n }\n window.addEventListener(\"mouseup\", finish);\n window.addEventListener(\"mousemove\", move);\n event.preventDefault();\n return true;\n}\nfunction currentColWidth(view, cellPos, { colspan, colwidth }) {\n const width = colwidth && colwidth[colwidth.length - 1];\n if (width)\n return width;\n const dom = view.domAtPos(cellPos);\n const node = dom.node.childNodes[dom.offset];\n let domWidth = node.offsetWidth, parts = colspan;\n if (colwidth) {\n for (let i = 0; i < colspan; i++)\n if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n }\n }\n return domWidth / parts;\n}\nfunction domCellAround(target) {\n while (target && target.nodeName != \"TD\" && target.nodeName != \"TH\")\n target = target.classList && target.classList.contains(\"ProseMirror\") ? null : target.parentNode;\n return target;\n}\nfunction edgeCell(view, event, side, handleWidth) {\n const offset = side == \"right\" ? -handleWidth : handleWidth;\n const found = view.posAtCoords({\n left: event.clientX + offset,\n top: event.clientY\n });\n if (!found)\n return -1;\n const { pos } = found;\n const $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell)\n return -1;\n if (side == \"right\")\n return $cell.pos;\n const map = TableMap.get($cell.node(-1)), start = $cell.start(-1);\n const index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1];\n}\nfunction draggedWidth(dragging, event, cellMinWidth) {\n const offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset);\n}\nfunction updateHandle(view, value) {\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value })\n );\n}\nfunction updateColumnWidth(view, cell, width) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n const tr = view.state.tr;\n for (let row = 0; row < map.height; row++) {\n const mapIndex = row * map.width + col;\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width])\n continue;\n const pos = map.map[mapIndex];\n const attrs = table.nodeAt(pos).attrs;\n const index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width)\n continue;\n const colwidth = attrs.colwidth ? attrs.colwidth.slice() : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, { ...attrs, colwidth });\n }\n if (tr.docChanged)\n view.dispatch(tr);\n}\nfunction displayColumnWidth(view, cell, width, cellMinWidth) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1), start = $cell.start(-1);\n const col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n let dom = view.domAtPos($cell.start(-1)).node;\n while (dom && dom.nodeName != \"TABLE\") {\n dom = dom.parentNode;\n }\n if (!dom)\n return;\n updateColumnsOnResize(\n table,\n dom.firstChild,\n dom,\n cellMinWidth,\n col,\n width\n );\n}\nfunction zeroes(n) {\n return Array(n).fill(0);\n}\nfunction handleDecorations(state, cell) {\n const decorations = [];\n const $cell = state.doc.resolve(cell);\n const table = $cell.node(-1);\n if (!table) {\n return DecorationSet2.empty;\n }\n const map = TableMap.get(table);\n const start = $cell.start(-1);\n const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan;\n for (let row = 0; row < map.height; row++) {\n const index = col + row * map.width - 1;\n if ((col == map.width || map.map[index] != map.map[index + 1]) && (row == 0 || map.map[index] != map.map[index - map.width])) {\n const cellPos = map.map[index];\n const pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n const dom = document.createElement(\"div\");\n dom.className = \"column-resize-handle\";\n decorations.push(Decoration2.widget(pos, dom));\n }\n }\n return DecorationSet2.create(state.doc, decorations);\n}\n\n// src/commands.ts\nimport { Fragment as Fragment4 } from \"prosemirror-model\";\nimport {\n TextSelection as TextSelection3\n} from \"prosemirror-state\";\nfunction selectedRect(state) {\n const sel = state.selection;\n const $pos = selectionCell(state);\n const table = $pos.node(-1);\n const tableStart = $pos.start(-1);\n const map = TableMap.get(table);\n const rect = sel instanceof CellSelection ? map.rectBetween(\n sel.$anchorCell.pos - tableStart,\n sel.$headCell.pos - tableStart\n ) : map.findCell($pos.pos - tableStart);\n return { ...rect, tableStart, map, table };\n}\nfunction addColumn(tr, { map, tableStart, table }, col) {\n let refColumn = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn)) {\n refColumn = col == 0 || col == map.width ? null : 0;\n }\n for (let row = 0; row < map.height; row++) {\n const index = row * map.width + col;\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n const pos = map.map[index];\n const cell = table.nodeAt(pos);\n tr.setNodeMarkup(\n tr.mapping.map(tableStart + pos),\n null,\n addColSpan(cell.attrs, col - map.colCount(pos))\n );\n row += cell.attrs.rowspan - 1;\n } else {\n const type = refColumn == null ? tableNodeTypes(table.type.schema).cell : table.nodeAt(map.map[index + refColumn]).type;\n const pos = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos), type.createAndFill());\n }\n }\n return tr;\n}\nfunction addColumnBefore(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true;\n}\nfunction addColumnAfter(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true;\n}\nfunction removeColumn(tr, { map, table, tableStart }, col) {\n const mapStart = tr.mapping.maps.length;\n for (let row = 0; row < map.height; ) {\n const index = row * map.width + col;\n const pos = map.map[index];\n const cell = table.nodeAt(pos);\n const attrs = cell.attrs;\n if (col > 0 && map.map[index - 1] == pos || col < map.width - 1 && map.map[index + 1] == pos) {\n tr.setNodeMarkup(\n tr.mapping.slice(mapStart).map(tableStart + pos),\n null,\n removeColSpan(attrs, col - map.colCount(pos))\n );\n } else {\n const start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += attrs.rowspan;\n }\n}\nfunction deleteColumn(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n const tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width)\n return false;\n for (let i = rect.right - 1; ; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left)\n break;\n const table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n if (!table) {\n throw RangeError(\"No table found\");\n }\n rect.table = table;\n rect.map = TableMap.get(table);\n }\n dispatch(tr);\n }\n return true;\n}\nfunction rowIsHeader(map, table, row) {\n var _a;\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let col = 0; col < map.width; col++)\n if (((_a = table.nodeAt(map.map[col + row * map.width])) == null ? void 0 : _a.type) != headerCell)\n return false;\n return true;\n}\nfunction addRow(tr, { map, tableStart, table }, row) {\n var _a;\n let rowPos = tableStart;\n for (let i = 0; i < row; i++)\n rowPos += table.child(i).nodeSize;\n const cells = [];\n let refRow = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n refRow = row == 0 || row == map.height ? null : 0;\n for (let col = 0, index = map.width * row; col < map.width; col++, index++) {\n if (row > 0 && row < map.height && map.map[index] == map.map[index - map.width]) {\n const pos = map.map[index];\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tableStart + pos, null, {\n ...attrs,\n rowspan: attrs.rowspan + 1\n });\n col += attrs.colspan - 1;\n } else {\n const type = refRow == null ? tableNodeTypes(table.type.schema).cell : (_a = table.nodeAt(map.map[index + refRow * map.width])) == null ? void 0 : _a.type;\n const node = type == null ? void 0 : type.createAndFill();\n if (node)\n cells.push(node);\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr;\n}\nfunction addRowBefore(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true;\n}\nfunction addRowAfter(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true;\n}\nfunction removeRow(tr, { map, table, tableStart }, row) {\n let rowPos = 0;\n for (let i = 0; i < row; i++)\n rowPos += table.child(i).nodeSize;\n const nextRow = rowPos + table.child(row).nodeSize;\n const mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n for (let col = 0, index = row * map.width; col < map.width; col++, index++) {\n const pos = map.map[index];\n if (row > 0 && pos == map.map[index - map.width]) {\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, {\n ...attrs,\n rowspan: attrs.rowspan - 1\n });\n col += attrs.colspan - 1;\n } else if (row < map.width && pos == map.map[index + map.width]) {\n const cell = table.nodeAt(pos);\n const attrs = cell.attrs;\n const copy = cell.type.create(\n { ...attrs, rowspan: cell.attrs.rowspan - 1 },\n cell.content\n );\n const newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += attrs.colspan - 1;\n }\n }\n}\nfunction deleteRow(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state), tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height)\n return false;\n for (let i = rect.bottom - 1; ; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top)\n break;\n const table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n if (!table) {\n throw RangeError(\"No table found\");\n }\n rect.table = table;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true;\n}\nfunction isEmpty(cell) {\n const c = cell.content;\n return c.childCount == 1 && c.child(0).isTextblock && c.child(0).childCount == 0;\n}\nfunction cellsOverlapRectangle({ width, height, map }, rect) {\n let indexTop = rect.top * width + rect.left, indexLeft = indexTop;\n let indexBottom = (rect.bottom - 1) * width + rect.left, indexRight = indexTop + (rect.right - rect.left - 1);\n for (let i = rect.top; i < rect.bottom; i++) {\n if (rect.left > 0 && map[indexLeft] == map[indexLeft - 1] || rect.right < width && map[indexRight] == map[indexRight + 1])\n return true;\n indexLeft += width;\n indexRight += width;\n }\n for (let i = rect.left; i < rect.right; i++) {\n if (rect.top > 0 && map[indexTop] == map[indexTop - width] || rect.bottom < height && map[indexBottom] == map[indexBottom + width])\n return true;\n indexTop++;\n indexBottom++;\n }\n return false;\n}\nfunction mergeCells(state, dispatch) {\n const sel = state.selection;\n if (!(sel instanceof CellSelection) || sel.$anchorCell.pos == sel.$headCell.pos)\n return false;\n const rect = selectedRect(state), { map } = rect;\n if (cellsOverlapRectangle(map, rect))\n return false;\n if (dispatch) {\n const tr = state.tr;\n const seen = {};\n let content = Fragment4.empty;\n let mergedPos;\n let mergedCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const cellPos = map.map[row * map.width + col];\n const cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos] || !cell)\n continue;\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell))\n content = content.append(cell.content);\n const mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n if (mergedPos == null || mergedCell == null) {\n return true;\n }\n tr.setNodeMarkup(mergedPos + rect.tableStart, null, {\n ...addColSpan(\n mergedCell.attrs,\n mergedCell.attrs.colspan,\n rect.right - rect.left - mergedCell.attrs.colspan\n ),\n rowspan: rect.bottom - rect.top\n });\n if (content.size) {\n const end = mergedPos + 1 + mergedCell.content.size;\n const start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(\n new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart))\n );\n dispatch(tr);\n }\n return true;\n}\nfunction splitCell(state, dispatch) {\n const nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(({ node }) => {\n return nodeTypes[node.type.spec.tableRole];\n })(state, dispatch);\n}\nfunction splitCellWithType(getCellType) {\n return (state, dispatch) => {\n var _a;\n const sel = state.selection;\n let cellNode;\n let cellPos;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode)\n return false;\n cellPos = (_a = cellAround(sel.$from)) == null ? void 0 : _a.pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos)\n return false;\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode == null || cellPos == null) {\n return false;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {\n return false;\n }\n if (dispatch) {\n let baseAttrs = cellNode.attrs;\n const attrs = [];\n const colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1)\n baseAttrs = { ...baseAttrs, rowspan: 1 };\n if (baseAttrs.colspan > 1)\n baseAttrs = { ...baseAttrs, colspan: 1 };\n const rect = selectedRect(state), tr = state.tr;\n for (let i = 0; i < rect.right - rect.left; i++)\n attrs.push(\n colwidth ? {\n ...baseAttrs,\n colwidth: colwidth && colwidth[i] ? [colwidth[i]] : null\n } : baseAttrs\n );\n let lastCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n let pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top)\n pos += cellNode.nodeSize;\n for (let col = rect.left, i = 0; col < rect.right; col++, i++) {\n if (col == rect.left && row == rect.top)\n continue;\n tr.insert(\n lastCell = tr.mapping.map(pos + rect.tableStart, 1),\n getCellType({ node: cellNode, row, col }).createAndFill(attrs[i])\n );\n }\n }\n tr.setNodeMarkup(\n cellPos,\n getCellType({ node: cellNode, row: rect.top, col: rect.left }),\n attrs[0]\n );\n if (sel instanceof CellSelection)\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(sel.$anchorCell.pos),\n lastCell ? tr.doc.resolve(lastCell) : void 0\n )\n );\n dispatch(tr);\n }\n return true;\n };\n}\nfunction setCellAttr(name, value) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n const $cell = selectionCell(state);\n if ($cell.nodeAfter.attrs[name] === value)\n return false;\n if (dispatch) {\n const tr = state.tr;\n if (state.selection instanceof CellSelection)\n state.selection.forEachCell((node, pos) => {\n if (node.attrs[name] !== value)\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n [name]: value\n });\n });\n else\n tr.setNodeMarkup($cell.pos, null, {\n ...$cell.nodeAfter.attrs,\n [name]: value\n });\n dispatch(tr);\n }\n return true;\n };\n}\nfunction deprecated_toggleHeader(type) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state), tr = state.tr;\n const cells = rect.map.cellsInRect(\n type == \"column\" ? {\n left: rect.left,\n top: 0,\n right: rect.right,\n bottom: rect.map.height\n } : type == \"row\" ? {\n left: 0,\n top: rect.top,\n right: rect.map.width,\n bottom: rect.bottom\n } : rect\n );\n const nodes = cells.map((pos) => rect.table.nodeAt(pos));\n for (let i = 0; i < cells.length; i++)\n if (nodes[i].type == types.header_cell)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.cell,\n nodes[i].attrs\n );\n if (tr.steps.length == 0)\n for (let i = 0; i < cells.length; i++)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.header_cell,\n nodes[i].attrs\n );\n dispatch(tr);\n }\n return true;\n };\n}\nfunction isHeaderEnabledByType(type, rect, types) {\n const cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == \"row\" ? rect.map.width : 1,\n bottom: type == \"column\" ? rect.map.height : 1\n });\n for (let i = 0; i < cellPositions.length; i++) {\n const cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false;\n }\n }\n return true;\n}\nfunction toggleHeader(type, options) {\n options = options || { useDeprecatedLogic: false };\n if (options.useDeprecatedLogic)\n return deprecated_toggleHeader(type);\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state), tr = state.tr;\n const isHeaderRowEnabled = isHeaderEnabledByType(\"row\", rect, types);\n const isHeaderColumnEnabled = isHeaderEnabledByType(\n \"column\",\n rect,\n types\n );\n const isHeaderEnabled = type === \"column\" ? isHeaderRowEnabled : type === \"row\" ? isHeaderColumnEnabled : false;\n const selectionStartsAt = isHeaderEnabled ? 1 : 0;\n const cellsRect = type == \"column\" ? {\n left: 0,\n top: selectionStartsAt,\n right: 1,\n bottom: rect.map.height\n } : type == \"row\" ? {\n left: selectionStartsAt,\n top: 0,\n right: rect.map.width,\n bottom: 1\n } : rect;\n const newType = type == \"column\" ? isHeaderColumnEnabled ? types.cell : types.header_cell : type == \"row\" ? isHeaderRowEnabled ? types.cell : types.header_cell : types.cell;\n rect.map.cellsInRect(cellsRect).forEach((relativeCellPos) => {\n const cellPos = relativeCellPos + rect.tableStart;\n const cell = tr.doc.nodeAt(cellPos);\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n dispatch(tr);\n }\n return true;\n };\n}\nvar toggleHeaderRow = toggleHeader(\"row\", {\n useDeprecatedLogic: true\n});\nvar toggleHeaderColumn = toggleHeader(\"column\", {\n useDeprecatedLogic: true\n});\nvar toggleHeaderCell = toggleHeader(\"cell\", {\n useDeprecatedLogic: true\n});\nfunction findNextCell($cell, dir) {\n if (dir < 0) {\n const before = $cell.nodeBefore;\n if (before)\n return $cell.pos - before.nodeSize;\n for (let row = $cell.index(-1) - 1, rowEnd = $cell.before(); row >= 0; row--) {\n const rowNode = $cell.node(-1).child(row);\n const lastChild = rowNode.lastChild;\n if (lastChild) {\n return rowEnd - 1 - lastChild.nodeSize;\n }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) {\n return $cell.pos + $cell.nodeAfter.nodeSize;\n }\n const table = $cell.node(-1);\n for (let row = $cell.indexAfter(-1), rowStart = $cell.after(); row < table.childCount; row++) {\n const rowNode = table.child(row);\n if (rowNode.childCount)\n return rowStart + 1;\n rowStart += rowNode.nodeSize;\n }\n }\n return null;\n}\nfunction goToNextCell(direction) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n const cell = findNextCell(selectionCell(state), direction);\n if (cell == null)\n return false;\n if (dispatch) {\n const $cell = state.doc.resolve(cell);\n dispatch(\n state.tr.setSelection(TextSelection3.between($cell, moveCellForward($cell))).scrollIntoView()\n );\n }\n return true;\n };\n}\nfunction deleteTable(state, dispatch) {\n const $pos = state.selection.$anchor;\n for (let d = $pos.depth; d > 0; d--) {\n const node = $pos.node(d);\n if (node.type.spec.tableRole == \"table\") {\n if (dispatch)\n dispatch(\n state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView()\n );\n return true;\n }\n }\n return false;\n}\n\n// src/index.ts\nfunction tableEditing({\n allowTableNodeSelection = false\n} = {}) {\n return new Plugin2({\n key: tableEditingKey,\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init() {\n return null;\n },\n apply(tr, cur) {\n const set = tr.getMeta(tableEditingKey);\n if (set != null)\n return set == -1 ? null : set;\n if (cur == null || !tr.docChanged)\n return cur;\n const { deleted, pos } = tr.mapping.mapResult(cur);\n return deleted ? null : pos;\n }\n },\n props: {\n decorations: drawCellSelection,\n handleDOMEvents: {\n mousedown: handleMouseDown\n },\n createSelectionBetween(view) {\n return tableEditingKey.getState(view.state) != null ? view.state.selection : null;\n },\n handleTripleClick,\n handleKeyDown,\n handlePaste\n },\n appendTransaction(_, oldState, state) {\n return normalizeSelection(\n state,\n fixTables(state, oldState),\n allowTableNodeSelection\n );\n }\n });\n}\nexport {\n CellBookmark,\n CellSelection,\n ResizeState,\n TableMap,\n TableView,\n clipCells as __clipCells,\n insertCells as __insertCells,\n pastedCells as __pastedCells,\n addColSpan,\n addColumn,\n addColumnAfter,\n addColumnBefore,\n addRow,\n addRowAfter,\n addRowBefore,\n cellAround,\n colCount,\n columnIsHeader,\n columnResizing,\n columnResizingPluginKey,\n deleteColumn,\n deleteRow,\n deleteTable,\n findCell,\n fixTables,\n fixTablesKey,\n goToNextCell,\n handlePaste,\n inSameTable,\n isInTable,\n mergeCells,\n moveCellForward,\n nextCell,\n pointsAtCell,\n removeColSpan,\n removeColumn,\n removeRow,\n rowIsHeader,\n selectedRect,\n selectionCell,\n setCellAttr,\n splitCell,\n splitCellWithType,\n tableEditing,\n tableEditingKey,\n tableNodeTypes,\n tableNodes,\n toggleHeader,\n toggleHeaderCell,\n toggleHeaderColumn,\n toggleHeaderRow,\n updateColumnsOnResize\n};\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence>) → RopeSequence\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence>) → RopeSequence\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps[tr.steps.length - 1]), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps[tr.steps.length - 1]);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(map) {\n let result = [];\n map.forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, dispatch, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n dispatch(pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist }).scrollIntoView());\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || hist.done.eventCount == 0)\n return false;\n if (dispatch)\n histTransaction(hist, state, dispatch, false);\n return true;\n};\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || hist.undone.eventCount == 0)\n return false;\n if (dispatch)\n histTransaction(hist, state, dispatch, true);\n return true;\n};\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n\nexport { closeHistory, history, redo, redoDepth, undo, undoDepth };\n","export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe) {\n\t if (urlSafe === undefined) {\n\t urlSafe = true\n\t }\n\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA256\n\t * @property {number} iterations The number of iterations to perform. Default: 250000\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA256,\n\t iterations: 250000\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt, hasher) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t if (!hasher) {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t } else {\n\t var key = EvpKDF.create({ keySize: keySize + ivSize, hasher: hasher }).compute(password, salt);\n\t }\n\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t const N = 16;\n\n\t //Origin pbox and sbox, derived from PI\n\t const ORIG_P = [\n\t 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,\n\t 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,\n\t 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,\n\t 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,\n\t 0x9216D5D9, 0x8979FB1B\n\t ];\n\n\t const ORIG_S = [\n\t [ 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,\n\t 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,\n\t 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,\n\t 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,\n\t 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,\n\t 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,\n\t 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,\n\t 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,\n\t 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,\n\t 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,\n\t 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,\n\t 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,\n\t 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,\n\t 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,\n\t 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,\n\t 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,\n\t 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,\n\t 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,\n\t 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,\n\t 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,\n\t 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,\n\t 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,\n\t 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,\n\t 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,\n\t 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,\n\t 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,\n\t 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,\n\t 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,\n\t 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,\n\t 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,\n\t 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,\n\t 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,\n\t 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,\n\t 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,\n\t 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,\n\t 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,\n\t 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,\n\t 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,\n\t 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,\n\t 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,\n\t 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,\n\t 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,\n\t 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,\n\t 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,\n\t 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,\n\t 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,\n\t 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,\n\t 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,\n\t 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,\n\t 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,\n\t 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,\n\t 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,\n\t 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,\n\t 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,\n\t 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,\n\t 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,\n\t 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,\n\t 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,\n\t 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,\n\t 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,\n\t 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,\n\t 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,\n\t 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,\n\t 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A ],\n\t [ 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,\n\t 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,\n\t 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,\n\t 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,\n\t 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,\n\t 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,\n\t 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,\n\t 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,\n\t 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,\n\t 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,\n\t 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,\n\t 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,\n\t 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,\n\t 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,\n\t 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,\n\t 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,\n\t 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,\n\t 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,\n\t 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,\n\t 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,\n\t 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,\n\t 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,\n\t 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,\n\t 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,\n\t 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,\n\t 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,\n\t 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,\n\t 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,\n\t 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,\n\t 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,\n\t 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,\n\t 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,\n\t 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,\n\t 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,\n\t 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,\n\t 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,\n\t 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,\n\t 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,\n\t 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,\n\t 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,\n\t 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,\n\t 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,\n\t 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,\n\t 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,\n\t 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,\n\t 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,\n\t 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,\n\t 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,\n\t 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,\n\t 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,\n\t 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,\n\t 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,\n\t 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,\n\t 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,\n\t 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,\n\t 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,\n\t 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,\n\t 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,\n\t 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,\n\t 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,\n\t 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,\n\t 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,\n\t 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,\n\t 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 ],\n\t [ 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,\n\t 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,\n\t 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,\n\t 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,\n\t 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,\n\t 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,\n\t 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,\n\t 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,\n\t 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,\n\t 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,\n\t 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,\n\t 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,\n\t 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,\n\t 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,\n\t 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,\n\t 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,\n\t 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,\n\t 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,\n\t 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,\n\t 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,\n\t 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,\n\t 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,\n\t 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,\n\t 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,\n\t 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,\n\t 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,\n\t 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,\n\t 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,\n\t 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,\n\t 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,\n\t 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,\n\t 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,\n\t 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,\n\t 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,\n\t 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,\n\t 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,\n\t 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,\n\t 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,\n\t 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,\n\t 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,\n\t 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,\n\t 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,\n\t 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,\n\t 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,\n\t 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,\n\t 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,\n\t 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,\n\t 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,\n\t 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,\n\t 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,\n\t 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,\n\t 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,\n\t 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,\n\t 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,\n\t 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,\n\t 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,\n\t 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,\n\t 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,\n\t 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,\n\t 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,\n\t 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,\n\t 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,\n\t 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,\n\t 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 ],\n\t [ 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,\n\t 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,\n\t 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,\n\t 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,\n\t 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,\n\t 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,\n\t 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,\n\t 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,\n\t 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,\n\t 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,\n\t 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,\n\t 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,\n\t 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,\n\t 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,\n\t 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,\n\t 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,\n\t 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,\n\t 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,\n\t 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,\n\t 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,\n\t 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,\n\t 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,\n\t 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,\n\t 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,\n\t 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,\n\t 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,\n\t 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,\n\t 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,\n\t 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,\n\t 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,\n\t 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,\n\t 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,\n\t 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,\n\t 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,\n\t 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,\n\t 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,\n\t 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,\n\t 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,\n\t 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,\n\t 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,\n\t 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,\n\t 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,\n\t 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,\n\t 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,\n\t 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,\n\t 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,\n\t 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,\n\t 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,\n\t 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,\n\t 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,\n\t 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,\n\t 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,\n\t 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,\n\t 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,\n\t 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,\n\t 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,\n\t 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,\n\t 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,\n\t 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,\n\t 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,\n\t 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,\n\t 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,\n\t 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,\n\t 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 ]\n\t ];\n\n\t var BLOWFISH_CTX = {\n\t pbox: [],\n\t sbox: []\n\t }\n\n\t function F(ctx, x){\n\t let a = (x >> 24) & 0xFF;\n\t let b = (x >> 16) & 0xFF;\n\t let c = (x >> 8) & 0xFF;\n\t let d = x & 0xFF;\n\n\t let y = ctx.sbox[0][a] + ctx.sbox[1][b];\n\t y = y ^ ctx.sbox[2][c];\n\t y = y + ctx.sbox[3][d];\n\n\t return y;\n\t }\n\n\t function BlowFish_Encrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = 0; i < N; ++i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[N];\n\t Xl = Xl ^ ctx.pbox[N + 1];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t function BlowFish_Decrypt(ctx, left, right){\n\t let Xl = left;\n\t let Xr = right;\n\t let temp;\n\n\t for(let i = N + 1; i > 1; --i){\n\t Xl = Xl ^ ctx.pbox[i];\n\t Xr = F(ctx, Xl) ^ Xr;\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\t }\n\n\t temp = Xl;\n\t Xl = Xr;\n\t Xr = temp;\n\n\t Xr = Xr ^ ctx.pbox[1];\n\t Xl = Xl ^ ctx.pbox[0];\n\n\t return {left: Xl, right: Xr};\n\t }\n\n\t /**\n\t * Initialization ctx's pbox and sbox.\n\t *\n\t * @param {Object} ctx The object has pbox and sbox.\n\t * @param {Array} key An array of 32-bit words.\n\t * @param {int} keysize The length of the key.\n\t *\n\t * @example\n\t *\n\t * BlowFishInit(BLOWFISH_CTX, key, 128/32);\n\t */\n\t function BlowFishInit(ctx, key, keysize)\n\t {\n\t for(let Row = 0; Row < 4; Row++)\n\t {\n\t ctx.sbox[Row] = [];\n\t for(let Col = 0; Col < 256; Col++)\n\t {\n\t ctx.sbox[Row][Col] = ORIG_S[Row][Col];\n\t }\n\t }\n\n\t let keyIndex = 0;\n\t for(let index = 0; index < N + 2; index++)\n\t {\n\t ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];\n\t keyIndex++;\n\t if(keyIndex >= keysize)\n\t {\n\t keyIndex = 0;\n\t }\n\t }\n\n\t let Data1 = 0;\n\t let Data2 = 0;\n\t let res = 0;\n\t for(let i = 0; i < N + 2; i += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.pbox[i] = Data1;\n\t ctx.pbox[i + 1] = Data2;\n\t }\n\n\t for(let i = 0; i < 4; i++)\n\t {\n\t for(let j = 0; j < 256; j += 2)\n\t {\n\t res = BlowFish_Encrypt(ctx, Data1, Data2);\n\t Data1 = res.left;\n\t Data2 = res.right;\n\t ctx.sbox[i][j] = Data1;\n\t ctx.sbox[i][j + 1] = Data2;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t /**\n\t * Blowfish block cipher algorithm.\n\t */\n\t var Blowfish = C_algo.Blowfish = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t //Initialization pbox and sbox\n\t BlowFishInit(BLOWFISH_CTX, keyWords, keySize);\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);\n\t M[offset] = res.left;\n\t M[offset + 1] = res.right;\n\t },\n\n\t blockSize: 64/32,\n\n\t keySize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Blowfish.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Blowfish.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Blowfish = BlockCipher._createHelper(Blowfish);\n\t}());\n\n\n\treturn CryptoJS.Blowfish;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"), require(\"./blowfish\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\", \"./blowfish\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));","import CryptoJS from 'crypto-js';\n\nconst guid = function() {\n const b = new Uint8Array(16);\n crypto.getRandomValues(b);\n return Array.from(b, byte => byte.toString(16).padStart(2, '0')).join('');\n}\n\nconst RFC3339DateString = function(d) {\n const pad = function(n) {\n return n < 10 ? '0' + n : n\n }\n return d.getUTCFullYear()+'-'\n + pad(d.getUTCMonth()+1)+'-'\n + pad(d.getUTCDate())+'T'\n + pad(d.getUTCHours())+':'\n + pad(d.getUTCMinutes())+':'\n + pad(d.getUTCSeconds())+'Z'\n}\n\nconst getColorFromString = function(str) {\n return '#' + CryptoJS.SHA256(str).toString().substring(0, 6);\n}\n\nexport {\n guid,\n RFC3339DateString,\n getColorFromString\n}","import { Fragment } from \"prosemirror-model\";\nimport { TextSelection } from \"prosemirror-state\";\nimport { goToNextCell, moveCellForward, selectionCell } from \"prosemirror-tables\";\nimport { AttrStep } from \"prosemirror-transform\";\nimport { guid } from './utils.js';\n\n// function taken from prosemirror-commands (not exported) in order to check if a mark applies to a given selection or not\nexport function markApplies(doc, ranges, type) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\n\n// function to be applied with Command from transition-state (examples of commands can be seen from prosemirror-commands)\n// This function is to always apply a mark rather than just toggling\n// It is useful for colors/fonts where you choose a color or font size and it will be applied to entire selection no matter if the selection already has that exact mark\nexport function applyMarkToSelection(markType, attrs = null) {\n return function(state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType))\n return false;\n if (dispatch) {\n if ($cursor) {\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n } else {\n let tr = state.tr;\n dispatch(applyMark(tr, ranges, markType, attrs))\n }\n }\n return true;\n };\n}\n\nexport function applyMark(tr, ranges, markType, attrs = null) {\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let from = $from.pos, to = $to.pos;\n tr.addMark(from, to, markType.create(attrs));\n }\n return tr;\n}\n\n// function for removing a mark within a given selection\nexport function removeMarkFromSelection(markType) {\n return function(state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n if (dispatch) {\n if ($cursor) {\n dispatch(state.tr.removeStoredMark(markType));\n } else {\n dispatch(removeMark(state.tr, ranges, markType));\n }\n }\n\n return true;\n }\n}\n\nexport function removeMark(tr, ranges, markType) {\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n }\n for (var i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let from = $from.pos, to = $to.pos;\n tr.removeMark(from, to, markType);\n }\n\n return tr;\n}\n\nexport function toggleMark(markType, attrs) {\n return function(state, dispatch) {\n let {empty, $cursor, ranges} = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks())) {\n dispatch(state.tr.removeStoredMark(markType))\n } else {\n dispatch(state.tr.addStoredMark(markType.create(attrs)))\n }\n } else {\n let has = true;\n let tr = state.tr;\n for (let i = 0; has && i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n state.doc.nodesBetween($from.pos, $to.pos, (n, pos) => {\n if (n.isText) {\n has = has && markType.isInSet(n.marks);\n }\n });\n }\n for (let i = 0; i < ranges.length; i++) {\n let {$from, $to} = ranges[i]\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType)\n } else {\n let from = $from.pos, to = $to.pos\n tr.addMark(from, to, markType.create(attrs))\n }\n }\n dispatch(tr.scrollIntoView())\n }\n }\n return true\n }\n}\n\n\nexport function isNodeInSelection(nodeTypes, state) {\n if (typeof nodeTypes === 'string') {\n nodeTypes = [nodeTypes];\n }\n if (!Array.isArray(nodeTypes)) {\n throw 'nodeTypes must be of type Array or string';\n }\n\n let { $from, $to } = state.selection;\n\n let isNode = false;\n state.doc.nodesBetween($from.pos, $to.pos, (n, pos, par, i) => {\n if (nodeTypes.indexOf(n.type.name) > -1) {\n isNode = true;\n }\n });\n\n return isNode;\n}\n\n// convert a list block to a paragraph block\n// range = NodeRange of the selection being converted, tr = transaction from editor state\nexport function listToParagraph($from, $to, state, tr) {\n let paragraphs = [];\n let level = 1;\n tr.doc.nodesBetween($from.pos, $to.pos, (n, pos, par, ind) => {\n if (n.type.name == \"list_item\") {\n level = parseInt(par.attrs.level);\n } else if (par.type.name == \"list_item\") {\n let node = n.copy(n.content);\n node.attrs.textIndent = (level - 1) * 36 + \"pt\"\n paragraphs.push(node)\n }\n });\n let fromList = $from.blockRange($from, node => node.childCount > 0 && node.firstChild.type == state.schema.nodes.list_item);\n let toList = $to.blockRange($to, node => node.childCount > 0 && node.firstChild.type == state.schema.nodes.list_item);\n // if $from resolved position is the first list item of a list then it changes the logic of the indices since the `list` opening tag gets deleted as well\n let offset = fromList.startIndex == 0 ? -1 : 0;\n tr.replaceWith(fromList.start + offset, toList.end, paragraphs);\n tr.setSelection(\n TextSelection.near(\n tr.doc.resolve(fromList.start + offset)\n )\n )\n return tr;\n}\n\n// Function for handling the ordered list and bulleted list button clicks in toolbar\n// nodeType - NodeType from ProseMirror, which definitions are found in state.schema.nodes, listType = \"ordered\"/\"unordered\"\nexport function wrapInList(nodeType) {\n return function(state, dispatch) {\n let listType = (nodeType.name == \"ordered_list\") ? \"ordered\" : \"unordered\";\n let { $from, $to } = state.selection;\n // in a weird situation where pressing ctrl with click selects an entire node, so it isn't a text node\n if ($from.nodeAfter && $to.nodeBefore && $from.parent.type.name == $to.parent.type.name && $from.pos + $from.nodeAfter.nodeSize == $to.pos && $from.nodeAfter.eq($to.nodeBefore)) {\n $from = state.doc.resolve($from.pos + 1);\n $to = state.doc.resolve($to.pos - 1);\n }\n // if table is selection then have function return false to be disabled\n let range = $from.blockRange($to)\n if ([\"table_row\", \"table\", \"doc\"].indexOf(range.parent.type.name) > -1 && isNodeInSelection(\"table\", state)) {\n return false;\n }\n if (!dispatch) {\n return true;\n }\n let tr = state.tr;\n\n // get first ordered list\n let fromList = $from.blockRange($from, node => node.childCount > 0 && node.firstChild.type == state.schema.nodes.list_item);\n let toList = $to.blockRange($to, node => node.childCount > 0 && node.firstChild.type == state.schema.nodes.list_item);\n // check to see if there are any nodes splitting the list up\n let nodesBetweenList = false;\n tr.doc.nodesBetween($from.pos, $to.pos, (n, pos, par, i) => {\n if ((n.type.name == \"paragraph\" || n.type.name == \"heading\") && par.type.name != \"list_item\") {\n nodesBetweenList = true;\n }\n })\n\n // all selected nodes are list_items\n if (!nodesBetweenList && fromList && toList && fromList.parent.attrs.id == toList.parent.attrs.id) {\n\n // get pos of list\n let listPos = 0;\n tr.doc.nodesBetween($from.pos, $from.pos, (n, pos, par, i) => {\n if (n.type.name == \"ordered_list\" || n.type.name == \"bulleted_list\") {\n // tr.setNodeMarkup(pos, nodeType, n.attrs);\n listPos = pos;\n }\n })\n\n // if bullet icon selected and all list items are bullets or ordered icon selected and all list items are ordered, make paragraphs\n let sameType = true;\n let $pos = tr.doc.resolve(listPos);\n while ($pos.nodeAfter && ($pos.nodeAfter.type.name == \"ordered_list\" || $pos.nodeAfter.type.name == \"bulleted_list\")) {\n sameType = sameType && nodeType.name == $pos.nodeAfter.type.name;\n $pos = tr.doc.resolve($pos.pos + $pos.nodeAfter.nodeSize)\n if ($pos.pos > toList.end) {\n break;\n }\n }\n\n if (sameType) {\n tr = listToParagraph($from, $to, state, tr)\n } else {\n // get levels to change\n let levels = [];\n let listId;\n tr.doc.nodesBetween($from.pos, $to.pos, (n, pos, par, i) => {\n if (n.type.name == \"ordered_list\" || n.type.name == \"bulleted_list\") {\n levels.push(parseInt(n.attrs.level))\n listId = n.attrs.id;\n }\n })\n\n tr.doc.descendants((n, pos, par, i) => {\n // return false so the function doesn't keep descending further, when we know the ordered_list and bulleted_list won't be below paragraphs, headings and list_items\n if (n.type.name == \"paragraph\" || n.type.name == \"heading\" || n.type == \"list_item\") return false;\n if (n.type.name == \"ordered_list\" || n.type.name == \"bulleted_list\") {\n // only updating list with listId and same level\n let nLevel = parseInt(n.attrs.level);\n if (n.attrs.id != listId || levels.indexOf(nLevel) == -1) return false;\n tr.setNodeMarkup(pos, nodeType, n.attrs);\n }\n });\n }\n } else {\n let listItems = [];\n let id = guid();\n let nodes = [];\n state.doc.nodesBetween($from.pos, $to.pos, (n, pos, par, i) => {\n // if paragraph or heading and parent is not a list item\n if ((n.type.name == \"paragraph\" || n.type.name == \"heading\") && par.type.name != \"list_item\") {\n let textIndent = parseInt(n.attrs.textIndent);\n let pNode = n.copy(n.content);\n // don't have indentation for list items\n pNode.attrs.textIndent = \"0pt\";\n let node = nodeType.create({ id: id, level: (textIndent / 36) + 1 }, state.schema.nodes.list_item.create(undefined, pNode))\n nodes.push(node);\n } else if (n.type.name == \"list_item\") {\n // not setting the list item type attribute yet for undo history to work properly\n // calling `replace` step first and then after calling the AttrStep to separate the actions\n let li = n.copy(n.content)\n listItems.push(li);\n if (par.childCount == (i + 1) || (pos + n.nodeSize) >= $to.pos) {\n let node = nodeType.create({ id: id, level: par.attrs.level }, Fragment.fromArray(listItems))\n nodes.push(node);\n listItems = [];\n }\n }\n });\n var fromBlockRange = $from.blockRange($from);\n // by default the offset is just -1 if the starting selection is not within a list\n let fromOffset = -1\n if (fromBlockRange.parent.type.name == \"list_item\") {\n let listItemNode = state.doc.resolve(fromBlockRange.start);\n let listRange = listItemNode.blockRange(listItemNode);\n // if start of the selection is at the beginning of the list set offset to -3 otherwise it is in the middle of the list and set offset to -2\n fromOffset = (listRange.startIndex == 0) ? -3 : -2;\n }\n\n // check if selection ends in the middle of a list\n var toBlockRange = $to.blockRange($to);\n // by default the offset is just 0 if the ending selection is not within a list\n let toOffset = 0;\n if (toBlockRange.parent.type.name == \"list_item\") {\n let listItemNode = state.doc.resolve(toBlockRange.start);\n let listRange = listItemNode.blockRange(listItemNode);\n // if end of selection is in the middle of a list then add 2 for the toOffset\n toOffset = (listRange.parent.childCount > listRange.endIndex) ? 2 : 0;\n }\n\n\n let nodeSizes = nodes.map(x => x.nodeSize).reduce((a, b) => a + b, 0);\n let fromReplacementPos = $from.pos - $from.parentOffset + fromOffset;\n let toReplacementPos = $to.pos + $to.parent.content.size - $to.parentOffset + toOffset;\n tr.replaceWith(fromReplacementPos, toReplacementPos, nodes);\n // update the list item type attributes now that replacement step has been inserted in the transaction\n tr.doc.nodesBetween(fromReplacementPos, fromReplacementPos + nodeSizes, (n, pos, par, i) => {\n if (n.type.name == \"list_item\") {\n tr.step(new AttrStep(pos, \"type\", listType))\n }\n });\n\n // used for maintaining the correct text selection\n let fromSelectOffset = ($from.parent.type.name == \"paragraph\") ? 1 : 0;\n // keep same selection of text before operation\n tr.setSelection(\n TextSelection.between(\n tr.doc.resolve($from.pos - fromSelectOffset + fromOffset + toOffset + 1),\n tr.doc.resolve($to.pos - toReplacementPos + fromReplacementPos + nodeSizes - fromSelectOffset + 2*fromOffset)\n )\n );\n }\n tr.setMeta(\"wrapInList\", true);\n dispatch(tr);\n return true;\n }\n}\n\nexport function outdentListItem($from, $to, state, tr) {\n // copy functionality in google docs\n // after first paragraph/list item that has 0 indent (ie level 1 list item), no outdent takes place\n // outdenting only takes place for paragraphs/lists that happen before 0 indent item\n let noIndent = false;\n state.doc.nodesBetween($from.pos, $to.pos, (n, pos, par, i) => {\n if (noIndent) return false;\n // only paragraphs whose parent is not a list item\n if (n.type.name == \"paragraph\" && par.type.name != \"list_item\") {\n if (parseInt(n.attrs.textIndent) == 0) {\n noIndent = true;\n return false;\n }\n var newIndent = Math.max(0, parseInt(n.attrs.textIndent) - 36);\n tr.step(new AttrStep(tr.mapping.map(pos), \"textIndent\", newIndent + \"pt\"));\n } else if (n.type.name == \"list_item\") {\n if (parseInt(par.attrs.level) == 1) {\n noIndent = true;\n return false;\n }\n let newLevel = Math.max(parseInt(par.attrs.level) - 1, 1);\n\n let nodeAfter = tr.doc.resolve(tr.mapping.map(pos) + n.nodeSize).nodeAfter;\n if (nodeAfter) {\n tr.split(tr.mapping.map(pos) + n.nodeSize)\n }\n // if nodeBefore is null, then list_item is the first item in the list, and special handling required\n let nodeBefore = tr.doc.resolve(tr.mapping.map(pos)).nodeBefore\n if (nodeBefore) {\n // if it is not the first element in the list, then call `tr.split` in order to create a new ol/ul list\n tr.split(tr.mapping.map(pos), 1, [{type: state.schema.nodes.ordered_list, attrs: { id: par.attrs.id, level: newLevel, start: 1 } }]);\n } else {\n // if it is the first element in the list, then a call to `setNodeMarkup` is needed to update the ul/ol list (pos - 1)\n let listElems = document.querySelectorAll(`.ProseMirror[contenteditable=\"true\"] [data-id=\"${par.attrs.id}\"][data-level=\"${newLevel}\"]`);\n let nodeType;\n if (listElems.length > 0) {\n nodeType = listElems[0].tagName == \"OL\" ? state.schema.nodes.ordered_list : state.schema.nodes.bulleted_list;\n } else {\n // nodeType = par.type.name == \"ordered_list\" ? state.schema.nodes.ordered_list : state.schema.nodes.bulleted_list;\n listElems = document.querySelectorAll(`.ProseMirror[contenteditable=\"true\"] [data-id=\"${par.attrs.id}\"]`);\n nodeType = listElems[0] && listElems[0].tagName == \"OL\" ? state.schema.nodes.ordered_list : state.schema.nodes.bulleted_list;\n }\n tr.setNodeMarkup(tr.mapping.map(pos) - 1, nodeType, { id: par.attrs.id, level: newLevel, start: 1 })\n }\n }\n })\n\n return tr;\n}\n\n// Function for handling shift + tab for different elements in the document\n// block = boolean to determine whether to handle the entire block together (like when you click ordered list button) or just handle the exact cursor position (like pressing tab)\nexport function outdent(block) {\n return function (state, dispatch) {\n let { $from, $to, empty } = state.selection;\n // if a non-empty selection is made, selection menu overlay is shown and we want to loop focus from document to the menu overlay\n if (!empty && !block) {\n return false;\n }\n if (!dispatch) {\n return true;\n }\n let tr = state.tr;\n // boolean to handle entire block (node); if false it just treats the selection as text instead of taking the block as a whole\n let handleBlock = $from.parentOffset == 0 || block;\n let range = $from.blockRange($to);\n if (range.parent.type.name == \"table_cell\" || range.parent.type.name == \"table_header\") {\n goToNextCell(-1)(state, dispatch)\n return true;\n } else if (!handleBlock) {\n dispatch(tr.replaceSelectionWith(state.schema.text(\" \")));\n } else if (handleBlock) {\n tr = outdentListItem($from, $to, state, tr);\n // if any lists that are at the first level, then do nothing since it would result in a list that has a level < 1\n dispatch(tr);\n }\n return true;\n };\n}\n\n// Function for handling all tab indents for different nodes in the document\n// block = boolean to determine whether to handle the entire block together (like when you click ordered list button) or just handle the exact cursor position (like pressing tab)\nexport function indent(block) {\n if (typeof block == \"undefined\") {\n throw \"block is not defined\";\n }\n return function(state, dispatch) {\n let tr = state.tr;\n let { $from, $to, empty } = state.selection;\n // if a non-empty selection is made, selection menu overlay is shown and we want to loop focus from document to the menu overlay\n if (!empty && !block) {\n return false;\n }\n // if there is a excerpt selected then don't create indent with tabbing, but instead loop focus from document to excerpt manager overlay\n if (document.querySelector(\"span.excerpt-selected\")) {\n return false;\n }\n if (!dispatch) {\n return true;\n }\n // boolean to handle entire block (node); if false it just treats the selection as text instead of taking the block as a whole\n let handleBlock = $from.parentOffset == 0 || block;\n let range = $from.blockRange($to);\n // need to handle difference in cell with button click vs tab pressed\n if (range.parent.type.name == \"table_cell\" || range.parent.type.name == \"table_header\") {\n // check to see if it can go to next cell (ie not the end of the table)\n if (goToNextCell(1)(state, dispatch)) {\n return true;\n }\n const rect = selectedRect(state);\n tr = addRow(state.tr, rect, rect.bottom)\n const $cell = selectionCell(state);\n // get next cell for putting selection to newly appended row\n const $nextCell = moveCellForward($cell)\n dispatch(tr.setSelection(TextSelection.near(\n tr.doc.resolve($nextCell.pos)\n )))\n } else if (!handleBlock) {\n dispatch(tr.replaceSelectionWith(state.schema.text(\" \")));\n } else {\n state.doc.nodesBetween($from.pos - 1, $to.pos, (n, pos, par, i) => {\n if (n.type.name == \"paragraph\" && par.type.name != \"list_item\") {\n var newIndent = parseInt(n.attrs.textIndent) + 36;\n tr.step(new AttrStep(tr.mapping.map(pos), \"textIndent\", newIndent + \"pt\"));\n } else if (n.type.name == \"list_item\") {\n let newLevel = parseInt(par.attrs.level) + 1;\n // if there are other list_item nodes after, then split the list after the current list_item\n let nodeAfter = tr.doc.resolve(tr.mapping.map(pos) + n.nodeSize).nodeAfter;\n if (nodeAfter) {\n tr.split(tr.mapping.map(pos) + n.nodeSize)\n }\n\n // if it is the first element in the list, then a call to `setNodeMarkup` is needed to update the ul/ol list (pos - 1)\n let listElems = document.querySelectorAll(`.ProseMirror[contenteditable=\"true\"] [data-id=\"${par.attrs.id}\"][data-level=\"${newLevel}\"]`);\n let nodeType;\n if (listElems.length > 0) {\n nodeType = listElems[0].tagName == \"OL\" ? state.schema.nodes.ordered_list : state.schema.nodes.bulleted_list;\n } else {\n listElems = document.querySelectorAll(`.ProseMirror[contenteditable=\"true\"] [data-id=\"${par.attrs.id}\"]`);\n nodeType = listElems[0] && listElems[0].tagName == \"OL\" ? state.schema.nodes.ordered_list : state.schema.nodes.bulleted_list;\n }\n // if nodeBefore is null, then list_item is the first item in the list, and special handling required\n let nodeBefore = tr.doc.resolve(tr.mapping.map(pos)).nodeBefore\n if (nodeBefore) {\n // if it is not the first element in the list, then call `tr.split` in order to create a new ol/ul list\n tr.split(tr.mapping.map(pos), 1, [{type: nodeType, attrs: { id: par.attrs.id, level: newLevel, start: 1 } }]);\n } else {\n tr.setNodeMarkup(tr.mapping.map(pos) - 1, nodeType, { id: par.attrs.id, level: newLevel, start: 1 })\n }\n }\n })\n\n dispatch(tr);\n }\n\n return true;\n }\n}\n\n\n// handle dynamic number of row and cols for table insertion\n// row = number of rows, col = number of col\nexport function insertTable(row, col) {\n return function(state, dispatch) {\n const offset = state.tr.selection.anchor + 1;\n const transaction = state.tr;\n const cell = state.schema.nodes.table_cell.createAndFill();\n var table = [];\n for (var i = 0; i < row; i++) {\n var cells = Array(col).fill(cell);\n table.push(state.schema.nodes.table_row.create(undefined, Fragment.fromArray(cells)));\n }\n const node = state.schema.nodes.table.create(\n undefined,\n Fragment.fromArray(table)\n )\n\n if (dispatch) {\n dispatch(\n transaction\n .replaceSelectionWith(node)\n .scrollIntoView()\n .setSelection(\n TextSelection.near(\n transaction.doc.resolve(offset)\n )\n )\n );\n }\n\n return true;\n }\n}\n\n/// Returns a command that tries to set the selected textblocks to the\n/// given node type with the given attributes.\nexport function setNodeAttr(attrs) {\n return function(state, dispatch) {\n let attrsToSet = Object.keys(attrs);\n let applicable = false;\n // first loop to check if command is applicable\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from, $to } = state.selection.ranges[i];\n state.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (!node.isTextblock) return\n if (attrsToSet.every(x => Object.keys(node.attrs).indexOf(x) > -1)) {\n applicable = true;\n }\n })\n }\n if (!applicable) return false\n // second loop done if applicable and dispatch is passed\n if (dispatch) {\n let tr = state.tr\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from, $to } = state.selection.ranges[i];\n state.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (!node.isTextblock) return;\n if (!attrsToSet.every(x => Object.keys(node.attrs).indexOf(x) > -1)) return;\n for (let j in attrs) {\n tr.step(new AttrStep(pos, j, attrs[j]));\n }\n })\n }\n dispatch(tr.scrollIntoView())\n }\n return true\n }\n}","\n\n\n","import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`]($commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`]($commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.parent.isBlock)\n return false;\n if (dispatch) {\n let atEnd = $to.parentOffset == $to.parent.content.size;\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n let splitType = splitNode && splitNode($to.parent, atEnd);\n let types = splitType ? [splitType] : atEnd && deflt ? [{ type: deflt }] : undefined;\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\n if (deflt)\n types = [{ type: deflt }];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n let first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);\n if (deflt && $from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating)\n return false;\n if (joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt))\n tr.join(joinAt);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null) {\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let has = false, tr = state.tr;\n for (let i = 0; !has && i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n","import { keydownHandler } from 'prosemirror-keymap';\nimport { Selection, NodeSelection, TextSelection, Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n content() { return Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nSelection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating)\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating)\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\nexport { GapCursor, gapCursor };\n","import { Schema } from \"prosemirror-model\";\nimport { guid } from './utils.js';\n\n// find interaction between two arrays\nconst findIntersection = function(arr1, arr2) {\n // convert both arrays to sets to remove duplicates\n const set1 = new Set(arr1);\n const set2 = new Set(arr2);\n\n // create an empty array to store the intersection\n const intersection = [];\n // add any intersecting elements to the intersection array\n for (const element of set1) {\n if (set2.has(element)) {\n intersection.push(element);\n }\n }\n\n return intersection;\n}\n\n// Helper function for getting attributes for the Table Nodes\nconst getCellAttrs = function(dom) {\n let widthAttr = dom.getAttribute('data-colwidth');\n let widths =\n widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr)\n ? widthAttr.split(',').map((s) => Number(s))\n : null;\n let colspan = Number(dom.getAttribute('colspan') || 1);\n let result = {\n colspan,\n rowspan: Number(dom.getAttribute('rowspan') || 1),\n colwidth: widths && widths.length == colspan ? widths : null,\n };\n return result;\n}\n\n// Helper function for setting attributes for the Table Nodes\nconst setCellAttrs = function(node) {\n let attrs = {};\n if (node.attrs.colspan != 1) attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan != 1) attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth) attrs['data-colwidth'] = node.attrs.colwidth.join(',');\n return attrs;\n}\n\nexport function getDocumentSchema(store) {\n return new Schema({\n nodes: {\n doc: {content: \"block+ | (paragraph+ table paragraph+)\"},\n paragraph: {\n attrs: {\n textAlign: { default: \"left\" },\n textIndent: { default: \"0pt\" }\n },\n group: \"block\",\n content: \"inline*\",\n marks: \"_\",\n parseDOM: [\n {\n tag: \"p\",\n getAttrs: function(node) {\n return { textAlign: (node.style.textAlign) ? node.style.textAlign : \"left\", textIndent: (node.style.textIndent) ? node.style.textIndent : \"0pt\" }\n }\n }\n ],\n toDOM(node) {\n var style = \"\";\n if (node.attrs.textAlign != \"left\") {\n style += `text-align: ${node.attrs.textAlign};`;\n }\n if (node.attrs.textIndent != \"0pt\") {\n style += `text-indent: ${node.attrs.textIndent};`;\n }\n if (style != \"\") {\n return [\"p\", { style: style }, 0]\n } else {\n return [\"p\", 0]\n }\n }\n },\n heading: {\n attrs: {\n level: {default: 1},\n textAlign: { default: \"left\" },\n textIndent: { default: \"0pt\" }\n },\n content: \"inline*\",\n group: \"block\",\n defining: true,\n parseDOM: [\n {tag: \"h1\", attrs: {level: 1}, \n getAttrs: (node) => {\n return { textAlign: (node.style.textAlign) ? node.style.textAlign : \"left\", textIndent: (node.style.textIndent) ? node.style.textIndent : \"0pt\" }\n }\n },\n {tag: \"h2\", attrs: {level: 2}, \n getAttrs: (node) => {\n return { textAlign: (node.style.textAlign) ? node.style.textAlign : \"left\", textIndent: (node.style.textIndent) ? node.style.textIndent : \"0pt\" }\n }\n },\n {tag: \"h3\", attrs: {level: 3}, \n getAttrs: (node) => {\n return { textAlign: (node.style.textAlign) ? node.style.textAlign : \"left\", textIndent: (node.style.textIndent) ? node.style.textIndent : \"0pt\" }\n }\n },\n {tag: \"h4\", attrs: {level: 4}, \n getAttrs: (node) => {\n return { textAlign: (node.style.textAlign) ? node.style.textAlign : \"left\", textIndent: (node.style.textIndent) ? node.style.textIndent : \"0pt\" }\n }\n },\n {tag: \"h5\", attrs: {level: 5}, \n getAttrs: (node) => {\n return { textAlign: (node.style.textAlign) ? node.style.textAlign : \"left\", textIndent: (node.style.textIndent) ? node.style.textIndent : \"0pt\" }\n }\n },\n {tag: \"h6\", attrs: {level: 6}, \n getAttrs: (node) => {\n return { textAlign: (node.style.textAlign) ? node.style.textAlign : \"left\", textIndent: (node.style.textIndent) ? node.style.textIndent : \"0pt\" }\n }\n },\n ],\n toDOM(node) { \n var style = \"\";\n if (node.attrs.textAlign != \"left\") {\n style += `text-align: ${node.attrs.textAlign};`;\n }\n if (node.attrs.textIndent != \"0pt\") {\n style += `text-indent: ${node.attrs.textIndent};`;\n }\n if (style != \"\") {\n return [\"h\" + node.attrs.level, { style: style }, 0]\n } else {\n return [\"h\" + node.attrs.level, 0]\n }\n }\n },\n ordered_list: {\n attrs: {\n id: {},\n start: {default: \"1\"},\n level: {default: \"1\"}\n },\n parseDOM: [{\n tag: \"ol\",\n getAttrs: (node) => {\n if (!node.dataset.id) return false;\n return { id: node.dataset.id, start: node.start, level: node.dataset.level }\n }\n }],\n toDOM(node) {\n let level = parseInt(node.attrs.level);\n let symbols = [\"decimal\", \"lower-alpha\", \"lower-roman\"];\n let newSymbol = symbols[(level - 1) % symbols.length];\n let style = `--indent: ${parseInt(node.attrs.level) * 36}pt; --type: ${newSymbol}`;\n return [\"ol\", { class: \"pm-list\", start: node.attrs.start, \"data-id\": node.attrs.id, \"data-level\": node.attrs.level, style: style }, 0];\n },\n content: \"list_item+\",\n group: \"block\"\n },\n bulleted_list: {\n attrs: {\n id: {},\n start: {default: \"1\"},\n level: {default: \"1\"}\n },\n parseDOM: [{\n tag: \"ul\",\n getAttrs: (node) => {\n if (!node.dataset.id) return false;\n return { id: node.dataset.id, start: node.start, level: node.dataset.level }\n }\n }],\n toDOM(node) {\n let level = parseInt(node.attrs.level);\n let symbols = [\"disc\", \"circle\", \"square\"];\n let newSymbol = symbols[(level - 1) % symbols.length];\n let style = `--indent: ${parseInt(node.attrs.level) * 36}pt; --type: ${newSymbol}`;\n return [\"ul\", { class: \"pm-list\", start: node.attrs.start, \"data-id\": node.attrs.id, \"data-level\": node.attrs.level, style: style }, 0];\n },\n content: \"list_item+\",\n group: \"block\"\n },\n list_item: {\n parseDOM: [{tag: \"li\"}],\n toDOM(node) {\n return [\"li\", { role: \"listitem\", style: `margin-left: var(--indent); list-style-type: var(--type);` }, 0]\n },\n defining: true,\n content: \"(paragraph | heading) block*\"\n },\n table: {\n content: \"table_row+\",\n tableRole: \"table\",\n isolating: true,\n group: \"block\",\n parseDOM: [{ tag: \"table\" }],\n toDOM() {\n return [\"table\", [\"tbody\", 0]];\n },\n },\n table_row: {\n content: \"(table_cell | table_header)*\",\n tableRole: \"row\",\n parseDOM: [{ tag: \"tr\" }],\n toDOM() {\n return [\"tr\", 0];\n },\n },\n table_cell: {\n content: \"(paragraph | block)+\",\n attrs: {\n colspan: { default: 1 },\n rowspan: { default: 1 },\n colwidth: { default: null },\n },\n tableRole: \"cell\",\n isolating: true,\n parseDOM: [\n { tag: \"td\", getAttrs: (dom) => getCellAttrs(dom) },\n ],\n toDOM(node) {\n return [\"td\", setCellAttrs(node), 0];\n }\n },\n table_header: {\n content: \"paragraph block*\",\n attrs: {\n colspan: { default: 1 },\n rowspan: { default: 1 },\n colwidth: { default: null },\n },\n tableRole: \"header_cell\",\n isolating: true,\n parseDOM: [\n { tag: \"th\", getAttrs: (dom) => getCellAttrs(dom) },\n ],\n toDOM(node) {\n return [\"th\", setCellAttrs(node), 0];\n },\n },\n text: {group: \"inline\", inline: true}\n },\n // Ordering is important for the marks; Place the font_size and styles like text color first so marks like strikethrough are handled properly\n marks: {\n font_size: {\n attrs: {\n fontSize: { default: \"12\" },\n },\n parseDOM: [\n {\n style: 'font-size',\n getAttrs: function(fontSize) {\n let fs;\n if (fontSize.indexOf(\"pt\") > -1) {\n fs = parseInt(fontSize);\n } else if (fontSize.indexOf(\"px\") > -1) {\n fs = parseInt(fontSize) * .75;\n } else if (fontSize.indexOf(\"rem\") > -1) {\n fs = parseInt(fontSize) * 12;\n } else {\n // if not pt, px, rem then just return false\n return false;\n }\n // default is already 12pt so no need to add the span tags\n if (fs == 12) return false;\n return { fontSize: fs };\n },\n },\n ],\n toDOM(mark) {\n return ['span', { style: `font-size: ${mark.attrs.fontSize}pt;` }, 0];\n }\n },\n font_family: {\n attrs: {\n fontFamily: { default: \"\\\"Times New Roman\\\", Times, serif\" }\n },\n parseDOM: [\n {\n style: 'font-family',\n getAttrs: function(fontFamily) {\n let fontFamilies = [\"Arial, Helvetica, sans-serif\", \"\\\"Arial Black\\\", \\\"Arial Bold\\\", Gadget, sans-serif\", \"Calibri, sans-serif\", \"\\\"Comic Sans MS\\\", sans-serif\", \"\\\"Courier New\\\", courier\", \"Georgia, serif\", \"Helvetica\", \"Impact, Charcoal, sans-serif\", \"\\\"Lucida Console\\\", Monaco, monospace\", \"\\\"Lucida Sans Unicode\\\", \\\"Lucida Grande\\\", sans-serif\", \"\\\"Palatino Linotype\\\", \\\"Book Antiqua\\\", Palatino, serif\", \"Tahoma, Geneva, sans-serif\",\"\\\"Times New Roman\\\", Times, serif\", \"\\\"Trebuchet MS\\\", Helvetica, sans-serif\", \"Verdana, Geneva, sans-serif\"]\n let font = fontFamilies.indexOf(fontFamily) > -1 ? fontFamily : \"\\\"Times New Roman\\\", Times, serif\";\n // default is already `\"Times New Roman\", Times, serif` so no need to add the span tags\n if (font == \"\\\"Times New Roman\\\", Times, serif\") return false\n return { fontFamily: font };\n },\n },\n ],\n toDOM(mark) {\n return ['span', { style: `font-family: ${mark.attrs.fontFamily};` }, 0];\n }\n },\n background: {\n attrs: {\n background: { default: '#FFFF00' },\n },\n parseDOM: [\n {\n tag: 'mark',\n getAttrs: function(node) {\n return { background: (node.style.background == \"\") ? \"#FFFF00\" : node.style.background };\n },\n }\n ],\n toDOM(mark) {\n var style = \"\";\n if (mark.attrs.background != \"#FFFF00\") {\n style += `background: ${mark.attrs.background};`;\n }\n return ['mark', { style: style }, 0];\n }\n },\n color: {\n attrs: {\n color: { default: 'black' },\n },\n parseDOM: [\n {\n style: 'color',\n getAttrs: function(color) {\n // default is already black so no need to add the span tags\n if (color == \"black\" || color == \"#000000\" || color == \"rgb(0, 0, 0)\" ) return false;\n return { color: color };\n },\n },\n ],\n toDOM(mark) {\n return ['span', { style: `color: ${mark.attrs.color};` }, 0];\n }\n },\n strong: {\n parseDOM: [{tag: \"strong\"}, {tag: \"b\"}, {style: 'font-weight=700'}],\n toDOM(mark) { return [\"strong\", 0] }\n },\n em: {\n parseDOM: [{tag: \"em\"}, {tag: \"i\"}, {style: 'font-style=italic'}],\n toDOM(mark) { return [\"em\", 0] }\n },\n u: {\n parseDOM: [{tag: \"u\"}, {style: \"text-decoration=underline\"}],\n toDOM(mark) { return [\"u\", 0] }\n },\n sup: {\n parseDOM: [{tag: \"sup\"}, {style: \"vertical-align=super\"}],\n toDOM(mark) { return [\"sup\", 0] },\n excludes: \"sub\"\n },\n sub: {\n parseDOM: [{tag: \"sub\"}, {style: \"vertical-align=sub\"}],\n toDOM(mark) { return [\"sub\", 0] },\n excludes: \"sup\"\n },\n s: {\n parseDOM: [{tag: \"s\"}, {tag: \"del\"}, {style: \"text-decoration=strikethrough\"}],\n toDOM(mark) { return [\"s\", 0] }\n },\n // Excerpts are always last so they are always closest to the text itself\n excerpt: {\n attrs: {\n excerptId: {default: guid()},\n userId: {default: store.userInfo.id},\n codeIds: {default: \"\"},\n tags: {default: \"\"}\n },\n // empty string to allow multiple marks of the given type to coexist (as long as they have different attributes)\n excludes: \"\",\n parseDOM: [\n {\n tag: 'span.excerpt',\n getAttrs: function(node) {\n let codeIdsArr = (node.dataset.codeIds) ? node.dataset.codeIds.split(\",\"): [];\n codeIdsArr = findIntersection(codeIdsArr, store.activeProject.codes.map(x => x.id));\n return { excerptId: node.dataset.excerptId, userId: node.dataset.userId, codeIds: codeIdsArr.join(\",\"), tags: node.dataset.tags };\n },\n },\n ],\n toDOM(mark) {\n let span = document.createElement(\"SPAN\");\n span.dataset.excerptId = mark.attrs.excerptId;\n span.dataset.userId = mark.attrs.userId;\n span.dataset.codeIds = mark.attrs.codeIds;\n span.dataset.tags = mark.attrs.tags;\n span.classList.add(\"excerpt\");\n return span;\n },\n // custom property to have transformCopied remove from copied/cut slice\n ignoreOnPaste: true\n }\n },\n })\n}","\n\n\n","import { errors } from './errors.js';\nimport { useHttp } from './http.js'\nimport { guid, RFC3339DateString } from './utils.js';\n\nexport function useMemos(store, router) {\n const http = useHttp(store, router);\n\n async function createMemo(projectid, title, text, tags, createdAt) {\n createdAt = createdAt ?? new Date();\n\n if (title == \"\") {\n store.errorMessage = \"The Memo Title input is required.\"\n return;\n }\n\n if (createdAt < new Date('2000-01-01')) {\n store.errorMessage = \"The Memo Create Date cannot be older than January 1, 2000.\";\n return;\n }\n if (createdAt > new Date()) {\n store.errorMessage = \"The Memo Create Date cannot be in the future.\"\n return;\n }\n\n const memo = {\n projectId: projectid,\n id: guid(),\n title: title,\n text: text,\n createdAt: RFC3339DateString(createdAt),\n createdBy: store.userInfo.id,\n createdByEmail: store.userInfo.email,\n updatedAt: RFC3339DateString(new Date()),\n updatedBy: store.userInfo.id,\n tags: tags\n };\n\n await http.fetch('/api/create-memo', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n projectId: memo.projectId,\n id: memo.id,\n title: memo.title,\n text: memo.text,\n tags: memo.tags,\n createdAt: memo.createdAt,\n })\n }).then(function(res) {\n switch (res.status) {\n case 200:\n store.activeProject.memos.push(memo);\n break;\n case 400:\n res.json().then(function(data) {\n store.errorMessage = data.message;\n });\n break;\n case 401:\n router.push('/login');\n break;\n case 402:\n store.userInfo.hasAccess = false;\n router.push('/upgrade');\n break;\n case 500:\n store.errorMessage = errors.default;\n break;\n }\n });\n }\n\n return {\n createMemo\n }\n}\n","\n","import { useHttp } from './http.js';\nimport { errors } from './errors.js';\nimport { EditorState } from \"prosemirror-state\";\nimport { EditorView } from \"prosemirror-view\";\nimport { DOMParser } from \"prosemirror-model\";\nimport { getDocumentSchema } from \"../assets/prosemirror-doc-structure.js\";\n\nexport function getDiff(oldstr, newstr) {\n if (oldstr == newstr) {\n return null;\n }\n\n\n var oldarr = [];\n for (const c of oldstr) {\n oldarr.push(c);\n }\n\n var newarr = [];\n for (const c of newstr) {\n newarr.push(c);\n }\n\n var from = 0;\n while (from < oldarr.length && from < newarr.length) {\n if (oldarr[from] != newarr[from]) {\n break;\n }\n from++\n }\n\n var to1 = oldarr.length - 1;\n var to2 = newarr.length - 1;\n while (to1 >= from && to2 >= from) {\n if (oldarr[to1] != newarr[to2]) {\n break;\n }\n to1--;\n to2--;\n }\n\n var txt = '';\n for (let i = from; i < to2+1; i++) {\n txt = txt + newarr[i];\n }\n\n return {\n from: from,\n to: to1+1,\n text: txt\n }\n}\n\n// returns true if success and false on failure\nexport function deleteCodesInHTML(store, router, codes) {\n return replaceCodeIdsInHTML(store, router, codes);\n}\n// returns true if success and false on failure\nexport function mergeCodesInHTML(store, router, originalIds, targetId) {\n return replaceCodeIdsInHTML(store, router, originalIds, targetId);\n}\n// returns true if success and false on failure\nasync function replaceCodeIdsInHTML(store, router, originalIds, targetId) {\n if (!Array.isArray(originalIds)) {\n originalIds = [originalIds];\n }\n let div = document.createElement('div');\n let txRequests = [];\n store.activeProject.transcripts.forEach((transcript) => {\n div.innerHTML = transcript.html;\n // locate the excerpt spans and replace with their contents\n const selector = 'span.excerpt[data-code-ids*=\"' + originalIds.join('\"],span.excerpt[data-code-ids*=\"') + '\"]';\n let elems = div.querySelectorAll(selector);\n elems.forEach((elem) => {\n originalIds.forEach((originalId) => {\n let index = elem.dataset.codeIds.indexOf(originalId);\n if (index > -1) {\n // if code is first code in code-ids then return \"\" otherwise return first portion of remaining codes\n let first = (index > 0) ? elem.dataset.codeIds.slice(0, index - 1) : \"\";\n // if code is the last code in code-ids then return \"\" otherwise return second portion of codes\n let second = ((index + originalId.length) < elem.dataset.codeIds.length) ? elem.dataset.codeIds.slice(index + originalId.length) : \"\";\n elem.dataset.codeIds = first + second;\n }\n })\n\n // if target id is specified then add that in\n if (targetId) {\n elem.dataset.codeIds = (elem.dataset.codeIds == \"\") ? targetId : elem.dataset.codeIds + \",\" + targetId;\n } else if (elem.dataset.codeIds == \"\") {\n const fragment = document.createDocumentFragment();\n while (elem.firstChild) {\n fragment.appendChild(elem.firstChild);\n }\n elem.parentNode.replaceChild(fragment, elem);\n }\n })\n txRequests.push(saveTranscript(store, router, transcript.id, div.innerHTML));\n })\n let reqs = await Promise.all(txRequests)\n return reqs.every(x => x.status == 200);\n}\n\n// returns the request status code for saveTranscript call: 200 on success\nexport async function unassignCodeFromExcerpt(store, router, transcriptid, codeid, excerptid) {\n // load the html into a DOM tree\n let div = document.createElement('div');\n let tx = store.activeProject.transcripts.find(x => x.id == transcriptid);\n div.innerHTML = tx.html;\n\n // locate the excerpt spans and replace with their contents\n let elems = div.querySelectorAll(\"span.excerpt[data-excerpt-id='\" + excerptid + \"']\");\n\n let codes = [];\n\n for (let j = 0; j < elems.length; j++) {\n let codeIds = elems[j].getAttribute('data-code-ids').split(',');\n for (let c of codeIds) {\n if (c != \"\" && c != codeid && codes.indexOf(c) === -1) {\n codes.push(c);\n }\n }\n }\n\n if (codes.length == 0) {\n for (let j = 0; j < elems.length; j++) {\n elems[j].replaceWith(...elems[j].childNodes);\n }\n let res = await saveTranscript(store, router, transcriptid, div.innerHTML)\n return res.status;\n }\n\n for (let j = 0; j < elems.length; j++) {\n elems[j].setAttribute('data-code-ids', codes.join(\",\"));\n }\n\n // save the changes\n let res = await saveTranscript(store, router, transcriptid, div.innerHTML);\n return res.status;\n}\n\n// returns the request status code for saveTranscript call: 200 on success\nexport async function assignCodeToExcerpt(store, router, transcriptid, codeid, excerptid) {\n // load the html into a DOM tree\n let div = document.createElement('div');\n let tx = store.activeProject.transcripts.find(x => x.id == transcriptid);\n div.innerHTML = tx.html;\n\n // locate the excerpt spans and replace with their contents\n let elems = div.querySelectorAll(\"span.excerpt[data-excerpt-id='\" + excerptid + \"']\");\n\n let codes = [];\n\n for (let j = 0; j < elems.length; j++) {\n let codeIds = elems[j].getAttribute('data-code-ids').split(',');\n for (let c of codeIds) {\n if (c != \"\" && codes.indexOf(c) === -1) {\n codes.push(c);\n }\n }\n }\n if (codes.indexOf(codeid) > -1) {\n codes.push(codeid);\n }\n\n for (let j = 0; j < elems.length; j++) {\n elems[j].setAttribute('data-code-ids', codes.join(\",\"));\n }\n\n // save the changes\n let res = await saveTranscript(store, router, transcriptid, div.innerHTML);\n return res.status;\n}\n\n// returns the request status code for saveTranscript call: 200 on success\nexport async function updateCodesForExcerpt(store, router, transcriptid, codes, excerptid) {\n // load the html into a DOM tree\n let div = document.createElement('div');\n let tx = store.activeProject.transcripts.find(x => x.id == transcriptid);\n div.innerHTML = tx.html;\n\n // locate the excerpt spans and replace with their contents\n let elems = div.querySelectorAll(\"span.excerpt[data-excerpt-id='\" + excerptid + \"']\");\n\n // no codes so remove excerpts\n if (codes.length == 0) {\n for (let j = 0; j < elems.length; j++) {\n elems[j].replaceWith(...elems[j].childNodes);\n }\n let res = await saveTranscript(store, router, transcriptid, div.innerHTML);\n return res.status;\n }\n\n for (let j = 0; j < elems.length; j++) {\n elems[j].setAttribute('data-code-ids', codes.join(\",\"));\n }\n\n // save the changes\n let res = await saveTranscript(store, router, transcriptid, div.innerHTML);\n return res.status;\n}\n\n// returns the request status code for saveTranscript call: 200 on success\nexport async function removeTagFromExcerpt(store, router, transcriptid, tag, excerptid) {\n // load the html into a DOM tree\n let div = document.createElement('div');\n let tx = store.activeProject.transcripts.find(x => x.id == transcriptid);\n div.innerHTML = tx.html;\n\n // locate the excerpt spans and replace with their contents\n let elems = div.querySelectorAll(\"span.excerpt[data-excerpt-id='\" + excerptid + \"']\");\n for (let j = 0; j < elems.length; j++) {\n let tags = elems[j].getAttribute('data-tags');\n if (!tags) {\n continue;\n } else {\n let currentTags = tags.split(\",\");\n let index = currentTags.indexOf(tag);\n if (index !== -1) {\n currentTags.splice(index, 1);\n }\n tags = currentTags.join(\",\");\n }\n elems[j].setAttribute('data-tags', tags);\n }\n\n // save the changes\n let res = await saveTranscript(store, router, transcriptid, div.innerHTML);\n return res.status;\n}\n\n// returns the request status code for saveTranscript call: 200 on success\nexport async function addTagToExcerpt(store, router, transcriptid, tag, excerptid) {\n // load the html into a DOM tree\n let div = document.createElement('div');\n let tx = store.activeProject.transcripts.find(x => x.id == transcriptid);\n div.innerHTML = tx.html;\n\n // locate the excerpt spans and replace with their contents\n let elems = div.querySelectorAll(\"span.excerpt[data-excerpt-id='\" + excerptid + \"']\");\n for (let j = 0; j < elems.length; j++) {\n let tags = elems[j].getAttribute('data-tags');\n if (!tags) {\n tags = tag;\n } else {\n let currentTags = tags.split(\",\");\n let index = currentTags.indexOf(tag);\n if (index === -1) {\n currentTags.push(tag);\n }\n tags = currentTags.join(\",\");\n }\n elems[j].setAttribute('data-tags', tags);\n }\n\n // save the changes\n let res = await saveTranscript(store, router, transcriptid, div.innerHTML);\n return res.status;\n}\n\n// returns the request status code for saveTranscript call: 200 on success\nexport async function deleteExcerpt(store, router, transcriptid, excerptid) {\n // load the html into a DOM tree\n let div = document.createElement('div');\n let tx = store.activeProject.transcripts.find(x => x.id == transcriptid);\n div.innerHTML = tx.html;\n\n // locate the excerpt spans and replace with their contents\n let elems = div.querySelectorAll(\"span.excerpt[data-excerpt-id='\" + excerptid + \"']\");\n for (let j = 0; j < elems.length; j++) {\n elems[j].replaceWith(...elems[j].childNodes);\n }\n let res = await saveTranscript(store, router, transcriptid, div.innerHTML);\n return res.status;\n}\n\n// returns true if success and false on failure\nexport async function deleteExcerpts(store, router, excerptids) {\n let excerptMap = {};\n for (let i = 0; i < store.excerpts.length; i++) {\n excerptMap[store.excerpts[i].id] = store.excerpts[i];\n }\n\n let divs = {};\n for (let excerptid of excerptids) {\n if (!excerptMap[excerptid]) continue;\n let transcriptid = excerptMap[excerptid].transcript;\n if (!divs[transcriptid]) {\n divs[transcriptid] = document.createElement('div');\n let tx = store.activeProject.transcripts.find(x => x.id == transcriptid);\n divs[transcriptid].innerHTML = tx.html;\n }\n\n // locate the excerpt spans and replace with their contents\n let elems = divs[transcriptid].querySelectorAll('span.excerpt[data-excerpt-id=\"' + excerptid + '\"]');\n for (let j = 0; j < elems.length; j++) {\n elems[j].replaceWith(...elems[j].childNodes);\n }\n }\n\n let txRequests = [];\n for (let tx in divs) {\n // save the changes\n txRequests.push(saveTranscript(store, router, tx, divs[tx].innerHTML));\n }\n let reqs = await Promise.all(txRequests)\n return reqs.every(x => x.status == 200);\n}\n\n// returns the request status code for saveTranscript call: 200 on success\nexport async function saveTranscript(store, router, id, html) {\n const http = useHttp(store, router);\n\n let tx = store.activeProject.transcripts.find(x => x.id == id)\n if (!tx) {\n throw new Error(`Transcript with id = '${id}' not found`);\n }\n\n const documentSchema = getDocumentSchema(store);\n let div = document.createElement(\"DIV\");\n div.innerHTML = html;\n let pmDiv = document.createElement(\"DIV\");\n let state = EditorState.create({\n doc: DOMParser.fromSchema(documentSchema).parse(div)\n })\n // initialize the editor\n let view = new EditorView(pmDiv, {\n state: state,\n });\n\n var diff = getDiff(tx.html, view.dom.innerHTML);\n if (diff == null) {\n // return 200 to indicate success\n return { status: 200, sanitizedHTML: view.dom.innerHTML };\n }\n let req = await http.fetch('/api/update-transcript', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n projectId: store.activeProject.id,\n transcript: id,\n checksum: tx.checksum,\n from: diff.from,\n to: diff.to,\n text: diff.text\n })\n })\n\n switch (req.status) {\n case 200:\n let data = await req.json()\n tx.html = view.dom.innerHTML;\n tx.checksum = data.ETag;\n break\n case 400:\n let err = await req.json();\n store.errorMessage = err.message;\n break\n case 401:\n router.push('/login');\n break;\n case 402:\n store.userInfo.hasAccess = false;\n router.push('/upgrade');\n break;\n case 409:\n router.push('/projects');\n self.errorMessage = errors.locked;\n break;\n case 500:\n self.errorMessage = errors.default;\n break;\n }\n\n return { status: req.status, sanitizedHTML: view.dom.innerHTML }\n}","import { errors } from './errors.js';\nimport { useMemos } from './use-memos.js';\nimport { deleteCodesInHTML } from '../assets/save-transcript.js';\nimport { useHttp } from './http.js';\n\nexport function useCodebook(store, router, route) {\n const { createMemo } = useMemos(store, router);\n const http = useHttp(store, router);\n\n const deleteCodes = async function (ids) {\n let map = {};\n for (let id of ids) {\n map[id] = 0;\n }\n\n // find the number of excerpts per code\n for (let e of store.excerpts) {\n for (let c of e.codes) {\n if (ids.indexOf(c) !== -1) {\n map[c]++;\n }\n }\n }\n\n ids.sort((a, b) => map[a] - map[b]);\n\n ids = Object.keys(map);\n const res = await http.fetch('/api/delete-codes', {\n method: 'POST',\n headers: {'Content-Type': 'application/json'},\n body: JSON.stringify({\n projectId: route.params.id,\n codes: ids\n })\n })\n\n let deleted = [];\n switch (res.status) {\n case 200:\n for (let id of ids) {\n let index = store.activeProject.codes.findIndex(x => x.id == id);\n if (index > -1) {\n deleted.push(...store.activeProject.codes.splice(index, 1));\n }\n }\n await deleteCodesInHTML(store, router, ids);\n return true;\n case 400:\n let data = await res.json();\n store.errorMessage = data.message;\n break;\n case 401:\n router.push('/login');\n break;\n case 402:\n store.userInfo.hasAccess = false;\n router.push('/upgrade');\n break;\n case 409:\n router.push('/projects');\n store.errorMessage = errors.locked;\n break;\n case 500:\n store.errorMessage = errors.default;\n break;\n }\n\n return false;\n // if (deleted.length > 3) {\n // let str = `${deleted[0].name}\\n${deleted[1].name}\\n${deleted[2].name}\\n+ ${deleted.length - 3} More\\n`;\n // createMemo(route.params.id, `Deleted ${deleted.length} Code(s)`, str, [`Code Deletion`]);\n // } else {\n // let str = deleted.map(x => x.name).join('\\n') + '\\n';\n // createMemo(route.params.id, `Deleted ${deleted.length} Code(s)`, str, [`Code Deletion`]);\n // }\n }\n\n async function deleteThemes(ids) {\n let map = {};\n for (let id of ids) {\n map[id] = true;\n }\n const res = await http.fetch('/api/delete-themes', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n projectId: route.params.id,\n themes: Object.keys(map)\n })\n });\n\n let deleted = [];\n switch (res.status) {\n case 200:\n for (let id of ids) {\n let index = store.activeProject.themes.findIndex(x => x.id == id);\n if (index > -1) {\n deleted.push(...store.activeProject.themes.splice(index, 1));\n }\n }\n for (let i = 0; i < store.activeProject.codes.length; i++) {\n if (ids.indexOf(store.activeProject.codes[i].themeId) !== -1) {\n store.activeProject.codes[i].themeId = '';\n }\n }\n return true;\n case 400:\n let data = await res.json();\n store.errorMessage = data.message;\n break;\n case 401:\n router.push('/login');\n break;\n case 402:\n store.userInfo.hasAccess = false;\n router.push('/upgrade');\n break;\n case 409:\n router.push('/projects');\n store.errorMessage = errors.locked;\n break;\n case 500:\n store.errorMessage = errors.default;\n break;\n }\n\n return false;\n // if (deleted.length > 0) {\n // let deletedNames = deleted.map(x => x.name).join('\\n') + '\\n';\n // createMemo(route.params.id, `Deleted ${deleted.length} Theme(s)`, deletedNames, [`Theme Deletion`]);\n // }\n }\n\n return {\n deleteCodes,\n deleteThemes\n }\n}","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r\nimport { ref, computed } from 'vue';\nimport { useStore } from '../store.js';\nimport { useRouter } from 'vue-router';\nimport { unassignCodeFromExcerpt, updateCodesForExcerpt, removeTagFromExcerpt, addTagToExcerpt, deleteExcerpt } from '../assets/save-transcript.js';\nimport LoadingScreen from '../assets/loading-screen.js';\nimport Modal from './Modal.vue';\n\ndefineOptions({\n inheritAttrs: false\n})\nconst props = defineProps(['id']);\nconst emit = defineEmits(['close']);\n\nconst store = useStore();\nconst router = useRouter();\n\nconst activeModalView = ref(\"default\");\nconst selectCodesView = ref(false);\nconst selectedCodes = ref([]);\n\nconst activeExcerpt = computed(() => {\n return store.excerpts.find(x => x.id == props.id);\n});\n\nconst activeExcerptCodes = computed(() => {\n if (activeExcerpt.value) {\n return store.activeProject.codes.filter(x => activeExcerpt.value.codes.indexOf(x.id) !== -1);\n }\n return [];\n});\n\nfunction showSelectCodesView() {\n resetSelectedCodes();\n selectCodesView.value = true;\n}\n\nfunction cancelSelectCodes() {\n selectCodesView.value = false;\n}\n\nfunction resetSelectedCodes() {\n selectedCodes.value = JSON.parse(JSON.stringify(activeExcerpt.value.codes));\n}\n\nfunction toggleCode(e, code) {\n if (e.type == \"keydown\" && (e.keyCode != 13 && e.keyCode != 32)) return;\n if (selectedCodes.value.indexOf(code) == -1) {\n selectedCodes.value.push(code);\n } else {\n let index = selectedCodes.value.indexOf(code);\n if (index === -1) return;\n selectedCodes.value.splice(index, 1);\n }\n}\n\nasync function removeExcerpt(transcriptId, excerptId) {\n LoadingScreen.show();\n await deleteExcerpt(store, router, transcriptId, excerptId);\n emit('close');\n LoadingScreen.hide();\n}\n\nasync function unassignCode(transcriptId, codeId, excerptId) {\n LoadingScreen.show();\n await unassignCodeFromExcerpt(store, router, transcriptId, codeId, excerptId);\n // if undefined excerpt has been removed since no codes are assigned\n if (!activeExcerpt.value) {\n emit('close');\n }\n LoadingScreen.hide();\n}\n\nasync function updateCodes(transcriptId, codeIds, excerptId) {\n LoadingScreen.show();\n await updateCodesForExcerpt(store, router, transcriptId, codeIds, excerptId);\n // if undefined excerpt has been removed since no codes are assigned\n if (!activeExcerpt.value) {\n emit('close');\n }\n selectCodesView.value = false;\n LoadingScreen.hide();\n}\n\n// currentTags holds all tags from all excerpts in the entire project (for auto-complete behavior)\nconst currentTags = computed(() => {\n let out = [];\n for (let excerpt of store.excerpts) {\n if (excerpt.tags) {\n for (let tag of excerpt.tags) {\n if (out.indexOf(tag) === -1) {\n out.push(tag);\n }\n }\n }\n }\n return out;\n});\n\nconst newTagToAdd = ref('');\n\nconst addTag = async function(transcriptId, tag, excerptId) {\n LoadingScreen.show();\n await addTagToExcerpt(store, router, transcriptId, tag, excerptId);\n // clear the input\n newTagToAdd.value = '';\n LoadingScreen.hide();\n}\n\nconst removeTag = async function(transcriptId, tag, excerptId) {\n LoadingScreen.show();\n await removeTagFromExcerpt(store, router, transcriptId, tag, excerptId);\n LoadingScreen.hide();\n}\n\n\n\n\n","\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/*!\n * Chart.js v4.3.3\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */ function noop() {\n/* noop */ }\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */ const uid = (()=>{\n let id = 0;\n return ()=>id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */ function isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */ function isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */ function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */ function finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */ function valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension)=>typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */ function callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for(i = len - 1; i >= 0; i--){\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for(i = 0; i < len; i++){\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */ function _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for(i = 0, ilen = a0.length; i < ilen; ++i){\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */ function clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for(; k < klen; ++k){\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return [\n '__proto__',\n 'prototype',\n 'constructor'\n ].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */ function _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [\n source\n ];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for(let i = 0; i < ilen; ++i){\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for(let k = 0, klen = keys.length; k < klen; ++k){\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */ function _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */ function _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': (v)=>v,\n // default resolvers\n x: (o)=>o.x,\n y: (o)=>o.y\n};\n/**\n * @private\n */ function _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts){\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return (obj)=>{\n for (const k of keys){\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */ function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value)=>typeof value !== 'undefined';\nconst isFunction = (value)=>typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b)=>{\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a){\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */ function _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */ const PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */ function niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */ function _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for(i = 1; i < sqrt; i++){\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b)=>a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */ function _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for(i = 0, ilen = array.length; i < ilen; i++){\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */ function _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while(Math.round(x * e) / e !== x){\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */ function _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */ function _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */ function _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */ function _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */ function _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */ function _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index)=>table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while(hi - lo > 1){\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */ const _lookupByKey = (table, key, value, last)=>_lookup(table, value, last ? (index)=>{\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : (index)=>table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */ const _rlookupByKey = (table, key, value)=>_lookup(table, value, (index)=>table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */ function _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while(start < end && values[start] < min){\n start++;\n }\n while(end > start && values[end - 1] > max){\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = [\n 'push',\n 'pop',\n 'shift',\n 'splice',\n 'unshift'\n];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [\n listener\n ]\n }\n });\n arrayEvents.forEach((key)=>{\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value (...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object)=>{\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key)=>{\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */ function _arrayUnique(items) {\n const set = new Set(items);\n if (set.size === items.length) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/ const requestAnimFrame = function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */ function throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function(...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, ()=>{\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */ function debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */ const _toLeftRightCenter = (align)=>align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */ const _alignStartEnd = (align, start, end)=>align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */ const _textX = (align, left, right, rtl)=>{\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */ function _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const { iScale , _parsed } = meta;\n const axis = iScale.axis;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(// @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */ function _scaleRangesChanged(meta) {\n const { xScale , yScale , _scaleRanges } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t)=>t === 0 || t === 1;\nconst elasticIn = (t, s, p)=>-(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p)=>Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */ const effects = {\n linear: (t)=>t,\n easeInQuad: (t)=>t * t,\n easeOutQuad: (t)=>-t * (t - 2),\n easeInOutQuad: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t)=>t * t * t,\n easeOutCubic: (t)=>(t -= 1) * t * t + 1,\n easeInOutCubic: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t)=>t * t * t * t,\n easeOutQuart: (t)=>-((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t)=>t * t * t * t * t,\n easeOutQuint: (t)=>(t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t)=>(t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t)=>-Math.cos(t * HALF_PI) + 1,\n easeOutSine: (t)=>Math.sin(t * HALF_PI),\n easeInOutSine: (t)=>-0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: (t)=>t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t)=>t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t)=>atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t)=>t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t)=>Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t)=>(t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t)=>atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: (t)=>atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic (t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack (t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack (t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack (t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: (t)=>1 - effects.easeOutBounce(1 - t),\n easeOutBounce (t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: (t)=>t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst numbers = [\n 'x',\n 'y',\n 'borderWidth',\n 'radius',\n 'tension'\n];\nconst colors = [\n 'color',\n 'borderColor',\n 'backgroundColor'\n];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name)=>name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: (v)=>v | 0\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst formatters = {\n values (value) {\n return isArray(value) ? value : '' + value;\n },\n numeric (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic (tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([\n 1,\n 2,\n 3,\n 5,\n 10,\n 15\n ].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n var Ticks = {\n formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options)=>options.lineWidth,\n tickColor: (_ctx, options)=>options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name)=>!name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name)=>name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: (name)=>name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name)=>name !== 'backdropPadding'\n });\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n function getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for(let i = 0, n = keys.length; i < n; ++i){\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\n class Defaults {\n constructor(_descriptors, _appliers){\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context)=>context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options)=>getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options)=>getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options)=>getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get () {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set (value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach((apply)=>apply(this));\n }\n}\nvar defaults = /* #__PURE__ */ new Defaults({\n _scriptable: (name)=>!name.startsWith('on'),\n _indexable: (name)=>name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [\n applyAnimationsDefaults,\n applyLayoutsDefaults,\n applyScaleDefaults\n]);\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */ function toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n/**\n * @private\n */ function _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n/**\n * @private\n */ // eslint-disable-next-line complexity\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for(i = 0; i < ilen; i++){\n thing = arrayOfThings[i];\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for(j = 0, jlen = thing.length; j < jlen; j++){\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for(i = 0; i < gcLen; i++){\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */ function _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n/**\n * Clears the entire canvas.\n */ function clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n// eslint-disable-next-line complexity\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch(style){\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */ case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */ case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */ function _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */ function _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */ function _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */ const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */ function renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [\n text\n ];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for(i = 0; i < lines.length; ++i){\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */ function addRoundedRectPath(ctx, rect) {\n const { x , y , w , h , radius } = rect;\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */ function toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch(matches[3]){\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = (v)=>+v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? (prop)=>valueOrDefault(value[prop], value[props[prop]]) : (prop)=>value[prop] : ()=>value;\n for (const prop of keys){\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */ function toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */ function toTRBLCorners(value) {\n return _readValueToProps(value, [\n 'topLeft',\n 'topRight',\n 'bottomLeft',\n 'bottomRight'\n ]);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */ function toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */ function toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */ function resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for(i = 0, ilen = inputs.length; i < ilen; ++i){\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */ function _addGrace(minmax, grace, beginAtZero) {\n const { min , max } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add)=>beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */ function _createResolver(scopes, prefixes = [\n ''\n], rootScopes, fallback, getTarget = ()=>scopes[0]) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope)=>_createResolver([\n scope,\n ...scopes\n ], prefixes, finalRootScopes, fallback)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop) {\n return _cached(target, prop, ()=>_resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys (target) {\n return getKeysFromAllScopes(target);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */ function _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx)=>_attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope)=>_attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */ deleteProperty (target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n /**\n * A trap for getting property values.\n */ get (target, prop, receiver) {\n return _cached(target, prop, ()=>_resolveWithContext(target, prop, receiver));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */ getOwnPropertyDescriptor (target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */ getPrototypeOf () {\n return Reflect.getPrototypeOf(proxy);\n },\n /**\n * A trap for the in operator.\n */ has (target, prop) {\n return Reflect.has(proxy, prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */ ownKeys () {\n return Reflect.ownKeys(proxy);\n },\n /**\n * A trap for setting property values.\n */ set (target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n });\n}\n/**\n * @private\n */ function _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const { _scriptable =defaults.scriptable , _indexable =defaults.indexable , _allKeys =defaults.allKeys } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : ()=>_scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : ()=>_indexable\n };\n}\nconst readKey = (prefix, name)=>prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value)=>isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n let value = _proxy[prop]; // resolve from proxy\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n const { _proxy , _context , _subProxy , _stack } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const { _proxy , _context , _subProxy , _descriptors: descriptors } = target;\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter((s)=>s !== arr);\n value = [];\n for (const item of arr){\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent)=>key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes){\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [\n ...parentScopes,\n ...rootScopes\n ];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [\n ''\n ], rootScopes, fallback, ()=>subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while(key){\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes){\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes){\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes){\n for (const key of Object.keys(scope).filter((k)=>!k.startsWith('_'))){\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const { iScale } = meta;\n const { key ='r' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i)=>i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis)=>indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */ function monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen - 1; ++i){\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(let i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */ function splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for(i = 0; i < pointsLen; ++i){\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for(i = 0, ilen = points.length; i < ilen; ++i){\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */ function _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt)=>!pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for(i = 0, ilen = points.length; i < ilen; ++i){\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */ function _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */ function _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */ function parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element)=>element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = [\n 'top',\n 'right',\n 'bottom',\n 'left'\n];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for(let i = 0; i < 4; i++){\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target)=>(x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */ function getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const { offsetX , offsetY } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */ function getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const { canvas , currentDevicePixelRatio } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const { x , y , box } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let { width , height } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = (v)=>Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let { width , height } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */ function retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */ const supportsEventListenerOptions = function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive () {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */ function readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */ function _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */ function _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */ function _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x (x) {\n return rectX + rectX + width - x;\n },\n setWidth (w) {\n width = w;\n },\n textAlign (align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus (x, value) {\n return x - value;\n },\n leftForLtr (x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x (x) {\n return x;\n },\n setWidth (w) {},\n textAlign (align) {\n return align;\n },\n xPlus (x, value) {\n return x + value;\n },\n leftForLtr (x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction')\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b)=>a - b,\n normalize: (x)=>x\n };\n}\nfunction normalizeSegment({ start , end , count , loop , style }) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const { property , start: startBound , end: endBound } = bounds;\n const { between , normalize } = propertyFn(property);\n const count = points.length;\n let { start , end , loop } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for(i = 0, ilen = count; i < ilen; ++i){\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n function _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [\n segment\n ];\n }\n const { property , start: startBound , end: endBound } = bounds;\n const count = points.length;\n const { compare , between , normalize } = propertyFn(property);\n const { start , end , loop , style } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = ()=>between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = ()=>compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = ()=>inside || startIsBefore();\n const shouldStop = ()=>!inside || endIsBefore();\n for(let i = start, prev = start; i <= end; ++i){\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\n function _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for(let i = 0; i < segments.length; i++){\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\n function findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while(start < count && !points[start].skip){\n start++;\n }\n }\n while(start < count && points[start].skip){\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while(end > start && points[end % count].skip){\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\n function solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for(end = start + 1; end <= max; ++end){\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\n function _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const { start , end } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [\n {\n start,\n end,\n loop\n }\n ], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n function splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n function doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const { _datasetIndex: datasetIndex , options: { spanGaps } } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while(points[s % count].skip){\n s -= dir;\n }\n while(points[e % count].skip){\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments){\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for(i = start + 1; i <= segment.end; i++){\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n//# sourceMappingURL=helpers.segment.js.map\n","/*!\n * Chart.js v4.3.3\n * https://www.chartjs.org\n * (c) 2023 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nclass Animator {\n constructor(){\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach((fn)=>fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, ()=>{\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart)=>{\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for(; i >= 0; --i){\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur)=>Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for(; i >= 0; --i){\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */ new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean (from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color (from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number (from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to){\n const currentValue = target[prop];\n to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n const from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([\n cfg.to,\n to,\n currentValue,\n cfg.from\n ]);\n this._from = resolve([\n cfg.from,\n currentValue,\n to\n ]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej)=>{\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for(let i = 0; i < promises.length; i++){\n promises[i][method]();\n }\n }\n}\n\nclass Animations {\n constructor(chart, config){\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach((key)=>{\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions){\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [\n key\n ]).forEach((prop)=>{\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(()=>{\n target.options = newOptions;\n }, ()=>{\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for(i = props.length - 1; i >= 0; --i){\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for(let i = 0; i < keys.length; i++){\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for(i = 0, ilen = keys.length; i < ilen; ++i){\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const { min , max , minDefined , maxDefined } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()){\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const { chart , _cachedMeta: meta } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const { iScale , vScale , index: datasetIndex } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for(let i = 0; i < ilen; ++i){\n const item = parsed[i];\n const { [iAxis]: index , [vAxis]: value } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter((key)=>scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items){\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = (mode)=>mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared)=>shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart)=>canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\nclass DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex){\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r)=>axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const { _cachedMeta: meta , _data: data } = this;\n const { iScale , _stacked } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = ()=>cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for(i = 0; i < count; ++i){\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const { xScale , yScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for(i = 0, ilen = count; i < ilen; ++i){\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const { min: otherMin , max: otherMax } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for(i = 0; i < ilen; ++i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for(i = ilen - 1; i >= 0; --i){\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for(i = 0, ilen = parsed.length; i < ilen; ++i){\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for(i = start; i < start + count; ++i){\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for(i = 0; i < active.length; ++i){\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [\n `${elementType}Hover`,\n 'hover',\n elementType,\n ''\n ] : [\n elementType,\n ''\n ];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = ()=>this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList){\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr)=>{\n arr.length += count;\n for(i = arr.length - 1; i >= end; i--){\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for(i = start; i < end; ++i){\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([\n this.index,\n ...args\n ]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync([\n '_insertElements',\n this.getDataset().data.length - count,\n count\n ]);\n }\n _onDataPop() {\n this._sync([\n '_removeElements',\n this._cachedMeta.data.length - 1,\n 1\n ]);\n }\n _onDataShift() {\n this._sync([\n '_removeElements',\n 0,\n 1\n ]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync([\n '_removeElements',\n start,\n count\n ]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync([\n '_insertElements',\n start,\n newCount\n ]);\n }\n }\n _onDataUnshift() {\n this._sync([\n '_insertElements',\n 0,\n arguments.length\n ]);\n }\n}\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for(let i = 0, ilen = visibleMetas.length; i < ilen; i++){\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b)=>a - b));\n }\n return scale._cache.$bar;\n}\n function computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = ()=>{\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for(i = 0, ilen = values.length; i < ilen; ++i){\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for(i = 0, ilen = scale.ticks.length; i < ilen; ++i){\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\n function computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n function computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for(i = start, ilen = start + count; i < ilen; ++i){\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const { start , end , reverse , top , bottom } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, { inflateAmount }, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const { iScale , vScale } = meta;\n const { xAxisKey ='x' , yAxisKey ='y' } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for(i = start, ilen = start + count; i < ilen; ++i){\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const { iScale , vScale } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const { index , _cachedMeta: { vScale } } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n for(let i = start; i < start + count; i++){\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const { iScale } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter((meta)=>meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta)=>{\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets){\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for(i = 0, ilen = meta.data.length; i < ilen; ++i){\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const { _cachedMeta: { vScale , _stacked , index: datasetIndex } , options: { base: baseValue , minBarLength } } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for(; i < ilen; ++i){\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\n\nclass BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'borderWidth',\n 'radius'\n ]\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for(let i = 0; i < parsed.length; i++){\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b)=>_angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'circumference',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'startAngle',\n 'x',\n 'y',\n 'offset',\n 'borderWidth',\n 'spacing'\n ]\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: (name)=>name !== 'spacing',\n _indexable: (name)=>name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i)=>+data[i];\n if (isObject(data[start])) {\n const { key ='value' } = this._parsing;\n getter = (i)=>+resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for(i = start, ilen = start + count; i < ilen; ++i){\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for(let i = 0; i < this.chart.data.datasets.length; ++i){\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const { chartArea } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const { circumference , rotation } = this._getRotationExtents();\n const { ratioX , ratioY , offsetX , offsetY } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for(i = 0; i < start; ++i){\n startAngle += this._circumference(i, reset);\n }\n for(i = start; i < start + count; ++i){\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for(i = 0; i < metaData.length; i++){\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for(i = 0, ilen = chart.data.datasets.length; i < ilen; ++i){\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for(i = 0, ilen = arcs.length; i < ilen; ++i){\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for(let i = 0, ilen = arcs.length; i < ilen; ++i){\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for(let i = 0; i < datasetIndex; ++i){\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\n\nclass LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { dataset: line , data: points = [] , _dataset } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const { sharedOptions , includeOptions } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = 0; i < pointsCount; ++i){\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\n\nclass PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ]\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels (chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const { labels: { pointStyle , color } } = chart.legend.options;\n return data.labels.map((label, i)=>{\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick (e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex){\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index)=>{\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for(i = 0; i < start; ++i){\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for(i = start; i < start + count; i++){\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index)=>{\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\n\nclass PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n}\n\nclass RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for(let i = start; i < start + count; i++){\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\n\nclass ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const { xScale , yScale } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const { data: points = [] } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let { start , count } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n const { dataset: line , _dataset } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const { showLine } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const { iScale , vScale , _stacked , _dataset } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const { spanGaps , segment } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for(let i = start; i < start + count; ++i){\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for(let i = data.length - 1; i >= 0; --i){\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPieController: PieController,\nPolarAreaController: PolarAreaController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */ function abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */ class DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */ static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n options;\n constructor(options){\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const { controller , data , _sorted } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n function evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for(let i = 0, ilen = metasets.length; i < ilen; ++i){\n const { index , data } = metasets[i];\n const { lo , hi } = binarySearch(metasets[i], axis, value, intersect);\n for(let j = lo; j <= hi; ++j){\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n function getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n function getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n function getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const { startAngle , endAngle } = element.getProps([\n 'startAngle',\n 'endAngle'\n ], useFinalPosition);\n const { angle } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [\n {\n element,\n datasetIndex,\n index\n }\n ];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n function getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n function getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index)=>{\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n var Interaction = {\n evaluateInteractionItems,\n modes: {\n index (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta)=>{\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for(let i = 0; i < data.length; ++i){\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y (chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = [\n 'left',\n 'top',\n 'right',\n 'bottom'\n];\nfunction filterByPosition(array, position) {\n return array.filter((v)=>v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter((v)=>STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b)=>{\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for(i = 0, ilen = (boxes || []).length; i < ilen; ++i){\n box = boxes[i];\n ({ position: pos , options: { stack , stackWeight =1 } } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts){\n const { stack , pos , stackWeight } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n function setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const { vBoxMaxWidth , hBoxMaxHeight } = params;\n let i, ilen, layout;\n for(i = 0, ilen = layouts.length; i < ilen; ++i){\n layout = layouts[i];\n const { fullSize } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter((wrap)=>wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const { pos , box } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach((pos)=>{\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions([\n 'left',\n 'right'\n ]) : marginForPositions([\n 'top',\n 'bottom'\n ]);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for(i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i){\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const { same , other } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let { x , y } = chartArea;\n for (const layout of boxes){\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox (chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [\n {\n z: 0,\n draw (chartArea) {\n item.draw(chartArea);\n }\n }\n ];\n };\n chart.boxes.push(item);\n },\n removeBox (chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure (chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update (chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, (box)=>{\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap)=>wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, (layout)=>{\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\n const EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = (value)=>value === null || value === '';\n function initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const { x , y } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList){\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver((entries)=>{\n let trigger = false;\n for (const entry of entries){\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart)=>{\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height)=>{\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver((entries)=>{\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event)=>{\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n class DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n [\n 'height',\n 'width'\n ].forEach((prop)=>{\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key)=>{\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n x;\n y;\n active = false;\n options;\n $animations;\n tooltipPosition(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach((prop)=>{\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for(i = 0, ilen = numMajorIndices - 1; i < ilen; i++){\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n function calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for(let i = 0, ilen = factors.length - 1; i < ilen; i++){\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n function getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n function skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for(i = 0; i < ticks.length; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n function skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while(next < 0){\n count++;\n next = Math.round(start + count * spacing);\n }\n for(i = Math.max(start, 0); i < end; i++){\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n function getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for(diff = arr[0], i = 1; i < len; ++i){\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align)=>align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset)=>edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit)=>Math.min(maxTicksLimit || ticksLength, ticksLength);\n function sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for(; i < len; i += increment){\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n function getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n function garbageCollect(caches, length) {\n each(caches, (cache)=>{\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for(i = 0; i < gcLen; ++i){\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n function getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n function getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const { top , left , bottom , right , chart } = scale;\n const { chartArea , scales } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg){\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let { _userMin , _userMax , _suggestedMin , _suggestedMax } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for(let i = 0, ilen = metas.length; i < ilen; ++i){\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [\n this\n ]);\n }\n update(maxWidth, maxHeight, margins) {\n const { beginAtZero , grace , ticks: tickOpts } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [\n this\n ]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [\n this\n ]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [\n this\n ]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [\n this\n ]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [\n this\n ]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [\n tick.value,\n i,\n ticks\n ], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [\n this\n ]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [\n this\n ]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [\n this\n ]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [\n this\n ]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const { chart , options: { ticks: tickOpts , title: titleOpts , grid: gridOpts } } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const { first , last , widest , highest } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const { ticks: { align , padding } , position } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [\n this\n ]);\n }\n isHorizontal() {\n const { axis , position } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for(i = 0, ilen = ticks.length; i < ilen; i++){\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const { ctx , _longestTextCache: caches } = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for(i = 0; i < length; i += increment){\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for(j = 0, jlen = label.length; j < jlen; ++j){\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx)=>({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min , max } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const { grid , position , border } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for(i = 0; i < ticksLength; i += step){\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const { position , ticks: optionTicks } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const { align , crossAlign , padding , mirror } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch(textBaseline){\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch(textAlign){\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [\n x,\n y\n ],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const { position , ticks } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const { position , ticks: { crossAlign , mirror , padding } } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const { ctx , options: { backgroundColor } , left , top , width , height } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex((t)=>t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style)=>{\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for(i = 0, ilen = items.length; i < ilen; ++i){\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const { chart , ctx , options: { border , grid } } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items){\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const { ctx , options: { position , title , reverse } } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const { titleX , titleY , maxWidth , rotation } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [\n {\n z: tz,\n draw: (chartArea)=>{\n this.draw(chartArea);\n }\n }\n ];\n }\n return [\n {\n z: gz,\n draw: (chartArea)=>{\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n },\n {\n z: bz,\n draw: ()=>{\n this.drawBorder();\n }\n },\n {\n z: tz,\n draw: (chartArea)=>{\n this.drawLabels(chartArea);\n }\n }\n ];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override){\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach((property)=>{\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [\n scope\n ].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor(){\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [\n this.controllers,\n this.scales,\n this.elements\n ];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [\n ...args\n ].forEach((arg)=>{\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, (item)=>{\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for(let i = 0; i < this._typedRegistries.length; i++){\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */ new Registry();\n\nclass PluginService {\n constructor(){\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors){\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [\n chart,\n args,\n descriptor.options\n ];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n function allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for(let i = 0; i < keys.length; i++){\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for(let i = 0; i < local.length; i++){\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, { plugins , localIds }, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins){\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, { plugin , local }, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [\n ''\n ], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions){\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d)=>d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach((id)=>{\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [\n {\n axis\n },\n scaleConf,\n defaultScaleOptions[axis],\n defaultScaleOptions[defaultId]\n ]);\n });\n config.data.datasets.forEach((dataset)=>{\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach((defaultID)=>{\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [\n {\n axis\n },\n configScales[id],\n defaultScaleOptions[defaultID]\n ]);\n });\n });\n Object.keys(scales).forEach((key)=>{\n const scale = scales[key];\n mergeIf(scale, [\n defaults.scales[scale.type],\n defaults.scale\n ]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key)=>{\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config){\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, ()=>[\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, ()=>[\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, ()=>[\n [\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]\n ]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, ()=>[\n [\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || []\n ]\n ]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const { options , type } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach((keys)=>{\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach((key)=>addIfFound(scopes, mainScope, key));\n }\n keys.forEach((key)=>addIfFound(scopes, options, key));\n keys.forEach((key)=>addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach((key)=>addIfFound(scopes, defaults, key));\n keys.forEach((key)=>addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const { options , type } = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {\n type\n },\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = [\n ''\n ]) {\n const result = {\n $shared: true\n };\n const { resolver , subPrefixes } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names){\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [\n ''\n ], descriptorDefaults) {\n const { resolver } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter((p)=>!p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = (value)=>isObject(value) && Object.getOwnPropertyNames(value).reduce((acc, key)=>acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const { isScriptable , isIndexable } = _descriptors(proxy);\n for (const prop of names){\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"4.3.3\";\n\nconst KNOWN_POSITIONS = [\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'chartArea'\n];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [\n context\n ], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [\n context\n ], chart);\n}\n function getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key)=>{\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c)=>c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys){\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n function determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getDatasetArea(meta) {\n const { xScale , yScale } = meta;\n if (xScale && yScale) {\n return {\n left: xScale.left,\n right: xScale.right,\n top: yScale.top,\n bottom: yScale.bottom\n };\n }\n}\nclass Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig){\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce((mode)=>this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const { options: { aspectRatio , maintainAspectRatio } , width , height , _aspectRatio } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [\n this,\n newSize\n ], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID)=>{\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id)=>{\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map((id)=>{\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, (item)=>{\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id)=>{\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale)=>{\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b)=>a.index - b.index);\n if (numMeta > numData) {\n for(let i = numData; i < numMeta; ++i){\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: metasets , data: { datasets } } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index)=>{\n if (datasets.filter((x)=>x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for(i = 0, ilen = datasets.length; i < ilen; i++){\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const { datasetElementType , dataElementType } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex)=>{\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; i++){\n const { controller } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller)=>{\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const { _active , _lastEvent } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale)=>{\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const { _hiddenIndices } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const { method , start , count } of changes){\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx)=>new Set(_dataChanges.filter((c)=>c[0] === idx).map((c, i)=>i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for(let i = 1; i < datasetCount; i++){\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map((c)=>c.split(',')).map((a)=>({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box)=>{\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index)=>{\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this.getDatasetMeta(i).controller.configure();\n }\n for(let i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const { width , height } = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for(i = 0; i < layers.length && layers[i].z <= 0; ++i){\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for(; i < layers.length; ++i){\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for(i = 0, ilen = metasets.length; i < ilen; ++i){\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta) || this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter((x)=>x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update((ctx)=>ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for(i = 0, ilen = this.data.datasets.length; i < ilen; ++i){\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const { canvas , ctx } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y)=>{\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type)=>_add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener)=>{\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener)=>{\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height)=>{\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = ()=>{\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = ()=>{\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type)=>{\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter((p)=>p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b)=>a.filter((x)=>!b.some((y)=>x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin)=>(plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const { _active: lastActive = [] , options } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [\n e,\n active,\n this\n ], this);\n if (isClick) {\n callback(options.onClick, [\n e,\n active,\n this\n ], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart)=>chart._plugins.invalidate());\n}\n\nfunction clipArc(ctx, element, endAngle) {\n const { startAngle , pixelMargin , x , y , outerRadius , innerRadius } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, [\n 'outerStart',\n 'outerEnd',\n 'innerStart',\n 'innerEnd'\n ]);\n}\n/**\n * Parse border radius from the provided options\n */ function parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = (val)=>{\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */ function rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */ function pathArc(ctx, element, offset, spacing, end, circular) {\n const { x , y , startAngle: start , pixelMargin , innerRadius: innerR } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const { outerStart , outerEnd , innerStart , innerEnd } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const { fullCircles , startAngle , circumference , options } = element;\n const { borderWidth , borderJoinStyle , borderDash , borderDashOffset } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for(let i = 0; i < fullCircles; ++i){\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash'\n };\n circumference;\n endAngle;\n fullCircles;\n innerRadius;\n outerRadius;\n pixelMargin;\n startAngle;\n constructor(cfg){\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n const { angle , distance } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const { startAngle , endAngle , innerRadius , outerRadius , circumference } = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , startAngle , endAngle , innerRadius , outerRadius } = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius'\n ], useFinalPosition);\n const { offset , spacing } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const { options , circumference } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n function getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const { start: paramsStart = 0 , end: paramsEnd = count - 1 } = params;\n const { start: segmentStart , end: segmentEnd } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n function pathSegment(ctx, line, segment, params) {\n const { points , options } = line;\n const { count , start , loop , ilen } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let { move =true , reverse } = params || {};\n let i, point, prev;\n for(i = 0; i <= ilen; ++i){\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\n function fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const { count , start , ilen } = pathVars(points, segment, params);\n const { move =true , reverse } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index)=>(start + (reverse ? ilen - index : index)) % count;\n const drawX = ()=>{\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for(i = 0; i <= ilen; ++i){\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\n function _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n function _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const { segments , options } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments){\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: (name)=>name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg){\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for(i = 0, ilen = segments.length; i < ilen; ++i){\n const { start , end } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments){\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const { [axis]: value } = el.getProps([\n axis\n ], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n static id = 'point';\n parsed;\n skip;\n stop;\n /**\n * @type {any}\n */ static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */ static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y } = this.getProps([\n 'x',\n 'y'\n ], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n}\n\nfunction getBarBounds(bar, useFinalPosition) {\n const { x , y , base , width , height } = bar.getProps([\n 'x',\n 'y',\n 'base',\n 'width',\n 'height'\n ], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const { enableBorderRadius } = bar.getProps([\n 'enableBorderRadius'\n ]);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n function addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg){\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const { inflateAmount , options: { borderColor , backgroundColor } } = this;\n const { inner , outer } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const { x , y , base , horizontal } = this.getProps([\n 'x',\n 'y',\n 'base',\n 'horizontal'\n ], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nBarElement: BarElement,\nLineElement: LineElement,\nPointElement: PointElement\n});\n\nconst BORDER_COLORS = [\n 'rgb(54, 162, 235)',\n 'rgb(255, 99, 132)',\n 'rgb(255, 159, 64)',\n 'rgb(255, 205, 86)',\n 'rgb(75, 192, 192)',\n 'rgb(153, 102, 255)',\n 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */ BORDER_COLORS.map((color)=>color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(()=>getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex)=>{\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for(k in descriptors){\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout (chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const { data: { datasets } , options: chartOptions } = chart.config;\n const { elements } = chartOptions;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for(i = 0; i < samples - 2; i++){\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for(j = avgRangeStart; j < avgRangeEnd; j++){\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const { x: pointAx , y: pointAy } = data[a];\n maxArea = area = -1;\n for(j = rangeOffs; j < rangeTo; j++){\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for(i = start; i < start + count; ++i){\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset)=>{\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const { iScale } = meta;\n const { min , max , minDefined , maxDefined } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options)=>{\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex)=>{\n const { _data , indexAxis } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([\n indexAxis,\n chart.options.indexAxis\n ]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let { start , count } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch(options.algorithm){\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy (chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments){\n let { start , end } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments){\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources){\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const { x =null , y =null } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({ start , end })=>{\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for(; end > start; end--){\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [\n index\n ];\n let target;\n if (!propagate) {\n return fill;\n }\n while(fill !== false && visited.indexOf(fill) === -1){\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\n function _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return [\n 'origin',\n 'start',\n 'end',\n 'stack',\n 'shape'\n ].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\n function _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\n function _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\n function parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const { scale , index , line } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n for(let j = segment.start; j <= segment.end; j++){\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\n function getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for(let i = 0; i < metas.length; i++){\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\n function addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for(let j = 0; j < linesBelow.length; j++){\n const line = linesBelow[j];\n const { first , last , point } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\n function findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for(let i = 0; i < segments.length; i++){\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\n\nclass simpleArc {\n constructor(opts){\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const { x , y , radius } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const { x , y , radius } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const { chart , fill , line } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\n function getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const { scale ={} , fill } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const { scale , fill } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for(let i = 0; i < length; ++i){\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const { line , scale , axis } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const { above =color , below =color } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const { line , target , above , below , area , scale } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const { segments , points } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments){\n const { start , end } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const { line , target , property , color , scale } = cfg;\n const segments = _segments(line, target, property);\n for (const { source: src , target: tgt , start , end } of segments){\n const { style: { backgroundColor =color } = {} } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const { top , bottom } = scale.chart.chartArea;\n const { property , start , end } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate (chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for(i = 0; i < count; ++i){\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for(i = 0; i < count; ++i){\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw (chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw (chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for(let i = metasets.length - 1; i >= 0; --i){\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw (chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize)=>{\n let { boxHeight =fontSize , boxWidth =fontSize } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b)=>a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config){\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [\n this.chart\n ], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item)=>labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b)=>labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const { options , ctx } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const { boxWidth , itemHeight } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const { ctx , maxWidth , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [\n 0\n ];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i)=>{\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const { ctx , maxHeight , options: { labels: { padding } } } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i)=>{\n const { itemWidth , itemHeight } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const { legendHitBoxes: hitboxes , options: { align , labels: { padding } , rtl } } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes){\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes){\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const { options: opts , columnSizes , lineWidths , ctx } = this;\n const { align , labels: labelOpts } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const { padding } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const { boxWidth , boxHeight , itemHeight } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i)=>{\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size)=>Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for(i = 0; i < lh.length; ++i){\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [\n e,\n previous,\n this\n ], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [\n e,\n hoveredItem,\n this\n ], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [\n e,\n hoveredItem,\n this\n ], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b)=>a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start (chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop (chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate (chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate (chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent (chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick (e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx)=>ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels (chart) {\n const datasets = chart.data.datasets;\n const { labels: { usePointStyle , pointStyle , textAlign , color , useBorderRadius , borderRadius } } = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta)=>{\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx)=>ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: (name)=>!name.startsWith('on'),\n labels: {\n _scriptable: (name)=>![\n 'generateLabels',\n 'filter',\n 'sort'\n ].includes(name)\n }\n }\n};\n\nclass Title extends Element {\n constructor(config){\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const { top , left , bottom , right , options } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const { titleX , titleY , maxWidth , rotation } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [\n titleX,\n titleY\n ]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start (chart, _args, options) {\n createTitle(chart, options);\n },\n stop (chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate (chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start (chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop (chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate (chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\n\nconst positioners = {\n average (items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest (items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for(i = 0, len = items.length; i < len; ++i){\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\n function splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n function createTooltipItem(chart, item) {\n const { element , datasetIndex , index } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const { label , value } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n function getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const { body , footer , title } = tooltip;\n const { boxWidth , boxHeight } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem)=>count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, (bodyItem)=>{\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const { y , height } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const { x , width } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const { x , width } = size;\n const { width: chartWidth , chartArea: { left , right } } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\n function determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let { x , width } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let { y , height } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\n function getBackgroundPoint(options, size, alignment, chart) {\n const { caretSize , caretPadding , cornerRadius } = options;\n const { xAlign , yAlign } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n function getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title (tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label (tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor () {\n return this.options.bodyColor;\n },\n labelPointStyle (tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n function invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nclass Tooltip extends Element {\n static positioners = positioners;\n constructor(config){\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const { callbacks } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const { callbacks } = options;\n const bodyItems = [];\n each(tooltipItems, (context)=>{\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const { callbacks } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for(i = 0, len = active.length; i < len; ++i){\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array)=>options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b)=>options.itemSort(a, b, data));\n }\n each(tooltipItems, (context)=>{\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const { xAlign , yAlign } = this;\n const { caretSize , cornerRadius } = options;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(cornerRadius);\n const { x: ptX , y: ptY } = tooltipPoint;\n const { width , height } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const { boxHeight , boxWidth } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const { body } = this;\n const { bodySpacing , bodyAlign , displayColors , boxHeight , boxWidth , boxPadding } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for(i = 0, ilen = body.length; i < ilen; ++i){\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for(j = 0, jlen = lines.length; j < jlen; ++j){\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for(i = 0; i < length; ++i){\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const { xAlign , yAlign } = this;\n const { x , y } = pt;\n const { width , height } = tooltipSize;\n const { topLeft , topRight , bottomLeft , bottomRight } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({ datasetIndex , index })=>{\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const { caretX , caretY , options } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit (chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset (chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw (chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent (chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts)=>opts.bodyFont.size,\n boxWidth: (ctx, opts)=>opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: [\n 'x',\n 'y',\n 'width',\n 'height',\n 'caretX',\n 'caretY'\n ]\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name)=>name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: [\n 'interaction'\n ]\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nColors: plugin_colors,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels)=>{\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max)=>index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nclass CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg){\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const { index , label } of added){\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for(let value = min; value <= max; value++){\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const { bounds , step , min , max , precision , count , maxTicks , maxDigits , includeBounds } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const { min: rmin , max: rmax } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [\n {\n value: rmin\n },\n {\n value: rmax\n }\n ];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for(; j < numSpaces; ++j){\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, { horizontal , minRotation }) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const { beginAtZero } = this.options;\n const { minDefined , maxDefined } = this.getUserBounds();\n let { min , max } = this;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let { maxTicksLimit , stepSize } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n\nconst log10Floor = (v)=>Math.floor(log10(v));\nconst changeExponent = (v, m)=>Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while(steps(min, max, rangeExp) > 10){\n rangeExp++;\n }\n while(steps(min, max, rangeExp) < 10){\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n function generateTicks(generationOptions, { min , max }) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while(value < max){\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg){\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [\n raw,\n index\n ]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined , maxDefined } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = (v)=>min = minDefined ? min : v;\n const setMax = (v)=>max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [\n label\n ];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\n function fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for(let i = 0; i < valueCount; i++){\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const { extra , additionalAngle , padding , size } = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const { left , top , right , bottom } = item;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const { centerPointLabels , display } = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for(let i = 0; i < valueCount; i++){\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const { left , top , right , bottom } = item;\n const { backdropColor } = opts;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some((v)=>v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const { ctx , options: { pointLabels } } = scale;\n for(let i = labelCount - 1; i >= 0; i--){\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const { x , y , textAlign } = item;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const { ctx } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for(let i = 1; i < labelCount; i++){\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const { color , lineWidth } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback (label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg){\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const { min , max } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index)=>{\n const label = callback(this.options.pointLabels.callback, [\n value,\n index\n ], this);\n return label || label === 0 ? label : '';\n }).filter((v, i)=>this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const { left , top , right , bottom } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const { backgroundColor , grid: { circular } } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const { angleLines , grid , border } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index)=>{\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for(i = labelCount - 1; i >= 0; i--){\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const { color , lineWidth } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index)=>{\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\n\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\n const UNITS = /* #__PURE__ */ Object.keys(INTERVALS);\n function sorter(a, b) {\n return a - b;\n}\n function parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const { parser , round , isoWeekday } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\n function determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for(let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i){\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\n function determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for(let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--){\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n function determineMajorUnit(unit) {\n for(let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i){\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n function addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const { lo , hi } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n function setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for(major = first; major <= last; major = +adapter.add(major, 1, majorUnit)){\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n function ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for(i = 0; i < ilen; ++i){\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props){\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let { min , max , minDefined , maxDefined } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map((tick)=>+tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for(time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++){\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(sorter).map((x)=>+x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [\n time,\n index,\n ticks\n ], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for(i = 0, ilen = ticks.length; i < ilen; ++i){\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [\n exampleTime\n ], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for(i = 0, ilen = metas.length; i < ilen; ++i){\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for(i = 0, ilen = labels.length; i < ilen; ++i){\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({ lo , hi } = _lookupByKey(table, 'pos', val));\n }\n ({ pos: prevSource , time: prevTarget } = table[lo]);\n ({ pos: nextSource , time: nextTarget } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({ lo , hi } = _lookupByKey(table, 'time', val));\n }\n ({ time: prevSource , pos: prevTarget } = table[lo]);\n ({ time: nextSource , pos: nextTarget } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props){\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const { min , max } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for(i = 0, ilen = timestamps.length; i < ilen; ++i){\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {\n time: min,\n pos: 0\n },\n {\n time: max,\n pos: 1\n }\n ];\n }\n for(i = 0, ilen = items.length; i < ilen; ++i){\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b)=>a - b);\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };\n//# sourceMappingURL=chart.js.map\n","/**\n * @sgratzl/boxplots\n * https://github.com/sgratzl/boxplots\n *\n * Copyright (c) 2021 Samuel Gratzl \n */\n\nconst HELPER = Math.sqrt(2 * Math.PI);\nfunction gaussian(u) {\n return Math.exp(-0.5 * u * u) / HELPER;\n}\nfunction toSampleVariance(variance, len) {\n return (variance * len) / (len - 1);\n}\nfunction nrd(iqr, variance, len) {\n let s = Math.sqrt(toSampleVariance(variance, len));\n if (typeof iqr === 'number') {\n s = Math.min(s, iqr / 1.34);\n }\n return 1.06 * s * Math.pow(len, -0.2);\n}\nfunction kde(stats) {\n const len = stats.items.length;\n const bandwidth = nrd(stats.iqr, stats.variance, len);\n return (x) => {\n let i = 0;\n let sum = 0;\n for (i = 0; i < len; i++) {\n const v = stats.items[i];\n sum += gaussian((x - v) / bandwidth);\n }\n return sum / bandwidth / len;\n };\n}\n\nfunction quantilesInterpolate(arr, length, interpolate) {\n const n1 = length - 1;\n const compute = (q) => {\n const index = q * n1;\n const lo = Math.floor(index);\n const h = index - lo;\n const a = arr[lo];\n return h === 0 ? a : interpolate(a, arr[Math.min(lo + 1, n1)], h);\n };\n return {\n q1: compute(0.25),\n median: compute(0.5),\n q3: compute(0.75),\n };\n}\nfunction quantilesType7(arr, length = arr.length) {\n return quantilesInterpolate(arr, length, (a, b, alpha) => a + alpha * (b - a));\n}\nfunction quantilesLinear(arr, length = arr.length) {\n return quantilesInterpolate(arr, length, (i, j, fraction) => i + (j - i) * fraction);\n}\nfunction quantilesLower(arr, length = arr.length) {\n return quantilesInterpolate(arr, length, (i) => i);\n}\nfunction quantilesHigher(arr, length = arr.length) {\n return quantilesInterpolate(arr, length, (_, j) => j);\n}\nfunction quantilesNearest(arr, length = arr.length) {\n return quantilesInterpolate(arr, length, (i, j, fraction) => (fraction < 0.5 ? i : j));\n}\nfunction quantilesMidpoint(arr, length = arr.length) {\n return quantilesInterpolate(arr, length, (i, j) => (i + j) * 0.5);\n}\nfunction quantilesFivenum(arr, length = arr.length) {\n const n = length;\n const n4 = Math.floor((n + 3) / 2) / 2;\n const compute = (d) => 0.5 * (arr[Math.floor(d) - 1] + arr[Math.ceil(d) - 1]);\n return {\n q1: compute(n4),\n median: compute((n + 1) / 2),\n q3: compute(n + 1 - n4),\n };\n}\nfunction quantilesHinges(arr, length = arr.length) {\n return quantilesFivenum(arr, length);\n}\n\nfunction createSortedData(data) {\n let valid = 0;\n const { length } = data;\n const vs = data instanceof Float64Array ? new Float64Array(length) : new Float32Array(length);\n for (let i = 0; i < length; i += 1) {\n const v = data[i];\n if (v == null || Number.isNaN(v)) {\n continue;\n }\n vs[valid] = v;\n valid += 1;\n }\n const missing = length - valid;\n if (valid === 0) {\n return {\n min: Number.NaN,\n max: Number.NaN,\n missing,\n s: [],\n };\n }\n const validData = valid === length ? vs : vs.subarray(0, valid);\n validData.sort((a, b) => (a === b ? 0 : a < b ? -1 : 1));\n const min = validData[0];\n const max = validData[validData.length - 1];\n return {\n min,\n max,\n missing,\n s: validData,\n };\n}\nfunction withSortedData(data) {\n if (data.length === 0) {\n return {\n min: Number.NaN,\n max: Number.NaN,\n missing: 0,\n s: [],\n };\n }\n const min = data[0];\n const max = data[data.length - 1];\n return {\n min,\n max,\n missing: 0,\n s: data,\n };\n}\nfunction computeWhiskers(s, valid, min, max, { eps, quantiles, coef, whiskersMode }) {\n const same = (a, b) => Math.abs(a - b) < eps;\n const { median, q1, q3 } = quantiles(s, valid);\n const iqr = q3 - q1;\n const isCoefValid = typeof coef === 'number' && coef > 0;\n let whiskerLow = isCoefValid ? Math.max(min, q1 - coef * iqr) : min;\n let whiskerHigh = isCoefValid ? Math.min(max, q3 + coef * iqr) : max;\n const outlierLow = [];\n for (let i = 0; i < valid; i += 1) {\n const v = s[i];\n if (v >= whiskerLow || same(v, whiskerLow)) {\n if (whiskersMode === 'nearest') {\n whiskerLow = v;\n }\n break;\n }\n if (outlierLow.length === 0 || !same(outlierLow[outlierLow.length - 1], v)) {\n outlierLow.push(v);\n }\n }\n const reversedOutlierHigh = [];\n for (let i = valid - 1; i >= 0; i -= 1) {\n const v = s[i];\n if (v <= whiskerHigh || same(v, whiskerHigh)) {\n if (whiskersMode === 'nearest') {\n whiskerHigh = v;\n }\n break;\n }\n if ((reversedOutlierHigh.length === 0 || !same(reversedOutlierHigh[reversedOutlierHigh.length - 1], v)) &&\n (outlierLow.length === 0 || !same(outlierLow[outlierLow.length - 1], v))) {\n reversedOutlierHigh.push(v);\n }\n }\n const outlier = outlierLow.concat(reversedOutlierHigh.reverse());\n return {\n median,\n q1,\n q3,\n iqr,\n outlier,\n whiskerHigh,\n whiskerLow,\n };\n}\nfunction computeStats(s, valid) {\n let mean = 0;\n for (let i = 0; i < valid; i++) {\n const v = s[i];\n mean += v;\n }\n mean /= valid;\n let variance = 0;\n for (let i = 0; i < valid; i++) {\n const v = s[i];\n variance += (v - mean) * (v - mean);\n }\n variance /= valid;\n return {\n mean,\n variance,\n };\n}\nfunction boxplot(data, options = {}) {\n const fullOptions = {\n coef: 1.5,\n eps: 10e-3,\n quantiles: quantilesType7,\n validAndSorted: false,\n whiskersMode: 'nearest',\n ...options,\n };\n const { missing, s, min, max } = fullOptions.validAndSorted ? withSortedData(data) : createSortedData(data);\n const invalid = {\n min: Number.NaN,\n max: Number.NaN,\n mean: Number.NaN,\n missing,\n iqr: Number.NaN,\n count: data.length,\n whiskerHigh: Number.NaN,\n whiskerLow: Number.NaN,\n outlier: [],\n median: Number.NaN,\n q1: Number.NaN,\n q3: Number.NaN,\n variance: 0,\n items: [],\n kde: () => 0,\n };\n const valid = data.length - missing;\n if (valid === 0) {\n return invalid;\n }\n const result = {\n min,\n max,\n count: data.length,\n missing,\n items: s,\n ...computeStats(s, valid),\n ...computeWhiskers(s, valid, min, max, fullOptions),\n };\n return {\n ...result,\n kde: kde(result),\n };\n}\n\nexport { boxplot, boxplot as default, kde, quantilesFivenum, quantilesHigher, quantilesHinges, quantilesInterpolate, quantilesLinear, quantilesLower, quantilesMidpoint, quantilesNearest, quantilesType7 };\n//# sourceMappingURL=index.js.map\n","/**\n * @sgratzl/chartjs-chart-boxplot\n * https://github.com/sgratzl/chartjs-chart-boxplot\n *\n * Copyright (c) 2019-2023 Samuel Gratzl \n */\n\nimport { Element, BarElement, Tooltip, BarController, registry, Chart, LinearScale, CategoryScale } from 'chart.js';\nimport { drawPoint, formatNumber, merge } from 'chart.js/helpers';\nimport { quantilesType7, boxplot, quantilesHinges, quantilesFivenum, quantilesLinear, quantilesLower, quantilesHigher, quantilesNearest, quantilesMidpoint } from '@sgratzl/boxplots';\n\nfunction whiskers(boxplot, arr, coef = 1.5) {\n const iqr = boxplot.q3 - boxplot.q1;\n const coefValid = typeof coef === 'number' && coef > 0;\n let whiskerMin = coefValid ? Math.max(boxplot.min, boxplot.q1 - coef * iqr) : boxplot.min;\n let whiskerMax = coefValid ? Math.min(boxplot.max, boxplot.q3 + coef * iqr) : boxplot.max;\n if (Array.isArray(arr)) {\n for (let i = 0; i < arr.length; i += 1) {\n const v = arr[i];\n if (v >= whiskerMin) {\n whiskerMin = v;\n break;\n }\n }\n for (let i = arr.length - 1; i >= 0; i -= 1) {\n const v = arr[i];\n if (v <= whiskerMax) {\n whiskerMax = v;\n break;\n }\n }\n }\n return {\n whiskerMin,\n whiskerMax,\n };\n}\nconst defaultStatsOptions = {\n coef: 1.5,\n quantiles: 7,\n whiskersMode: 'nearest',\n};\nfunction determineQuantiles(q) {\n if (typeof q === 'function') {\n return q;\n }\n const lookup = {\n hinges: quantilesHinges,\n fivenum: quantilesFivenum,\n 7: quantilesType7,\n quantiles: quantilesType7,\n linear: quantilesLinear,\n lower: quantilesLower,\n higher: quantilesHigher,\n nearest: quantilesNearest,\n midpoint: quantilesMidpoint,\n };\n return lookup[q] || quantilesType7;\n}\nfunction determineStatsOptions(options) {\n const coef = options == null || typeof options.coef !== 'number' ? defaultStatsOptions.coef : options.coef;\n const q = options == null || options.quantiles == null ? quantilesType7 : options.quantiles;\n const quantiles = determineQuantiles(q);\n const whiskersMode = options == null || typeof options.whiskersMode !== 'string'\n ? defaultStatsOptions.whiskersMode\n : options.whiskersMode;\n return {\n coef,\n quantiles,\n whiskersMode,\n };\n}\nfunction boxplotStats(arr, options) {\n const vs = typeof Float64Array !== 'undefined' && !(arr instanceof Float32Array || arr instanceof Float64Array)\n ? Float64Array.from(arr)\n : arr;\n const r = boxplot(vs, determineStatsOptions(options));\n return {\n items: Array.from(r.items),\n outliers: r.outlier,\n whiskerMax: r.whiskerHigh,\n whiskerMin: r.whiskerLow,\n max: r.max,\n median: r.median,\n mean: r.mean,\n min: r.min,\n q1: r.q1,\n q3: r.q3,\n };\n}\nfunction computeSamples(min, max, points) {\n const range = max - min;\n const samples = [];\n const inc = range / points;\n for (let v = min; v <= max && inc > 0; v += inc) {\n samples.push(v);\n }\n if (samples[samples.length - 1] !== max) {\n samples.push(max);\n }\n return samples;\n}\nfunction violinStats(arr, options) {\n if (arr.length === 0) {\n return undefined;\n }\n const vs = typeof Float64Array !== 'undefined' && !(arr instanceof Float32Array || arr instanceof Float64Array)\n ? Float64Array.from(arr)\n : arr;\n const stats = boxplot(vs, determineStatsOptions(options));\n const samples = computeSamples(stats.min, stats.max, options.points);\n const coords = samples.map((v) => ({ v, estimate: stats.kde(v) }));\n const maxEstimate = coords.reduce((a, d) => Math.max(a, d.estimate), Number.NEGATIVE_INFINITY);\n return {\n max: stats.max,\n min: stats.min,\n mean: stats.mean,\n median: stats.median,\n q1: stats.q1,\n q3: stats.q3,\n items: Array.from(stats.items),\n coords,\n outliers: [],\n maxEstimate,\n };\n}\nfunction asBoxPlotStats(value, options) {\n if (!value) {\n return undefined;\n }\n if (typeof value.median === 'number' && typeof value.q1 === 'number' && typeof value.q3 === 'number') {\n if (typeof value.whiskerMin === 'undefined') {\n const { coef } = determineStatsOptions(options);\n const { whiskerMin, whiskerMax } = whiskers(value, Array.isArray(value.items) ? value.items.slice().sort((a, b) => a - b) : null, coef);\n value.whiskerMin = whiskerMin;\n value.whiskerMax = whiskerMax;\n }\n return value;\n }\n if (!Array.isArray(value)) {\n return undefined;\n }\n return boxplotStats(value, options);\n}\nfunction asViolinStats(value, options) {\n if (!value) {\n return undefined;\n }\n if (typeof value.median === 'number' && Array.isArray(value.coords)) {\n return value;\n }\n if (!Array.isArray(value)) {\n return undefined;\n }\n return violinStats(value, options);\n}\nfunction rnd(seed = Date.now()) {\n let s = seed;\n return () => {\n s = (s * 9301 + 49297) % 233280;\n return s / 233280;\n };\n}\n\nconst baseDefaults$1 = {\n borderWidth: 1,\n outlierStyle: 'circle',\n outlierRadius: 2,\n outlierBorderWidth: 1,\n itemStyle: 'circle',\n itemRadius: 0,\n itemBorderWidth: 0,\n itemHitRadius: 0,\n meanStyle: 'circle',\n meanRadius: 3,\n meanBorderWidth: 1,\n hitPadding: 2,\n outlierHitRadius: 4,\n};\nconst baseRoutes = {\n outlierBackgroundColor: 'backgroundColor',\n outlierBorderColor: 'borderColor',\n itemBackgroundColor: 'backgroundColor',\n itemBorderColor: 'borderColor',\n meanBackgroundColor: 'backgroundColor',\n meanBorderColor: 'borderColor',\n};\nconst baseOptionKeys = (() => Object.keys(baseDefaults$1).concat(Object.keys(baseRoutes)))();\nlet StatsBase$1 = class StatsBase extends Element {\n isVertical() {\n return !this.horizontal;\n }\n _drawItems(ctx) {\n const vert = this.isVertical();\n const props = this.getProps(['x', 'y', 'items', 'width', 'height', 'outliers']);\n const { options } = this;\n if (options.itemRadius <= 0 || !props.items || props.items.length <= 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = options.itemBorderColor;\n ctx.fillStyle = options.itemBackgroundColor;\n ctx.lineWidth = options.itemBorderWidth;\n const random = rnd(this._datasetIndex * 1000 + this._index);\n const pointOptions = {\n pointStyle: options.itemStyle,\n radius: options.itemRadius,\n borderWidth: options.itemBorderWidth,\n };\n const outliers = new Set(props.outliers || []);\n if (vert) {\n props.items.forEach((v) => {\n if (!outliers.has(v)) {\n drawPoint(ctx, pointOptions, props.x - props.width / 2 + random() * props.width, v);\n }\n });\n }\n else {\n props.items.forEach((v) => {\n if (!outliers.has(v)) {\n drawPoint(ctx, pointOptions, v, props.y - props.height / 2 + random() * props.height);\n }\n });\n }\n ctx.restore();\n }\n _drawOutliers(ctx) {\n const vert = this.isVertical();\n const props = this.getProps(['x', 'y', 'outliers']);\n const { options } = this;\n if (options.outlierRadius <= 0 || !props.outliers || props.outliers.length === 0) {\n return;\n }\n ctx.save();\n ctx.fillStyle = options.outlierBackgroundColor;\n ctx.strokeStyle = options.outlierBorderColor;\n ctx.lineWidth = options.outlierBorderWidth;\n const pointOptions = {\n pointStyle: options.outlierStyle,\n radius: options.outlierRadius,\n borderWidth: options.outlierBorderWidth,\n };\n if (vert) {\n props.outliers.forEach((v) => {\n drawPoint(ctx, pointOptions, props.x, v);\n });\n }\n else {\n props.outliers.forEach((v) => {\n drawPoint(ctx, pointOptions, v, props.y);\n });\n }\n ctx.restore();\n }\n _drawMeanDot(ctx) {\n const vert = this.isVertical();\n const props = this.getProps(['x', 'y', 'mean']);\n const { options } = this;\n if (options.meanRadius <= 0 || props.mean == null || Number.isNaN(props.mean)) {\n return;\n }\n ctx.save();\n ctx.fillStyle = options.meanBackgroundColor;\n ctx.strokeStyle = options.meanBorderColor;\n ctx.lineWidth = options.meanBorderWidth;\n const pointOptions = {\n pointStyle: options.meanStyle,\n radius: options.meanRadius,\n borderWidth: options.meanBorderWidth,\n };\n if (vert) {\n drawPoint(ctx, pointOptions, props.x, props.mean);\n }\n else {\n drawPoint(ctx, pointOptions, props.mean, props.y);\n }\n ctx.restore();\n }\n _getBounds(_useFinalPosition) {\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n };\n }\n _getHitBounds(useFinalPosition) {\n const padding = this.options.hitPadding;\n const b = this._getBounds(useFinalPosition);\n return {\n left: b.left - padding,\n top: b.top - padding,\n right: b.right + padding,\n bottom: b.bottom + padding,\n };\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n if (Number.isNaN(this.x) && Number.isNaN(this.y)) {\n return false;\n }\n return (this._boxInRange(mouseX, mouseY, useFinalPosition) ||\n this._outlierIndexInRange(mouseX, mouseY, useFinalPosition) != null ||\n this._itemIndexInRange(mouseX, mouseY, useFinalPosition) != null);\n }\n inXRange(mouseX, useFinalPosition) {\n const bounds = this._getHitBounds(useFinalPosition);\n return mouseX >= bounds.left && mouseX <= bounds.right;\n }\n inYRange(mouseY, useFinalPosition) {\n const bounds = this._getHitBounds(useFinalPosition);\n return mouseY >= bounds.top && mouseY <= bounds.bottom;\n }\n _outlierIndexInRange(mouseX, mouseY, useFinalPosition) {\n const props = this.getProps(['x', 'y'], useFinalPosition);\n const hitRadius = this.options.outlierHitRadius;\n const outliers = this._getOutliers(useFinalPosition);\n const vertical = this.isVertical();\n if ((vertical && Math.abs(mouseX - props.x) > hitRadius) || (!vertical && Math.abs(mouseY - props.y) > hitRadius)) {\n return null;\n }\n const toCompare = vertical ? mouseY : mouseX;\n for (let i = 0; i < outliers.length; i += 1) {\n if (Math.abs(outliers[i] - toCompare) <= hitRadius) {\n return vertical ? { index: i, x: props.x, y: outliers[i] } : { index: i, x: outliers[i], y: props.y };\n }\n }\n return null;\n }\n _itemIndexInRange(mouseX, mouseY, useFinalPosition) {\n const hitRadius = this.options.itemHitRadius;\n if (hitRadius <= 0) {\n return null;\n }\n const props = this.getProps(['x', 'y', 'items', 'width', 'height', 'outliers'], useFinalPosition);\n const vert = this.isVertical();\n const { options } = this;\n if (options.itemRadius <= 0 || !props.items || props.items.length <= 0) {\n return null;\n }\n const random = rnd(this._datasetIndex * 1000 + this._index);\n const outliers = new Set(props.outliers || []);\n if (vert) {\n for (let i = 0; i < props.items.length; i++) {\n const y = props.items[i];\n if (!outliers.has(y)) {\n const x = props.x - props.width / 2 + random() * props.width;\n if (Math.abs(x - mouseX) <= hitRadius && Math.abs(y - mouseY) <= hitRadius) {\n return { index: i, x, y };\n }\n }\n }\n }\n else {\n for (let i = 0; i < props.items.length; i++) {\n const x = props.items[i];\n if (!outliers.has(x)) {\n const y = props.y - props.height / 2 + random() * props.height;\n if (Math.abs(x - mouseX) <= hitRadius && Math.abs(y - mouseY) <= hitRadius) {\n return { index: i, x, y };\n }\n }\n }\n }\n return null;\n }\n _boxInRange(mouseX, mouseY, useFinalPosition) {\n const bounds = this._getHitBounds(useFinalPosition);\n return mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n }\n getCenterPoint(useFinalPosition) {\n const props = this.getProps(['x', 'y'], useFinalPosition);\n return {\n x: props.x,\n y: props.y,\n };\n }\n _getOutliers(useFinalPosition) {\n const props = this.getProps(['outliers'], useFinalPosition);\n return props.outliers || [];\n }\n tooltipPosition(eventPosition, tooltip) {\n if (!eventPosition || typeof eventPosition === 'boolean') {\n return this.getCenterPoint();\n }\n if (tooltip) {\n delete tooltip._tooltipOutlier;\n delete tooltip._tooltipItem;\n }\n const info = this._outlierIndexInRange(eventPosition.x, eventPosition.y);\n if (info != null && tooltip) {\n tooltip._tooltipOutlier = {\n index: info.index,\n datasetIndex: this._datasetIndex,\n };\n return {\n x: info.x,\n y: info.y,\n };\n }\n const itemInfo = this._itemIndexInRange(eventPosition.x, eventPosition.y);\n if (itemInfo != null && tooltip) {\n tooltip._tooltipItem = {\n index: itemInfo.index,\n datasetIndex: this._datasetIndex,\n };\n return {\n x: itemInfo.x,\n y: itemInfo.y,\n };\n }\n return this.getCenterPoint();\n }\n};\n\nconst boxOptionsKeys = baseOptionKeys.concat(['medianColor', 'lowerBackgroundColor']);\nclass BoxAndWiskers extends StatsBase$1 {\n draw(ctx) {\n ctx.save();\n ctx.fillStyle = this.options.backgroundColor;\n ctx.strokeStyle = this.options.borderColor;\n ctx.lineWidth = this.options.borderWidth;\n this._drawBoxPlot(ctx);\n this._drawOutliers(ctx);\n this._drawMeanDot(ctx);\n ctx.restore();\n this._drawItems(ctx);\n }\n _drawBoxPlot(ctx) {\n if (this.isVertical()) {\n this._drawBoxPlotVertical(ctx);\n }\n else {\n this._drawBoxPlotHorizontal(ctx);\n }\n }\n _drawBoxPlotVertical(ctx) {\n const { options } = this;\n const props = this.getProps(['x', 'width', 'q1', 'q3', 'median', 'whiskerMin', 'whiskerMax']);\n const { x } = props;\n const { width } = props;\n const x0 = x - width / 2;\n if (props.q3 > props.q1) {\n ctx.fillRect(x0, props.q1, width, props.q3 - props.q1);\n }\n else {\n ctx.fillRect(x0, props.q3, width, props.q1 - props.q3);\n }\n ctx.save();\n if (options.medianColor && options.medianColor !== 'transparent' && options.medianColor !== '#0000') {\n ctx.strokeStyle = options.medianColor;\n }\n ctx.beginPath();\n ctx.moveTo(x0, props.median);\n ctx.lineTo(x0 + width, props.median);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n ctx.save();\n if (options.lowerBackgroundColor &&\n options.lowerBackgroundColor !== 'transparent' &&\n options.lowerBackgroundColor !== '#0000') {\n ctx.fillStyle = options.lowerBackgroundColor;\n if (props.q3 > props.q1) {\n ctx.fillRect(x0, props.median, width, props.q3 - props.median);\n }\n else {\n ctx.fillRect(x0, props.median, width, props.q1 - props.median);\n }\n }\n ctx.restore();\n if (props.q3 > props.q1) {\n ctx.strokeRect(x0, props.q1, width, props.q3 - props.q1);\n }\n else {\n ctx.strokeRect(x0, props.q3, width, props.q1 - props.q3);\n }\n ctx.beginPath();\n ctx.moveTo(x0, props.whiskerMin);\n ctx.lineTo(x0 + width, props.whiskerMin);\n ctx.moveTo(x, props.whiskerMin);\n ctx.lineTo(x, props.q1);\n ctx.moveTo(x0, props.whiskerMax);\n ctx.lineTo(x0 + width, props.whiskerMax);\n ctx.moveTo(x, props.whiskerMax);\n ctx.lineTo(x, props.q3);\n ctx.closePath();\n ctx.stroke();\n }\n _drawBoxPlotHorizontal(ctx) {\n const { options } = this;\n const props = this.getProps(['y', 'height', 'q1', 'q3', 'median', 'whiskerMin', 'whiskerMax']);\n const { y } = props;\n const { height } = props;\n const y0 = y - height / 2;\n if (props.q3 > props.q1) {\n ctx.fillRect(props.q1, y0, props.q3 - props.q1, height);\n }\n else {\n ctx.fillRect(props.q3, y0, props.q1 - props.q3, height);\n }\n ctx.save();\n if (options.medianColor && options.medianColor !== 'transparent') {\n ctx.strokeStyle = options.medianColor;\n }\n ctx.beginPath();\n ctx.moveTo(props.median, y0);\n ctx.lineTo(props.median, y0 + height);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n ctx.save();\n if (options.lowerBackgroundColor && options.lowerBackgroundColor !== 'transparent') {\n ctx.fillStyle = options.lowerBackgroundColor;\n if (props.q3 > props.q1) {\n ctx.fillRect(props.median, y0, props.q3 - props.median, height);\n }\n else {\n ctx.fillRect(props.median, y0, props.q1 - props.median, height);\n }\n }\n ctx.restore();\n if (props.q3 > props.q1) {\n ctx.strokeRect(props.q1, y0, props.q3 - props.q1, height);\n }\n else {\n ctx.strokeRect(props.q3, y0, props.q1 - props.q3, height);\n }\n ctx.beginPath();\n ctx.moveTo(props.whiskerMin, y0);\n ctx.lineTo(props.whiskerMin, y0 + height);\n ctx.moveTo(props.whiskerMin, y);\n ctx.lineTo(props.q1, y);\n ctx.moveTo(props.whiskerMax, y0);\n ctx.lineTo(props.whiskerMax, y0 + height);\n ctx.moveTo(props.whiskerMax, y);\n ctx.lineTo(props.q3, y);\n ctx.closePath();\n ctx.stroke();\n }\n _getBounds(useFinalPosition) {\n const vert = this.isVertical();\n if (this.x == null) {\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n };\n }\n if (vert) {\n const { x, width, whiskerMax, whiskerMin } = this.getProps(['x', 'width', 'whiskerMin', 'whiskerMax'], useFinalPosition);\n const x0 = x - width / 2;\n return {\n left: x0,\n top: whiskerMax,\n right: x0 + width,\n bottom: whiskerMin,\n };\n }\n const { y, height, whiskerMax, whiskerMin } = this.getProps(['y', 'height', 'whiskerMin', 'whiskerMax'], useFinalPosition);\n const y0 = y - height / 2;\n return {\n left: whiskerMin,\n top: y0,\n right: whiskerMax,\n bottom: y0 + height,\n };\n }\n}\nBoxAndWiskers.id = 'boxandwhiskers';\nBoxAndWiskers.defaults = {\n ...BarElement.defaults,\n ...baseDefaults$1,\n medianColor: 'transparent',\n lowerBackgroundColor: 'transparent',\n};\nBoxAndWiskers.defaultRoutes = { ...BarElement.defaultRoutes, ...baseRoutes };\n\nclass Violin extends StatsBase$1 {\n draw(ctx) {\n ctx.save();\n ctx.fillStyle = this.options.backgroundColor;\n ctx.strokeStyle = this.options.borderColor;\n ctx.lineWidth = this.options.borderWidth;\n const props = this.getProps(['x', 'y', 'median', 'width', 'height', 'min', 'max', 'coords', 'maxEstimate']);\n if (props.median != null) {\n drawPoint(ctx, {\n pointStyle: 'rectRot',\n radius: 5,\n borderWidth: this.options.borderWidth,\n }, props.x, props.y);\n }\n if (props.coords && props.coords.length > 0) {\n this._drawCoords(ctx, props);\n }\n this._drawOutliers(ctx);\n this._drawMeanDot(ctx);\n ctx.restore();\n this._drawItems(ctx);\n }\n _drawCoords(ctx, props) {\n let maxEstimate;\n if (props.maxEstimate == null) {\n maxEstimate = props.coords.reduce((a, d) => Math.max(a, d.estimate), Number.NEGATIVE_INFINITY);\n }\n else {\n maxEstimate = props.maxEstimate;\n }\n ctx.beginPath();\n if (this.isVertical()) {\n const { x, width } = props;\n const factor = width / 2 / maxEstimate;\n props.coords.forEach((c) => {\n ctx.lineTo(x - c.estimate * factor, c.v);\n });\n props.coords\n .slice()\n .reverse()\n .forEach((c) => {\n ctx.lineTo(x + c.estimate * factor, c.v);\n });\n }\n else {\n const { y, height } = props;\n const factor = height / 2 / maxEstimate;\n props.coords.forEach((c) => {\n ctx.lineTo(c.v, y - c.estimate * factor);\n });\n props.coords\n .slice()\n .reverse()\n .forEach((c) => {\n ctx.lineTo(c.v, y + c.estimate * factor);\n });\n }\n ctx.closePath();\n ctx.stroke();\n ctx.fill();\n }\n _getBounds(useFinalPosition) {\n if (this.isVertical()) {\n const { x, width, min, max } = this.getProps(['x', 'width', 'min', 'max'], useFinalPosition);\n const x0 = x - width / 2;\n return {\n left: x0,\n top: max,\n right: x0 + width,\n bottom: min,\n };\n }\n const { y, height, min, max } = this.getProps(['y', 'height', 'min', 'max'], useFinalPosition);\n const y0 = y - height / 2;\n return {\n left: min,\n top: y0,\n right: max,\n bottom: y0 + height,\n };\n }\n}\nViolin.id = 'violin';\nViolin.defaults = { ...BarElement.defaults, ...baseDefaults$1 };\nViolin.defaultRoutes = { ...BarElement.defaultRoutes, ...baseRoutes };\n\nconst interpolators = {\n number(from, to, factor) {\n if (from === to) {\n return to;\n }\n if (from == null) {\n return to;\n }\n if (to == null) {\n return from;\n }\n return from + (to - from) * factor;\n },\n};\nfunction interpolateNumberArray(from, to, factor) {\n if (typeof from === 'number' && typeof to === 'number') {\n return interpolators.number(from, to, factor);\n }\n if (Array.isArray(from) && Array.isArray(to)) {\n return to.map((t, i) => interpolators.number(from[i], t, factor));\n }\n return to;\n}\nfunction interpolateKdeCoords(from, to, factor) {\n if (Array.isArray(from) && Array.isArray(to)) {\n return to.map((t, i) => ({\n v: interpolators.number(from[i] ? from[i].v : null, t.v, factor),\n estimate: interpolators.number(from[i] ? from[i].estimate : null, t.estimate, factor),\n }));\n }\n return to;\n}\n\nfunction patchInHoveredOutlier(item) {\n const value = item.formattedValue;\n const that = this;\n if (value && that._tooltipOutlier != null && item.datasetIndex === that._tooltipOutlier.datasetIndex) {\n value.hoveredOutlierIndex = that._tooltipOutlier.index;\n }\n if (value && that._tooltipItem != null && item.datasetIndex === that._tooltipItem.datasetIndex) {\n value.hoveredItemIndex = that._tooltipItem.index;\n }\n}\nfunction outlierPositioner(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = 0;\n let y = 0;\n let count = 0;\n for (let i = 0; i < items.length; i += 1) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition(eventPosition, this);\n x += pos.x;\n y += pos.y;\n count += 1;\n }\n }\n return {\n x: x / count,\n y: y / count,\n };\n}\noutlierPositioner.id = 'average';\noutlierPositioner.register = () => {\n Tooltip.positioners.average = outlierPositioner;\n return outlierPositioner;\n};\n\nfunction baseDefaults(keys) {\n const colorKeys = ['borderColor', 'backgroundColor'].concat(keys.filter((c) => c.endsWith('Color')));\n return {\n animations: {\n numberArray: {\n fn: interpolateNumberArray,\n properties: ['outliers', 'items'],\n },\n colors: {\n type: 'color',\n properties: colorKeys,\n },\n },\n transitions: {\n show: {\n animations: {\n colors: {\n type: 'color',\n properties: colorKeys,\n from: 'transparent',\n },\n },\n },\n hide: {\n animations: {\n colors: {\n type: 'color',\n properties: colorKeys,\n to: 'transparent',\n },\n },\n },\n },\n minStats: 'min',\n maxStats: 'max',\n ...defaultStatsOptions,\n };\n}\nfunction defaultOverrides() {\n return {\n plugins: {\n tooltip: {\n position: outlierPositioner.register().id,\n callbacks: {\n beforeLabel: patchInHoveredOutlier,\n },\n },\n },\n };\n}\nclass StatsBase extends BarController {\n _transformStats(target, source, mapper) {\n for (const key of ['min', 'max', 'median', 'q3', 'q1', 'mean']) {\n const v = source[key];\n if (typeof v === 'number') {\n target[key] = mapper(v);\n }\n }\n for (const key of ['outliers', 'items']) {\n if (Array.isArray(source[key])) {\n target[key] = source[key].map(mapper);\n }\n }\n }\n getMinMax(scale, canStack) {\n const bak = scale.axis;\n const config = this.options;\n scale.axis = config.minStats;\n const { min } = super.getMinMax(scale, canStack);\n scale.axis = config.maxStats;\n const { max } = super.getMinMax(scale, canStack);\n scale.axis = bak;\n return { min, max };\n }\n parsePrimitiveData(meta, data, start, count) {\n const vScale = meta.vScale;\n const iScale = meta.iScale;\n const labels = iScale.getLabels();\n const r = [];\n for (let i = 0; i < count; i += 1) {\n const index = i + start;\n const parsed = {};\n parsed[iScale.axis] = iScale.parse(labels[index], index);\n const stats = this._parseStats(data == null ? null : data[index], this.options);\n if (stats) {\n Object.assign(parsed, stats);\n parsed[vScale.axis] = stats.median;\n }\n r.push(parsed);\n }\n return r;\n }\n parseArrayData(meta, data, start, count) {\n return this.parsePrimitiveData(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n return this.parsePrimitiveData(meta, data, start, count);\n }\n getLabelAndValue(index) {\n const r = super.getLabelAndValue(index);\n const { vScale } = this._cachedMeta;\n const parsed = this.getParsed(index);\n if (!vScale || !parsed || r.value === 'NaN') {\n return r;\n }\n r.value = {\n raw: parsed,\n hoveredOutlierIndex: -1,\n hoveredItemIndex: -1,\n };\n this._transformStats(r.value, parsed, (v) => vScale.getLabelForValue(v));\n const s = this._toStringStats(r.value.raw);\n r.value.toString = function toString() {\n if (this.hoveredOutlierIndex >= 0) {\n return `(outlier: ${this.outliers[this.hoveredOutlierIndex]})`;\n }\n if (this.hoveredItemIndex >= 0) {\n return `(item: ${this.items[this.hoveredItemIndex]})`;\n }\n return s;\n };\n return r;\n }\n _toStringStats(b) {\n const f = (v) => (v == null ? 'NaN' : formatNumber(v, this.chart.options.locale, {}));\n return `(min: ${f(b.min)}, 25% quantile: ${f(b.q1)}, median: ${f(b.median)}, mean: ${f(b.mean)}, 75% quantile: ${f(b.q3)}, max: ${f(b.max)})`;\n }\n updateElement(rectangle, index, properties, mode) {\n const reset = mode === 'reset';\n const scale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n const base = scale.getBasePixel();\n properties._datasetIndex = this.index;\n properties._index = index;\n this._transformStats(properties, parsed, (v) => (reset ? base : scale.getPixelForValue(v, index)));\n super.updateElement(rectangle, index, properties, mode);\n }\n}\n\nfunction patchController(type, config, controller, elements = [], scales = []) {\n registry.addControllers(controller);\n if (Array.isArray(elements)) {\n registry.addElements(...elements);\n }\n else {\n registry.addElements(elements);\n }\n if (Array.isArray(scales)) {\n registry.addScales(...scales);\n }\n else {\n registry.addScales(scales);\n }\n const c = config;\n c.type = type;\n return c;\n}\n\nclass BoxPlotController extends StatsBase {\n _parseStats(value, config) {\n return asBoxPlotStats(value, config);\n }\n _transformStats(target, source, mapper) {\n super._transformStats(target, source, mapper);\n for (const key of ['whiskerMin', 'whiskerMax']) {\n target[key] = mapper(source[key]);\n }\n }\n}\nBoxPlotController.id = 'boxplot';\nBoxPlotController.defaults = merge({}, [\n BarController.defaults,\n baseDefaults(boxOptionsKeys),\n {\n animations: {\n numbers: {\n type: 'number',\n properties: BarController.defaults.animations.numbers.properties.concat(['q1', 'q3', 'min', 'max', 'median', 'whiskerMin', 'whiskerMax', 'mean'], boxOptionsKeys.filter((c) => !c.endsWith('Color'))),\n },\n },\n dataElementType: BoxAndWiskers.id,\n },\n]);\nBoxPlotController.overrides = merge({}, [BarController.overrides, defaultOverrides()]);\nclass BoxPlotChart extends Chart {\n constructor(item, config) {\n super(item, patchController('boxplot', config, BoxPlotController, BoxAndWiskers, [LinearScale, CategoryScale]));\n }\n}\nBoxPlotChart.id = BoxPlotController.id;\n\nclass ViolinController extends StatsBase {\n _parseStats(value, config) {\n return asViolinStats(value, config);\n }\n _transformStats(target, source, mapper) {\n super._transformStats(target, source, mapper);\n target.maxEstimate = source.maxEstimate;\n if (Array.isArray(source.coords)) {\n target.coords = source.coords.map((c) => ({ ...c, v: mapper(c.v) }));\n }\n }\n}\nViolinController.id = 'violin';\nViolinController.defaults = merge({}, [\n BarController.defaults,\n baseDefaults(baseOptionKeys),\n {\n points: 100,\n animations: {\n numbers: {\n type: 'number',\n properties: BarController.defaults.animations.numbers.properties.concat(['q1', 'q3', 'min', 'max', 'median', 'maxEstimate'], baseOptionKeys.filter((c) => !c.endsWith('Color'))),\n },\n kdeCoords: {\n fn: interpolateKdeCoords,\n properties: ['coords'],\n },\n },\n dataElementType: Violin.id,\n },\n]);\nViolinController.overrides = merge({}, [BarController.overrides, defaultOverrides()]);\nclass ViolinChart extends Chart {\n constructor(item, config) {\n super(item, patchController('violin', config, ViolinController, Violin, [LinearScale, CategoryScale]));\n }\n}\nViolinChart.id = ViolinController.id;\n\nexport { BoxAndWiskers, BoxPlotChart, BoxPlotController, StatsBase$1 as StatsBase, Violin, ViolinChart, ViolinController };\n//# sourceMappingURL=index.js.map\n","\n\n","export function useCharts(store) {\n\n const colorPalette = [\n \"#36a2eb\",\n \"#ff6384\",\n \"#4bc0c0\",\n \"#ff7f0e\",\n \"#9966ff\",\n \"#ffce56\",\n \"#a0a0a0\",\n \"#2ca02c\",\n \"#4b4c52\",\n \"#d62728\",\n \"#8c564b\",\n \"#1f77b4\",\n \"#9467bd\",\n \"#e377c2\",\n \"#ff9f40\",\n \"#17a589\",\n \"#ca6b4b\",\n \"#45668e\",\n \"#d35400\",\n \"#5b2c6f\",\n ]\n\n function getCodeCountsByTranscript() {\n let map = {};\n for (let excerpt of store.excerpts) {\n for (let codeId of excerpt.codes) {\n let prop = codeId + ':' + excerpt.transcript\n if (map[prop]) {\n map[prop] += 1;\n } else {\n map[prop] = 1;\n }\n }\n }\n return map;\n }\n\n function getDataForCodeCountsByTranscript() {\n let map = getCodeCountsByTranscript();\n\n let out = [];\n let i = 0;\n for (let t of store.activeProject.transcripts) {\n let data = [];\n for (let c of store.activeProject.codes) {\n data.push(map[c.id + \":\" + t.id] ?? 0);\n }\n out.push({label: t.name, data: data, borderWidth: 1, backgroundColor: colorPalette[i % colorPalette.length]});\n i++;\n }\n\n return out;\n }\n\n function codesBarPlot() {\n let codeCounts = getCodeCounts();\n let freqs = [];\n for (let t of store.activeProject.codes) {\n freqs.push(codeCounts[t.id].n);\n }\n return {\n type: 'bar',\n data: {\n labels: store.activeProject.codes.map(x => x.name),\n datasets: [\n {\n backgroundColor: colorPalette[0],\n label: 'Code Frequencies',\n data: freqs,\n borderWidth: 1,\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n indexAxis: 'y',\n x: {\n beginAtZero: true,\n ticks: {\n precision: 0\n }\n },\n },\n }\n }\n\n function codesByTranscriptsBarPlot() {\n let data = getDataForCodeCountsByTranscript();\n\n return {\n type: 'bar',\n data: {\n labels: store.activeProject.codes.map(x => x.name),\n datasets: data,\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n indexAxis: 'y',\n scales: {\n x: {\n beginAtZero: true,\n ticks: {\n precision: 0\n }\n },\n },\n },\n }\n }\n\n function codesByTranscriptsStackedBarPlot() {\n let data = getDataForCodeCountsByTranscript();\n\n return {\n type: 'bar',\n data: {\n labels: store.activeProject.codes.map(x => x.name),\n datasets: data,\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n indexAxis: 'y',\n scales: {\n x: {\n stacked: true,\n beginAtZero: true,\n ticks: {\n precision: 0\n }\n },\n y: {\n stacked: true\n }\n },\n },\n }\n }\n\n function getCodeCounts() {\n let codeCount = {};\n for (let code of store.activeProject.codes) {\n codeCount[code.id] = JSON.parse(JSON.stringify(code));\n codeCount[code.id].n = 0;\n }\n for(let excerpt of store.excerpts) {\n for (let code of excerpt.codes) {\n // in case the transcript html contains ids of deleted codes\n if (!codeCount[code]) continue;\n codeCount[code].n++\n }\n }\n return codeCount;\n }\n\n function getThemeCounts() {\n let codeCounts = getCodeCounts();\n let themeCount = {};\n for (let theme of store.activeProject.themes) {\n themeCount[theme.id] = 0;\n }\n for (let code of store.activeProject.codes) {\n themeCount[code.themeId] += codeCounts[code.id].n;\n }\n\n for (let theme of store.activeProject.themes) {\n themeCount[theme.parent] += themeCount[theme.id];\n }\n return themeCount;\n }\n\n\n function themeBarPlot(theme) {\n let subthemes = store.activeProject.themes.filter(x => x.parent == theme.id).map(x => x.id);\n let codeCounts = getCodeCounts();\n let freqs = [];\n let labels = [];\n for (let codeId in codeCounts) {\n if (codeCounts[codeId].themeId == theme.id || subthemes.indexOf(codeCounts[codeId].themeId) > -1) {\n freqs.push(codeCounts[codeId].n);\n labels.push(codeCounts[codeId].name);\n }\n }\n return {\n type: 'bar',\n data: {\n labels: labels,\n datasets: [\n {\n backgroundColor: colorPalette[0],\n label: `Code Frequencies for ${theme.name}`,\n data: freqs,\n borderWidth: 1,\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n indexAxis: 'y',\n scales: {\n x: {\n beginAtZero: true,\n ticks: {\n precision: 0\n }\n },\n },\n }\n }\n }\n\n function themePieChart(theme) {\n let subthemes = store.activeProject.themes.filter(x => x.parent == theme.id);\n let codeCounts = getCodeCounts();\n let themeCounts = getThemeCounts();\n let freqs = [];\n let labels = [];\n\n for (let subtheme of subthemes) {\n freqs.push(themeCounts[subtheme.id]);\n labels.push(subtheme.name);\n }\n for (let codeId in codeCounts) {\n if (codeCounts[codeId].themeId == theme.id) {\n freqs.push(codeCounts[codeId].n);\n labels.push(codeCounts[codeId].name);\n }\n }\n\n return {\n type: 'pie',\n data: {\n labels: labels,\n datasets: [\n {\n backgroundColor: colorPalette,\n data: freqs,\n borderWidth: 1,\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: false\n },\n tooltip: {\n enabled: false,\n external: function(context) {\n // Start with a fresh tooltip element each time\n let tooltipEl = document.getElementById('chartjs-tooltip');\n if (tooltipEl) {\n tooltipEl.remove();\n }\n\n tooltipEl = document.createElement('div');\n tooltipEl.id = 'chartjs-tooltip';\n document.body.appendChild(tooltipEl);\n\n // Hide if no tooltip\n const tooltipModel = context.tooltip;\n if (tooltipModel.opacity === 0) {\n tooltipEl.style.opacity = 0;\n return;\n }\n\n // Set caret Position\n tooltipEl.classList.remove('above', 'below', 'no-transform');\n if (tooltipModel.yAlign) {\n tooltipEl.classList.add(tooltipModel.yAlign);\n } else {\n tooltipEl.classList.add('no-transform');\n }\n\n function getBody(bodyItem) {\n return bodyItem.lines;\n }\n\n // Set Text\n if (tooltipModel.body) {\n const titleLines = tooltipModel.title || [];\n const bodyLines = tooltipModel.body.map(getBody);\n\n titleLines.forEach(function(title, i) {\n const colors = tooltipModel.labelColors[i];\n const count = bodyLines[i];\n let titleDiv = document.createElement('div');\n titleDiv.style.display = \"flex\";\n titleDiv.style.alignItems = \"center\";\n titleDiv.style.fontSize = \"14px\";\n let colorDiv = document.createElement('div');\n colorDiv.style.backgroundColor = colors.backgroundColor;\n colorDiv.style.borderColor = colors.borderColor;\n colorDiv.style.borderWidth = colors.borderWidth;\n colorDiv.style.height = \"14px\";\n colorDiv.style.width = \"14px\";\n colorDiv.style.marginRight = \"4px\";\n titleDiv.appendChild(colorDiv);\n let titleText = document.createTextNode(`${title}: ${count[0]}`);\n \n titleDiv.appendChild(titleText);\n tooltipEl.appendChild(titleDiv);\n });\n }\n\n const position = context.chart.canvas.getBoundingClientRect();\n\n // Display, position, and set styles for font\n tooltipEl.style.opacity = 1;\n tooltipEl.style.position = 'absolute';\n tooltipEl.style.zIndex = 1100;\n tooltipEl.style.left = position.left + window.pageXOffset + tooltipModel.caretX + 'px';\n tooltipEl.style.top = position.top + window.pageYOffset + tooltipModel.caretY + 'px';\n tooltipEl.style.padding = '2px 4px';\n tooltipEl.style.backgroundColor = 'rgba(0, 0, 0, 0.65)';\n tooltipEl.style.color = '#fff';\n tooltipEl.style.borderRadius = '.25rem';\n tooltipEl.style.pointerEvents = 'none';\n }\n }\n }\n }\n }\n }\n\n\n function themesBarPlot() {\n let themeCounts = getThemeCounts();\n let freqs = [];\n for (let t of store.activeProject.themes) {\n freqs.push(themeCounts[t.id]);\n }\n return {\n type: 'bar',\n data: {\n labels: store.activeProject.themes.map(x => x.name),\n datasets: [\n {\n backgroundColor: colorPalette[0],\n label: 'Theme Frequencies',\n data: freqs,\n borderWidth: 1,\n },\n ],\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n indexAxis: 'y',\n scales: {\n x: {\n beginAtZero: true,\n ticks: {\n precision: 0\n }\n },\n },\n },\n }\n }\n\n function getThemeCountsByTranscript() {\n let codeCounts = getCodeCounts();\n let themeCountsByTranscript = {};\n\n for (let excerpt of store.excerpts) {\n let transcriptId = excerpt.transcript;\n let codeIds = excerpt.codes;\n\n if (!themeCountsByTranscript[transcriptId]) {\n themeCountsByTranscript[transcriptId] = {};\n for (let theme of store.activeProject.themes) {\n themeCountsByTranscript[transcriptId][theme.id] = 0;\n }\n }\n\n for (let codeId of codeIds) {\n let themeId = codeCounts[codeId]?.themeId;\n // won't include unassigned codes as they are not assigned to a theme\n if (themeId) {\n themeCountsByTranscript[transcriptId][themeId]++;\n }\n }\n }\n\n // add subtheme counts to theme parent\n for (let transcriptId in themeCountsByTranscript) {\n let themeCount = themeCountsByTranscript[transcriptId];\n for (let theme of store.activeProject.themes) {\n themeCount[theme.parent] += themeCount[theme.id];\n }\n }\n\n return themeCountsByTranscript;\n }\n\n function getDataForThemesByTranscripts() {\n let map = getThemeCountsByTranscript();\n let data = [];\n let i = 0;\n for (let transcript of store.activeProject.transcripts) {\n let frequencies = [];\n for (let theme of store.activeProject.themes) {\n if (map[transcript.id]) {\n frequencies.push(map[transcript.id][theme.id] ?? 0);\n } else {\n frequencies.push(0);\n }\n }\n data.push({label: transcript.name, data: frequencies, borderWidth: 1, backgroundColor: colorPalette[i % colorPalette.length]});\n i++;\n }\n\n return data;\n }\n\n function themesByTranscriptsBarPlot() {\n let data = getDataForThemesByTranscripts();\n\n return {\n type: 'bar',\n data: {\n labels: store.activeProject.themes.map(x => x.name),\n datasets: data,\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n indexAxis: 'y',\n scales: {\n x: {\n beginAtZero: true,\n ticks: {\n precision: 0\n }\n },\n },\n },\n }\n }\n\n function themesByTranscriptsStackedBarPlot() {\n let data = getDataForThemesByTranscripts();\n\n return {\n type: 'bar',\n data: {\n labels: store.activeProject.themes.map(x => x.name),\n datasets: data,\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n indexAxis: 'y',\n scales: {\n x: {\n stacked: true,\n ticks: {\n precision: 0\n }\n },\n y: {\n stacked: true\n }\n },\n },\n }\n }\n\n function transcriptsByThemesStackedBarPlot() {\n let map = getThemeCountsByTranscript();\n\n let data = [];\n let i = 0;\n for (let theme of store.activeProject.themes) {\n let frequencies = [];\n for (let transcript of store.activeProject.transcripts) {\n if (map[transcript.id]) {\n frequencies.push(map[transcript.id][theme.id] ?? 0);\n } else {\n frequencies.push(0);\n }\n }\n data.push({label: theme.name, data: frequencies, borderWidth: 1, backgroundColor: colorPalette[i % colorPalette.length]});\n i++;\n }\n\n return {\n type: 'bar',\n data: {\n labels: store.activeProject.transcripts.map(x => x.name),\n datasets: data,\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n scales: {\n x: {\n stacked: true,\n },\n y: {\n stacked: true,\n ticks: {\n precision: 0\n }\n }\n },\n },\n }\n }\n\n return {\n colorPalette,\n getCodeCountsByTranscript,\n getDataForCodeCountsByTranscript,\n codesBarPlot,\n codesByTranscriptsBarPlot,\n codesByTranscriptsStackedBarPlot,\n getCodeCounts,\n getThemeCounts,\n themeBarPlot,\n themePieChart,\n themesBarPlot,\n getThemeCountsByTranscript,\n getDataForThemesByTranscripts,\n themesByTranscriptsBarPlot,\n themesByTranscriptsStackedBarPlot,\n transcriptsByThemesStackedBarPlot\n }\n}","\n","\n\n\n\n","\n","\n\n","\n\n","\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n","\n\n\n","\n\n\n","\n\n\n","\n\n","\n\n","export default \"__VITE_PUBLIC_ASSET__9966fc63__\"","\n","\n","\n","\n","import { createRouter, createWebHistory } from 'vue-router'\nimport { useStore } from './store.js'\nimport * as Sentry from \"@sentry/vue\";\nimport { logError } from \"./assets/logger.js\";\nimport Login from './components/Login.vue'\nimport ProjectList from './components/ProjectList.vue'\nimport Transcript from './components/Transcript.vue'\nimport Signup from './components/Signup.vue'\nimport ExcerptList from './components/ExcerptList.vue'\nimport Memos from './components/Memos.vue'\nimport Insights from './components/Insights.vue'\nimport ForgotPassword from './components/ForgotPassword.vue'\nimport ResetPassword from './components/ResetPassword.vue'\nimport VerifyEmail from './components/VerifyEmail.vue'\nimport ProjectInvitation from './components/ProjectInvitation.vue'\nimport Upgrade from './components/Upgrade.vue'\nimport ReliabilitySurvey from './components/ReliabilitySurvey.vue'\nimport AudioTranscriptionUpload from './components/AudioTranscriptionUpload.vue'\nimport AudioTranscriptionPreview from './components/AudioTranscriptionPreview.vue'\nimport AudioTranscriptionStart from './components/AudioTranscriptionStart.vue'\nimport { errors } from './assets/errors.js';\nimport { useHttp } from './assets/http.js'\n\nasync function loadUnverifedUserData(to, from) {\n const store = useStore();\n const http = useHttp(store, null);\n if (store.userInfo === null) {\n const userReq = await http.fetch('/api/user-info');\n switch (userReq.status) {\n case 200:\n let res = await userReq.json();\n store.userInfo = res;\n Sentry.setUser({ id: res.id });\n break;\n case 400:\n let err = await userReq.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n }\n}\n\nasync function loadUserData(to, from) {\n const store = useStore();\n const http = useHttp(store, null);\n if (store.userInfo === null) {\n const userReq = await http.fetch('/api/user-info');\n switch (userReq.status) {\n case 200:\n let res = await userReq.json();\n store.userInfo = res;\n Sentry.setUser({ id: res.id });\n break;\n case 400:\n let err = await userReq.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n }\n // if user is not verified then redirect to /verify-email\n if (!store.userInfo.verified) {\n return { path: '/verify-email' };\n }\n}\n\nasync function loadProjects(to, from) {\n const store = useStore();\n const http = useHttp(store, null);\n if (store.projects === null) {\n let pmap = {};\n\n let projectsReq = await http.fetch('/api/projects');\n switch (projectsReq.status) {\n case 200:\n let data = await projectsReq.json();\n\n if (data.projects) {\n for (let i = 0; i < data.projects.length; i++) {\n data.projects[i].projectType = 'Owned';\n pmap[data.projects[i].id] = data.projects[i];\n }\n }\n\n if (data.sharedProjects) {\n for (let i = 0; i < data.sharedProjects.length; i++) {\n data.sharedProjects[i].projectType = 'Shared';\n pmap[data.sharedProjects[i].id] = data.sharedProjects[i];\n }\n }\n\n if (data.transferRequests) {\n for (let i = 0; i < data.transferRequests.length; i++) {\n data.transferRequests[i].projectType = 'Transfer Request';\n pmap[data.transferRequests[i].id] = data.transferRequests[i];\n }\n }\n\n if (data.pendingTransfers) {\n for (let i = 0; i < data.pendingTransfers.length; i++) {\n data.pendingTransfers[i].projectType = 'Pending Transfer';\n pmap[data.pendingTransfers[i].id] = data.pendingTransfers[i];\n }\n }\n\n store.projects = Object.values(pmap);\n break;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n case 500:\n store.errorMessage = errors.default;\n return false;\n }\n }\n}\n\nasync function loadProjectData(to, from) {\n const store = useStore();\n const http = useHttp(store, null);\n if (store.activeProject === null || store.activeProject.id != to.params.id) {\n const lockRes = await http.fetch('/api/lock-project', {\n method: 'POST',\n body: JSON.stringify({\n projectId: to.params.id\n })\n });\n switch (lockRes.status) {\n case 200:\n store.activeProject = {\n id: to.params.id,\n };\n break;\n case 409:\n store.errorMessage = errors.locked;\n return { path: '/projects' };\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n case 403:\n store.errorMessage = \"You do not have permission to access this project.\";\n return false;\n default:\n store.errorMessage = errors.default;\n return false;\n }\n\n // submit all the data requests\n const metadataReq = http.fetch('/api/project-metadata?projectId=' + encodeURIComponent(to.params.id));\n const txListReq = http.fetch('/api/transcripts?projectId=' + encodeURIComponent(to.params.id));\n const summaryListReq = http.fetch('/api/summary-items?projectId=' + encodeURIComponent(to.params.id));\n const themesReq = http.fetch('/api/themes?projectId=' + encodeURIComponent(to.params.id));\n const codeReq = http.fetch('/api/codes?projectId=' + encodeURIComponent(to.params.id));\n const memosReq = http.fetch('/api/memos?projectId=' + encodeURIComponent(to.params.id));\n const autoCodingReq = http.fetch('/api/auto-coding-job?projectId=' + encodeURIComponent(to.params.id));\n\n const metadataRes = await metadataReq;\n switch (metadataRes.status) {\n case 200:\n const data = await metadataRes.json();\n store.activeProject.metadata = data;\n break;\n case 400:\n let err = await metadataRes.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n\n const txListRes = await txListReq;\n switch (txListRes.status) {\n case 200:\n const data = await txListRes.json();\n store.activeProject.transcripts = data.transcripts;\n break;\n case 400:\n let err = await txListRes.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n\n const summaryListRes = await summaryListReq;\n switch (summaryListRes.status) {\n case 200:\n const data = await summaryListRes.json();\n store.activeProject.summaryItems = data.summaryItems;\n break;\n case 400:\n let err = await summaryListRes.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n\n const themesRes = await themesReq;\n switch (themesRes.status) {\n case 200:\n const data = await themesRes.json();\n store.activeProject.themes = data.themes;\n break;\n case 400:\n let err = await themesRes.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n\n const codeRes = await codeReq;\n switch (codeRes.status) {\n case 200:\n const data = await codeRes.json();\n let codes = data.codes;\n for (let i = 0; i < codes.length; i++) {\n if (store.activeProject.themes.findIndex(x => x.id == codes[i].themeId) === -1) {\n codes[i].themeId = \"\";\n }\n }\n store.activeProject.codes = codes;\n break;\n case 400:\n let err = await codeRes.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n\n const memosRes = await memosReq;\n switch (memosRes.status) {\n case 200:\n const data = await memosRes.json();\n store.activeProject.memos = data.memos;\n break;\n case 400:\n let err = await memosRes.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n\n // populate the elements of the transcript and summary item lists with data\n let txReqs = [];\n for (let transcript of store.activeProject.transcripts) {\n if (transcript.status == \"COMPLETED\") {\n txReqs.push({ transcriptId: transcript.id, request: http.fetch('/api/download-transcript?projectId=' + encodeURIComponent(to.params.id) + '&id=' + encodeURIComponent(transcript.id)) });\n }\n }\n\n let summaryItemReqs = [];\n for (let item of store.activeProject.summaryItems) {\n if (item.status == \"COMPLETED\") {\n summaryItemReqs.push({ itemId: item.id, request: http.fetch('/api/download-summary-item?projectId=' + encodeURIComponent(to.params.id) + '&id=' + encodeURIComponent(item.id)) });\n }\n }\n\n for (let i = 0; i < txReqs.length; i++) {\n const res = await txReqs[i].request;\n switch (res.status) {\n case 200:\n let transcript = store.activeProject.transcripts.find(x => x.id == txReqs[i].transcriptId);\n transcript.html = await res.text();\n transcript.checksum = res.headers.get('ETag')\n break;\n case 400:\n let err = await res.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n }\n\n for (let i = 0; i < summaryItemReqs.length; i++) {\n const res = await summaryItemReqs[i].request;\n switch (res.status) {\n case 200:\n let summaryItem = store.activeProject.summaryItems.find(x => x.id == summaryItemReqs[i].itemId);\n summaryItem.html = await res.text();\n break;\n case 400:\n let err = await res.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n case 402:\n store.userInfo.hasAccess = false;\n return { path: '/upgrade' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n }\n\n const autoCodingRes = await autoCodingReq;\n switch (autoCodingRes.status) {\n case 200:\n case 202:\n let data = await autoCodingRes.json();\n store.activeProject.autoCodingJob = data.job;\n break;\n case 400:\n let err = await autoCodingRes.json();\n store.errorMessage = err.message;\n return false;\n case 401:\n return { path: '/login' };\n default:\n store.errorMessage = errors.default;\n return false;\n }\n }\n}\n\nconst checkAccess = async function() {\n const store = useStore();\n if (!store.userInfo.hasAccess) {\n return { path: '/upgrade' };\n }\n}\n\nconst middleware = (funcs) => {\n return async function(to, from) {\n for (const i in funcs) {\n let res = await funcs[i](to, from);\n if (typeof res != \"undefined\" && res !== true) return res;\n }\n }\n}\n\nlet router = createRouter({\n history: createWebHistory(),\n routes: [\n {path: '/', redirect: '/projects'},\n {path: '/login', name: 'login', component: Login},\n {path: '/signup', name: 'signup', component: Signup},\n {path: '/forgot-password', name: 'forgotpassword', component: ForgotPassword},\n {path: '/reset-password', name: 'resetpassword', component: ResetPassword},\n {path: '/verify-email', name: 'verifyemail', component: VerifyEmail, beforeEnter: middleware([loadUnverifedUserData])},\n {path: '/projects', name: 'projects', component: ProjectList, beforeEnter: middleware([loadUserData, checkAccess, loadProjects])},\n {path: '/projects/:id/transcripts', name: 'transcripts', component: Transcript, beforeEnter: middleware([loadUserData, checkAccess, loadProjectData])},\n {path: '/projects/:id/memos', name: 'memos', component: Memos, beforeEnter: middleware([loadUserData, checkAccess, loadProjects, loadProjectData])},\n {path: '/projects/:id/excerpts', name: 'excerpts', component: ExcerptList, beforeEnter: middleware([loadUserData, checkAccess, loadProjectData])},\n {path: '/projects/:id/insights', name: 'insights', component: Insights, beforeEnter: middleware([loadUserData, checkAccess, loadProjectData])},\n {path: '/project-invitation', name: 'projectinvitation', component: ProjectInvitation},\n {path: '/upgrade', name: 'upgrade', component: Upgrade, beforeEnter: middleware([loadUserData])},\n {path: '/reliability/:id', name: 'reliabilitysurvey', component: ReliabilitySurvey},\n {path: '/projects/:id/transcription', name: 'transcription', component: AudioTranscriptionUpload, beforeEnter: middleware([loadUserData, checkAccess, loadProjectData])},\n {path: '/projects/:id/transcription/:jobid', name: 'transcriptionjob', component: AudioTranscriptionPreview, beforeEnter: middleware([loadUserData, checkAccess, loadProjectData])},\n {path: '/projects/:id/transcription/:jobid/start', name: 'starttranscription', component: AudioTranscriptionStart, beforeEnter: middleware([loadUserData])},\n // catch-all route for 404 errors\n {path: '/:pathMatch(.*)*', redirect: '/projects'}\n ]\n})\n\nrouter.onError((err, to) => {\n const store = useStore();\n if (store.appUpdate.available || window.OLD_BUNDLE_NOT_FOUND_ERRORS.some(x => err.message.includes(x))) {\n // log exception to sentry but it will be a handled error\n logError(err);\n window.location.href = `${window.location.protocol}//${window.location.host}${to.fullPath}`;\n return;\n }\n});\n\nexport default router;","\n\n","\n\n\n\n","import { createApp, markRaw } from 'vue'\nimport { createPinia } from 'pinia'\nimport router from './router.js'\nimport App from './App.vue'\nimport FloatingVue from 'floating-vue'\nimport * as Sentry from \"@sentry/vue\";\nimport { logError } from \"./assets/logger.js\";\n\nconst app = createApp(App)\n\napp.use(FloatingVue)\n\nconst pinia = createPinia()\n\npinia.use(({ store }) => {\n store.router = markRaw(router)\n});\n\napp.use(pinia)\n\napp.use(router)\n\nwindow.OLD_BUNDLE_NOT_FOUND_ERRORS = [\n 'Failed to fetch dynamically imported module', // Chromium\n 'error loading dynamically imported module', // Firefox\n 'Importing a module script failed', // Safari\n \"'text/html' is not a valid JavaScript MIME type.\" // Safari iphone\n];\n\nif (import.meta.env.MODE == \"production\") {\n Sentry.init({\n app: app,\n dsn: \"https://a956247cb4261eb2bfa44322983b8fa7@o4506870807658496.ingest.us.sentry.io/4507114118512640\",\n integrations: [\n Sentry.replayIntegration({\n maskAllText: false,\n blockAllMedia: false,\n }),\n ],\n // Session Replay\n replaysSessionSampleRate: 0.1,\n replaysOnErrorSampleRate: 1.0,\n beforeSend(event, hint) {\n const errorMessage = hint.originalException?.message;\n // catch errors in Chrome/Firefox/Safari (mac/ios) respectively, where update is available and old js bundle not found\n if (errorMessage && window.OLD_BUNDLE_NOT_FOUND_ERRORS.some(x => errorMessage.includes(x))) {\n return null;\n }\n return event;\n }\n });\n}\n\napp.mount('#app')\n\n// registering service worker\nif (\"serviceWorker\" in navigator) {\n // wait to register until page load so it doesn't compete with other resources\n window.addEventListener('load', async () => {\n let registration;\n try {\n await navigator.serviceWorker.register(\"/sw.js\", { scope: \"/\" });\n // wait until serviceWorker is active\n registration = await navigator.serviceWorker.ready;\n } catch(error) {\n logError(error, \"Failed to register service worker\")\n return; // don't execute any further code as it is only tied to service worker, which is optional for the app\n }\n\n // check if cache needs to be reset (last cache update stored in localStorage)\n const cacheLastUpdate = parseInt(localStorage.getItem('cacheStartDate'), 10);\n const twoWeeksInMilliseconds = 2 * 7 * 24 * 60 * 60 * 1000;\n if (!cacheLastUpdate) {\n localStorage.setItem('cacheStartDate', Date.now().toString());\n } else if ((Date.now() - cacheLastUpdate) > twoWeeksInMilliseconds ) {\n registration.active.postMessage({\n type: 'reset-cache',\n });\n localStorage.setItem('cacheStartDate', Date.now().toString());\n }\n\n var staleTab = false;\n\n navigator.serviceWorker.addEventListener('message', event => {\n if (event.data.type === \"cache-reset\") {\n // update the new cache date, which helps identify stale caches\n localStorage.setItem('cacheStartDate', Date.now().toString());\n } else if (event.data.type === \"error\") {\n logError(event.data.message, \"Fetch Event Error in Service Worker\");\n } else if (event.data.type === \"stale-tab\") {\n staleTab = true;\n }\n });\n\n registration.active.postMessage({type: 'active-tab'});\n document.addEventListener('visibilitychange', (e) => {\n if (document.visibilityState === 'visible') {\n registration.active.postMessage({type: 'active-tab'});\n\n if (staleTab == true) {\n alert('Another instance of Intellectus Qualitative has been detected elsewhere. This may indicate that you have multiple tabs or windows open, which can cause data synchronization issues. Refresh the page before proceeding to ensure you are seeing the latest information.');\n window.location.reload();\n }\n }\n });\n });\n}"],"names":["relList","link","processPreload","mutations","mutation","node","getFetchOpts","script","fetchOpts","makeMap","str","expectsLowerCase","map","list","i","val","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","onRE","isOn","key","isModelListener","extend","remove","arr","el","hasOwnProperty","hasOwn","isArray","isMap","toTypeString","isSet","isDate","isFunction","isString","isSymbol","isObject","isPromise","objectToString","value","toRawType","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","_","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","looseToNumber","n","toNumber","_globalThis","getGlobalThis","normalizeStyle","res","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","name","normalizeProps","props","klass","style","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","a","b","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","toDisplayString","replacer","_key","entries","val2","activeEffectScope","EffectScope","detached","currentEffectScope","fromParent","l","last","effectScope","recordEffectScope","effect","scope","getCurrentScope","onScopeDispose","createDep","effects","dep","wasTracked","trackOpBit","newTracked","initDepMarkers","deps","finalizeDepMarkers","ptr","targetMap","effectTrackDepth","maxMarkerBits","activeEffect","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","parent","lastShouldTrack","shouldTrack","cleanupEffect","effect2","trackStack","pauseTracking","resetTracking","track","target","type","depsMap","trackEffects","debuggerEventExtraInfo","shouldTrack2","trigger","newValue","oldTarget","newLength","key2","triggerEffects","triggerEffect","getDepFromReactive","object","_a","isNonTrackableKeys","builtInSymbols","get$1","createGetter","shallowGet","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","args","toRaw","isReadonly2","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","isRef","readonly","reactive","set$1","createSetter","shallowSet","isReadonly","isShallow","hadKey","result","deleteProperty","has$1","ownKeys","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","v","get","rawTarget","rawKey","has2","wrap","toReadonly","toReactive","has","size","add","set","get2","deleteEntry","clear","hadItems","createForEach","callback","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","isKeyOnly","innerIterator","done","createReadonlyMethod","createInstrumentations","mutableInstrumentations2","shallowInstrumentations2","readonlyInstrumentations2","shallowReadonlyInstrumentations2","mutableInstrumentations","readonlyInstrumentations","shallowInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","isProxy","raw","markRaw","trackRefValue","ref2","triggerRefValue","newVal","r","ref","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","useDirectValue","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","customRef","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","source","defaultValue","ComputedRefImpl","getter","_setter","isSSR","self","computed","getterOrOptions","debugOptions","setter","onlyGetter","callWithErrorHandling","instance","err","handleError","callWithAsyncErrorHandling","values","throwInDev","contextVNode","cur","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","getId","queueJob","job","queueFlush","flushJobs","invalidateJob","queuePostFlushCb","cb","flushPreFlushCbs","seen","flushPostFlushCbs","deduped","comparator","diff","check","emit","event","rawArgs","modelArg","modifiersKey","number","trim","handlerName","handler","onceHandler","normalizeEmitsOptions","comp","appContext","asMixin","cached","hasExtends","extendEmits","raw2","normalizedFromExtend","isEmitListener","options","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","renderComponentRoot","Component","vnode","withProxy","propsOptions","slots","attrs","render","renderCache","data","setupState","inheritAttrs","fallthroughAttrs","proxyToUse","normalizeVNode","render2","getFunctionalFallthrough","blockStack","createVNode","Comment","root","keys","shapeFlag","filterModelListeners","cloneVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","component","nextProps","nextChildren","patchFlag","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","updateHOCHostEl","isSuspense","queueEffectWithSuspense","suspense","INITIAL_WATCHER_VALUE","watch","doWatch","immediate","deep","flush","onTrack","onTrigger","currentInstance","forceTrigger","isMultiSource","isShallow$1","s","traverse","cleanup","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","useSSRContext","queuePostRenderEffect","unwatch","instanceWatch","publicThis","createPathGetter","setCurrentInstance","unsetCurrentInstance","path","segments","withDirectives","directives","internalInstance","getExposeProxy","bindings","dir","modifiers","invokeDirectiveHook","oldBindings","binding","hook","useTransitionState","state","onMounted","onBeforeUnmount","TransitionHookValidator","BaseTransitionPropsValidators","BaseTransitionImpl","getCurrentInstance","prevTransitionKey","children","getTransitionRawChildren","child","rawProps","mode","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","isSameVNodeType","leavingHooks","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","BaseTransition","leavingVNodes","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","callHook","callAsyncHook","hook2","hooks","leavingVNode","afterHook","cancelHook","called","cancelled","vnode2","isKeepAlive","keepComment","parentKey","keyedFragmentCount","Fragment","defineComponent","extraOptions","isAsyncWrapper","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","current","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onUpdated","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","COMPONENTS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","warnMissing","selfName","getComponentName","resolve","registry","renderList","renderItem","index","renderSlot","fallback","noSlotted","slot","openBlock","validSlotContent","ensureValidVNode","rendered","createBlock","vnodes","isVNode","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","hasSetupBinding","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","descriptor","normalizePropsOrEmits","applyOptions","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","components","filters","resolveInjections","methodHandler","opt","createWatcher","provides","provide","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","inject","h","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","m","mergeOptions","to","from","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","isMounted","app","version","plugin","mixin","directive","rootContainer","isHydrate","isSVG","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","initProps","isStateful","InternalObjectKey","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","propsToUpdate","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","normalizePropsOptions","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","ctor","match","isSameType","expectedTypes","t","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","refValue","owner","oldRef","refs","_isString","_isRef","doSet","existing","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","slotScopeIds","getNextHostNode","unmount","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","next","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","mountChildren","setScopeId","unmountChildren","invokeVNodeHook","needCallTransitionHooks","scopeId","subTree","parentVNode","cloneIfMounted","dynamicChildren","oldProps","newProps","toggleRecurse","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","placeholder","updateComponentPreRender","componentUpdateFn","bu","u","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","update","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","move","moveType","leave","delayLeave","afterLeave","remove2","performLeave","doRemove","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","allowed","ch1","ch2","len","arrI","isTeleport","isTeleportDisabled","isTargetSVG","resolveTarget","select","targetSelector","TeleportImpl","insert","querySelector","createText","createComment","disabled","mainAnchor","targetAnchor","mount","container2","anchor2","wasDisabled","currentContainer","currentAnchor","moveTeleport","nextTarget","updateCssVars","hydrateTeleport","isReorder","parentNode","hydrateChildren","targetNode","Teleport","currentBlock","disableTracking","closeBlock","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","extraProps","mergeRef","mergedProps","mergeProps","createTextVNode","text","flag","createStaticVNode","content","numberOfNodes","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","globalCurrentInstanceSetters","settersKey","setupResult","setupStatefulComponent","setup","setupContext","createSetupContext","resolvedResult","handleSetupResult","e","finishComponentSetup","compile","skipOptions","template","isCustomElement","compilerOptions","delimiters","componentCompilerOptions","finalCompilerOptions","getAttrsProxy","includeInferred","computed$1","propsOrChildren","ssrContextKey","svgNS","doc","templateContainer","nodeOps","tag","is","selector","before","wrapper","patchClass","transitionClasses","patchStyle","isCssString","setStyle","currentDisplay","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","needRemove","addEventListener","removeEventListener","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","nativeOnRE","patchProp","shouldSetAsProp","TRANSITION","ANIMATION","Transition","resolveTransitionProps","DOMTransitionPropsValidators","h2","hasExplicitCallback","baseProps","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","cls","_vtc","endId","expectedType","explicitTimeout","resolveIfNotStale","timeout","propCount","getTransitionInfo","endEvent","ended","onEnd","styles","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","d","toMs","getModelAssigner","onCompositionStart","onCompositionEnd","vModelText","lazy","castToNumber","domValue","vModelCheckbox","modelValue","elementValue","getValue","checked","assign","found","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","o","setSelected","_binding","isMultiple","option","optionValue","systemModifiers","modifierGuards","withModifiers","guard","keyNames","withKeys","eventKey","k","vShow","setDisplay","rendererOptions","renderer","ensureRenderer","createApp","containerOrSelector","normalizeContainer","isVue2","activePinia","setActivePinia","pinia","piniaSymbol","MutationType","createPinia","_p","toBeInstalled","noop","addSubscription","subscriptions","removeSubscription","idx","triggerSubscriptions","fallbackRunWithContext","mergeReactiveObjects","patchToApply","subPatch","targetValue","skipHydrateSymbol","shouldHydrate","isComputed","createOptionsStore","hot","actions","getters","initialState","store","localState","computedGetters","createSetupStore","$id","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","actionSubscriptions","debuggerEvents","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","$reset","newState","$state","$dispose","wrapAction","action","afterCallbackList","onErrorCallbackList","after","onError","error","partialStore","stopWatcher","runWithContext","setupStore","actionValue","extender","defineStore","idOrOptions","setupOptions","isSetupStore","useStore","hasContext","isBrowser","isESModule","applyToParams","params","newParams","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","location","currentLocation","query","searchString","hash","hashPos","searchPos","resolveRelativePath","stringifyURL","stringifyQuery","stripBase","pathname","isSameRouteLocation","aLastIndex","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","isSameRouteLocationParamsValue","isEquivalentArray","fromSegments","toSegments","lastToSegment","position","toPosition","segment","NavigationType","NavigationDirection","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","offset","docRect","elRect","computeScrollPosition","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getScrollKey","delta","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","createBaseLocation","createCurrentLocation","search","slicePos","pathFromHash","useHistoryListeners","historyState","replace","listeners","teardowns","pauseState","popStateHandler","fromState","listener","pauseListeners","listen","teardown","beforeUnloadListener","history","destroy","buildState","back","forward","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","url","push","currentState","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","isRouteLocation","route","isRouteName","START_LOCATION_NORMALIZED","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","REGEX_CHARS_RE","tokensToParser","score","pattern","segmentScores","tokenIndex","token","subSegmentScore","repeatable","optional","regexp","re","subPattern","parse","stringify","avoidDuplicatedSlash","param","compareScoreArray","comparePathParserScore","aScore","bScore","isLastScoreNegative","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","message","buffer","previousState","tokens","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","normalizedRecords","aliases","alias","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","insertMatcher","matcherRef","getRoutes","isRecordChildOf","paramsFromLocation","matched","parentMatcher","mergeMetaFields","normalizeRecordProps","propsObject","meta","defaults","partialOptions","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","searchParams","searchParam","eqPos","currentValue","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","handlers","reset","registerGuard","removeFromList","onBeforeRouteLeave","leaveGuard","activeRecord","guardToPromiseFn","enterCallbackArray","reject","valid","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","isRouteComponent","componentPromise","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","length","routeMatched","currentMatched","parentRecordPath","getOriginalPath","isActive","includesParams","isExactActive","navigate","guardEvent","RouterLinkImpl","elClass","getLinkClass","RouterLink","outer","inner","innerValue","outerValue","propClass","globalClass","defaultClass","RouterViewImpl","injectedRoute","routeToDisplay","injectedDepth","depth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","oldName","currentName","ViewComponent","routePropsOption","routeProps","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","href","matcherLocation","targetParams","fullPath","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","redirect","newTargetLocation","redirectedFrom","targetLocation","force","shouldRedirect","toLocation","failure","handleScroll","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","installedApps","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","canceledNavigationCheck","runGuardQueue","beforeEnter","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","info","readyHandlers","errorHandlers","ready","isReady","scrollBehavior","started","reactiveRoute","unmountApp","promise","recordFrom","recordTo","useRouter","useRoute","errors","out","div","elems","range","startIndex","excerptId","userId","codes","tagsAttr","codeIds","tags","themes","codemap","code","x","theme","excerpt","isError","wat","isInstanceOf","isBuiltin","className","isErrorEvent","isDOMError","isDOMException","isParameterizedString","isPrimitive","isEvent","isElement","isRegExp","isThenable","isSyntheticEvent","isNaN","isVueViewModel","truncate","max","safeJoin","input","delimiter","output","isMatchingPattern","requireExactStringMatch","stringMatchesSomePattern","testString","patterns","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","maxValueLimit","limit","hint","originalException","truncateAggregateExceptions","aggregateExceptionsFromError","prevExceptions","exception","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","childError","parentId","exceptions","maxValueLength","isGlobalObj","GLOBAL_OBJ","getGlobalObject","getGlobalSingleton","creator","gbl","__SENTRY__","WINDOW","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","elem","currentElem","MAX_TRAVERSE_HEIGHT","height","separator","sepLength","nextStr","keyAttrs","maxStringLength","_htmlElementAsString","classes","attr","keyAttrPairs","keyAttr","keyAttrPair","allowedAttrs","getLocationHref","DEBUG_BUILD","PREFIX","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","console","wrappedFuncs","wrappedLevels","level","originalConsoleMethod","makeLogger","enabled","logger","DSN_REGEX","isValidProtocol","protocol","dsnToString","dsn","withPassword","host","pass","port","projectId","publicKey","dsnFromString","lastPath","split","projectMatch","dsnFromComponents","validateDsn","makeDsn","SentryError","logLevel","fill","replacementFactory","original","wrapped","markFunctionWrapped","addNonEnumerableProperty","proto","getOriginalFunction","func","urlEncode","convertToPlainObject","getOwnProperties","newObj","serializeEventTarget","extractedProps","property","extractExceptionKeysForMessage","maxLength","includedKeys","serialized","dropUndefinedKeys","inputValue","_dropUndefinedKeys","memoizationMap","isPojo","memoVal","returnValue","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","stack","skipFirst","frames","lines","line","cleanedLine","frame","stripSentryFramesAndReverse","stackParserFromStackParserOptions","stackParser","localStack","defaultFunctionName","getFunctionName","instrumented","addHandler","maybeInstrument","instrumentFn","triggerHandlers","typeHandlers","addConsoleInstrumentationHandler","instrumentConsole","log","uuid4","crypto","getRandomByte","typedArray","getFirstException","getEventDescription","eventId","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","defaultMechanism","currentMechanism","mergedData","checkOrSetAlreadyCaught","arrayify","maybeArray","DEBOUNCE_DURATION","debounceTimerID","lastCapturedEventType","lastCapturedEventTargetId","addClickKeypressInstrumentationHandler","instrumentDOM","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","originalAddEventListener","handlerForType","originalRemoveEventListener","isSimilarToLastCapturedEvent","shouldSkipDOMEvent","eventType","globalListener","getEventTarget","supportsFetch","isNativeFetch","supportsNativeFetch","sandbox","addFetchInstrumentationHandler","instrumentFetch","originalFetch","parseFetchArgs","handlerData","response","finishedHandlerData","erroredHandlerData","hasProp","getUrlFromResource","resource","fetchArgs","_oldOnErrorHandler","addGlobalErrorInstrumentationHandler","instrumentError","msg","column","_oldOnUnhandledRejectionHandler","addGlobalUnhandledRejectionInstrumentationHandler","instrumentUnhandledRejection","supportsHistory","chromeVar","isChromePackagedApp","hasHistoryApi","lastHref","addHistoryInstrumentationHandler","instrumentHistory","oldOnPopState","historyReplacementFunction","originalHistoryFunction","SENTRY_XHR_DATA_KEY","addXhrInstrumentationHandler","instrumentXHR","xhrproto","originalOpen","startTimestamp","parseUrl","onreadystatechangeHandler","xhrInfo","readyStateArgs","setRequestHeaderArgs","header","originalSend","sentryXhrData","isBrowserBundle","getSDKSource","isNodeEnv","isElectronNodeRenderer","memoBuilder","hasWeakSet","memoize","unmemoize","normalize","maxProperties","visit","normalizeToSize","maxSize","jsonSize","memo","stringified","stringifyValue","remainingDepth","valueWithToJSON","jsonValue","numAdded","visitable","visitKey","visitValue","objName","getConstructorName","prototype","utf8Length","States","RESOLVED","REJECTED","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","reason","executor","onfulfilled","onrejected","onfinally","isRejected","cachedHandlers","makePromiseBuffer","task","taskProducer","drain","counter","capturedSetTimeout","fragment","validSeverityLevels","severityLevelFromString","ONE_SECOND_IN_MS","dateTimestampInSeconds","createUnixTimestampInSecondsFunc","performance","approxStartingTimeOrigin","timeOrigin","timestampInSeconds","browserPerformanceTimeOrigin","threshold","performanceNow","dateNow","timeOriginDelta","timeOriginIsReliable","navigationStart","navigationStartDelta","navigationStartIsReliable","createEnvelope","headers","items","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItems","envelopeItem","envelopeItemType","encodeUTF8","textEncoder","serializeEnvelope","envHeaders","parts","append","itemHeaders","payload","stringifiedPayload","concatBuffers","buffers","totalLength","acc","buf","createAttachmentEnvelopeItem","attachment","ITEM_TYPE_TO_DATA_CATEGORY_MAP","envelopeItemTypeToDataCategory","getSdkMetadataForEnvelopeHeader","metadataOrEvent","createEventEnvelopeHeaders","sdkInfo","tunnel","dynamicSamplingContext","createClientReportEnvelope","discarded_events","timestamp","clientReportItem","DEFAULT_RETRY_AFTER","parseRetryAfterHeader","now","headerDelay","headerDate","disabledUntil","limits","dataCategory","isRateLimited","updateRateLimits","statusCode","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","namespaces","delay","category","_nullishCoalesce","lhs","rhsFn","_optionalChain","ops","lastAccessLHS","op","DEFAULT_ENVIRONMENT","getGlobalEventProcessors","addGlobalEventProcessor","notifyEventProcessors","processors","processor","final","makeSession","startingTime","session","sessionToJSON","updateSession","closeSession","status","TRACE_FLAG_SAMPLED","spanToTraceContext","span","span_id","trace_id","parent_span_id","origin","spanToJSON","spanTimeInputToSeconds","ensureTimestampInSeconds","spanIsSpanClass","spanIsSampled","traceFlags","prepareEvent","client","isolationScope","normalizeDepth","normalizeMaxBreadth","prepared","integrations","applyClientOptions","applyIntegrationsMetadata","applyDebugIds","finalScope","getFinalScope","clientEventProcessors","getGlobalScope","isolationData","mergeScopeData","finalScopeData","attachments","applyScopeDataToEvent","eventProcessors","evt","applyDebugMeta","normalizeEvent","environment","release","dist","request","debugIdStackParserCache","debugIdMap","debugIdStackFramesCache","cachedDebugIdStackFrameCache","filenameDebugIdMap","debugIdStackTrace","parsedStack","cachedParsedStack","stackFrame","images","filename","integrationNames","maxBreadth","captureContext","Scope","parseEventHintOrCaptureContext","hintIsScopeOrFunction","hintIsScopeContext","captureContextKeys","captureException","getCurrentHub","captureEvent","addBreadcrumb","breadcrumb","setContext","setUser","user","withScope","rest","hub","getClient","startSession","getIsolationScope","currentScope","userAgent","currentSession","endSession","_sendSessionUpdate","captureSession","getRootSpan","getDynamicSamplingContextFromClient","public_key","user_segment","dsc","getDynamicSamplingContextFromSpan","txn","v7FrozenDsc","maybeSampleRate","jsonSpan","fingerprint","breadcrumbs","sdkProcessingMetadata","applyDataToEvent","applySpanToEvent","applyFingerprintToEvent","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeData","extra","contexts","propagationContext","transactionName","mergeAndOverwriteScopeData","mergeVal","cleanedExtra","cleanedTags","cleanedUser","cleanedContexts","mergedBreadcrumbs","rootSpan","DEFAULT_MAX_BREADCRUMBS","globalScope","generatePropagationContext","newScope","requestSession","extras","scopeToMerge","scopeData","scopeContext","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","_breadcrumbs","_attachments","_contexts","_tags","_extra","_user","_level","_fingerprint","_eventProcessors","_propagationContext","_sdkProcessingMetadata","_transactionName","_span","additionalEventProcessors","newData","syntheticException","SDK_VERSION","API_VERSION","DEFAULT_BREADCRUMBS","Hub","_version","assignedScope","assignedIsolationScope","top","maybePromiseResult","beforeBreadcrumb","finalBreadcrumb","oldHub","makeMain","integration","customSamplingContext","sentry","getMainCarrier","getHubFromCarrier","setHubOnCarrier","getGlobalHub","hasHubOnCarrier","carrier","hasTracingEnabled","maybeOptions","startInactiveSpan","spanContext","normalizeContext","parentSpan","getActiveSpan","temporaryScope","createChildSpanOrTransaction","forceTransaction","traceId","parentSpanId","sampled","setCapturedScopesOnSpan","SCOPE_ON_START_SPAN_FIELD","ISOLATION_SCOPE_ON_START_SPAN_FIELD","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","enhanceEventWithSdkInfo","createSessionEnvelope","metadata","envelopeHeaders","createEventEnvelope","SENTRY_API_VERSION","getBaseApiEndpoint","_getIngestEndpoint","_encodedAuth","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","installedIntegrations","filterDuplicates","integrationsByName","existingInstance","getIntegrationsToSetup","defaultIntegrations","userIntegrations","finalIntegrations","debugIndex","findIndex","debugInstance","setupIntegrations","integrationIndex","setupIntegration","afterSetupIntegrations","convertIntegrationFnToClass","serializeMetricBuckets","metricBucketItems","tagEntries","maybeTags","createMetricEnvelope","createMetricEnvelopeItem","ALREADY_SEEN_ERROR","BaseClient","eventMessage","promisedEvent","capturedSpanScope","transport","clientFinished","transportFlushed","eventProcessor","forceInitialize","integrationId","integrationName","isAlreadyInstalled","env","sendResponse","_event","metricsEnvelope","crashed","errored","ex","mechanism","sessionNonTerminal","ticked","tick","interval","spanId","finalEvent","sentryError","sampleRate","isTransaction","isTransactionEvent","beforeSendLabel","capturedSpanIsolationScope","processBeforeSend","_validateBeforeSendResult","processedEvent","transactionInfo","outcomes","beforeSendResult","invalidValueError","beforeSend","beforeSendTransaction","addEventProcessor","initAndBind","clientClass","setCurrentClient","initializeClient","DEFAULT_TRANSPORT_BUFFER_SIZE","createTransport","makeRequest","rateLimits","send","filteredEnvelopeItems","getEventForEnvelopeItem","filteredEnvelope","recordEnvelopeLoss","requestTask","isSentryRequestUrl","hubOrClient","isHub","checkDsn","checkTunnel","applySdkMetadata","names","DEFAULT_IGNORE_ERRORS","DEFAULT_IGNORE_TRANSACTIONS","INTEGRATION_NAME","_inboundFiltersIntegration","_hint","clientOptions","mergedOptions","_mergeOptions","_shouldDropEvent","inboundFiltersIntegration","internalOptions","_isSentryError","_isIgnoredError","_isIgnoredTransaction","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","ignoreErrors","_getPossibleEventMessages","ignoreTransactions","denyUrls","allowUrls","possibleMessages","lastException","_getLastValidUrl","originalFunctionToString","SETUP_CLIENTS","_functionToStringIntegration","originalFunction","functionToStringIntegration","bindReporter","metric","reportAllChanges","forceReport","generateUniqueID","getNavigationEntryFromPerformanceTiming","timing","navigationEntry","getNavigationEntry","getActivationStart","navEntry","initMetric","navigationType","observe","opts","po","onHidden","once","onHiddenOrPageHide","firstHiddenTime","initHiddenTime","trackChanges","timeStamp","getVisibilityWatcher","reportedMetricIDs","onLCP","onReport","visibilityWatcher","report","handleEntries","lastEntry","stopListening","_previousLcp","addLcpInstrumentationHandler","stopOnCallback","addMetricObserver","instrumentLcp","addPerformanceInstrumentationHandler","instrumentPerformanceObserver","getCleanupCallback","previousValue","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","sentryWrapped","wrappedArguments","exceptionFromError","parseStackFrames","extractMessage","eventFromPlainObject","isUnhandledRejection","getNonErrorObjectExceptionValue","eventFromError","stacktrace","popSize","getPopSize","reactMinifiedRegexp","eventFromException","attachStacktrace","eventFromUnknownInput","eventFromMessage","eventFromString","domException","__sentry_template_string__","__sentry_template_values__","captureType","getObjectClassName","createUserFeedbackEnvelope","feedback","createUserFeedbackEnvelopeItem","BrowserClient","sdkSource","cachedFetchImpl","getNativeFetchImplementation","document","fetchImpl","contentWindow","clearCachedFetchImplementation","makeFetchTransport","nativeFetch","pendingBodySize","pendingCount","requestSize","requestOptions","XHR_READYSTATE_DONE","makeXHRTransport","xhr","UNKNOWN_FUNCTION","CHROME_PRIORITY","WINJS_PRIORITY","GECKO_PRIORITY","createFrame","lineno","colno","chromeRegex","chromeEvalRegex","chromeStackParserFn","subMatch","extractSafariExtensionDetails","chromeStackLineParser","geckoREgex","geckoEvalRegex","gecko","geckoStackLineParser","winjsRegex","winjs","winjsStackLineParser","defaultStackLineParsers","defaultStackParser","isSafariExtension","isSafariWebExtension","MAX_ALLOWED_STRING_LENGTH","_breadcrumbsIntegration","_options","_getConsoleBreadcrumbHandler","_getDomBreadcrumbHandler","_getXhrBreadcrumbHandler","_getFetchBreadcrumbHandler","_getHistoryBreadcrumbHandler","_getSentryBreadcrumbHandler","breadcrumbsIntegration","dom","componentName","element","_isEvent","endTimestamp","status_code","body","parsedLoc","parsedFrom","parsedTo","_dedupeIntegration","previousEvent","currentEvent","dedupeIntegration","_isSameMessageEvent","_isSameExceptionEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","previousException","_getExceptionFromEvent","currentException","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","_globalHandlersIntegration","_installGlobalOnErrorHandler","globalHandlerLog","_installGlobalOnUnhandledRejectionHandler","globalHandlersIntegration","getOptions","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","_getUnhandledRejectionError","_eventFromRejectionWithPrimitive","ERROR_TYPES_RE","groups","ev","ev0","ev0s","ev0sf","_httpContextIntegration","referrer","httpContextIntegration","DEFAULT_KEY","DEFAULT_LIMIT","_linkedErrorsIntegration","linkedErrorsIntegration","DEFAULT_EVENT_TARGET","_browserApiErrorsIntegration","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","browserApiErrorsIntegration","originalCallback","wrapOptions","globalObject","eventName","wrappedEventHandler","originalEventHandler","getDefaultIntegrations","init","startSessionTracking","REPLAY_SESSION_KEY","REPLAY_EVENT_NAME","UNABLE_TO_SEND_REPLAY","SESSION_IDLE_PAUSE_DURATION","SESSION_IDLE_EXPIRE_DURATION","DEFAULT_FLUSH_MIN_DELAY","DEFAULT_FLUSH_MAX_DELAY","BUFFER_CHECKOUT_TIME","RETRY_BASE_INTERVAL","RETRY_MAX_COUNT","NETWORK_BODY_MAX_SIZE","CONSOLE_ARG_MAX_SIZE","SLOW_CLICK_THRESHOLD","SLOW_CLICK_SCROLL_TIMEOUT","REPLAY_MAX_EVENT_BUFFER_SIZE","MIN_REPLAY_DURATION","MIN_REPLAY_DURATION_LIMIT","MAX_REPLAY_DURATION","_nullishCoalesce$1","_optionalChain$5","NodeType$1","NodeType","isElement$1","isShadowRoot","_2","isNativeShadowDom","shadowRoot","fixBrowserCompatibilityIssuesInCSS","escapeImportStatement","rule","statement","stringifyStylesheet","rules","stringifyRule","importStringified","isCSSImportRule","isCSSStyleRule","fixSafariColons","cssStringified","regex","Mirror","_3","_4","_5","childNode","oldNode","createMirror","shouldMaskInput","maskInputOptions","tagName","maskInputValue","isMasked","maskInputFn","toLowerCase","toUpperCase","ORIGINAL_ATTRIBUTE_NAME","is2DCanvasBlank","canvas","chunkSize","y","getImageData","originalGetImageData","pixel","getInputType","getInputValue","tagNameRegex","IGNORED_NODE","genId","getValidTagName","processedTagName","extractOrigin","canvasService","canvasCtx","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","quote1","path1","quote2","path2","path3","filePath","maybeQuote","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","getAbsoluteSrcsetString","attributeValue","pos","collectCharacters","regEx","chars","absoluteToDoc","descriptorsStr","inParens","isSVGElement","getHref","transformAttribute","maskAttributeFn","ignoreAttribute","_value","_isBlockedElement","blockClass","blockSelector","unblockSelector","eIndex","elementClassMatchesRegex","distanceToMatch","matchPredicate","distance","createMatchPredicate","needMaskingText","maskTextClass","maskTextSelector","unmaskTextClass","unmaskTextSelector","maskAllText","autocomplete","maskDistance","unmaskDistance","onceIframeLoaded","iframeEl","iframeLoadTimeout","win","fired","readyState","timer","blankUrl","onceStylesheetLoaded","styleSheetLoadTimeout","styleSheetLoaded","serializeNode","mirror","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","getRootId","serializeElementNode","serializeTextNode","docId","parentTagName","textContent","isStyle","isScript","isTextarea","_6","_7","_8","forceMask","isInputMasked","needBlock","attributes","stylesheet","canvasDataURL","blankCanvas","blankCanvasDataURL","image","recordInlineImage","width","lowerIfExists","maybeAttr","slimDOMExcluded","sn","slimDOMOptions","serializeNodeWithId","skipChild","onSerialize","onIframeLoad","onStylesheetLoad","stylesheetLoadTimeout","preserveWhiteSpace","_serializedNode","serializedNode","recordChild","bypassOptions","childN","serializedChildNode","iframeDoc","serializedIframeNode","serializedLinkNode","snapshot","maskAllInputs","slimDOM","_optionalChain$4","on","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle$1","wait","previous","remaining","hookSetter","isRevoked","replacement","nowTimestamp","getWindowScroll","_9","_10","_11","_12","_13","_14","getWindowHeight","getWindowWidth","isBlocked","checkAncestors","blockedPredicate","isUnblocked","blockDistance","unblockDistance","isSerialized","isIgnored","isAncestorRemoved","legacy_isTouchEvent","polyfill","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","_18","StyleSheetMirror","newId","getShadowHost","shadowHost","_19","_20","_21","getRootShadowHost","rootShadowHost","shadowHostInDom","inDom","cachedRequestAnimationFrameImplementation","getRequestAnimationFrameImplementation","requestAnimationFrameImplementation","onRequestAnimationFrame","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","_optionalChain$3","isNodeInLinkedList","DoubleLinkedList","moveKey","MutationBuffer","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","currentN","iframe","childSn","isParentRemoved","isAncestorInSet","candidate","tailNode","_node","unhandledNode","attribute","diffAsStr","unchangedAsStr","unattachedDoc","attributeName","old","pname","newPriority","nodeId","deepDelete","targetId","addsSet","removes","_isParentRemoved","_isAncestorInSet","errorHandler","registerErrorHandler","unregisterErrorHandler","callbackWrapper","_optionalChain$2","mutationBuffers","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","angularZoneSymbol","observer","initMoveObserver","mousemoveCb","sampling","callbackThreshold","positions","timeBaseline","wrappedCb","totalOffset","updatePosition","clientX","clientY","initMouseInteractionObserver","mouseInteractionCb","disableMap","currentPointerType","getHandler","pointerType","thisEventKey","initScrollObserver","scrollCb","scrollLeftTop","initViewportResizeObserver","viewportResizeCb","lastH","lastW","updateDimension","INPUT_TAGS","lastInputValueMap","initInputObserver","inputCb","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isChecked","cbWithDedup","lastInputValue","currentWindow","propertyDescriptor","hookProperties","getNestedCSSRulePositions","recurse","childRule","hasNestedCSSRule","getIdAndStyleId","sheet","styleMirror","styleId","initStyleSheetObserver","styleSheetRuleCb","stylesheetManager","insertRule","argumentsList","deleteRule","replaceSync","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","initAdoptedStyleSheetObserver","hostId","patchTarget","originalPropertyDescriptor","sheets","_15","_16","initStyleDeclarationObserver","styleDeclarationCb","ignoreCSSAttributes","setProperty","priority","_17","removeProperty","initMediaInteractionObserver","mediaInteractionCb","currentTime","volume","muted","playbackRate","initFontObserver","fontCb","fontMap","originalFontFace","family","descriptors","fontFace","restoreHandler","initSelectionObserver","selectionCb","collapsed","updateSelection","selection","ranges","count","startContainer","startOffset","endContainer","endOffset","initCustomElementObserver","customElementCb","constructor","initObservers","_hooks","mutationObserver","mousemoveHandler","mouseInteractionHandler","scrollHandler","viewportResizeHandler","inputHandler","mediaInteractionHandler","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","selectionObserver","customElementObserver","pluginHandlers","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","remoteIdToIdMap","ids","_optionalChain$1","IframeManagerNoop","IframeManager","crossOriginMessageEvent","transformedEvent","iframeMirror","ShadowDomManagerNoop","ShadowDomManager","iframeElement","manager","CanvasManagerNoop","StylesheetManager","linkEl","adoptedStyleSheetData","ProcessedNodeManager","thisBuffer","wrapEvent","eWithTime","_takeFullSnapshot","checkoutEveryNms","checkoutEveryNth","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordCrossOriginIframes","recordAfter","collectFonts","plugins","onMutation","getCanvasManager","inEmittingFrame","passEmitsToParent","lastFullSnapshotEvent","incrementalSnapshotCount","wrappedEmit","isCheckout","exceedCount","exceedTime","takeFullSnapshot","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","wrappedAdoptedStyleSheetEmit","iframeManager","processedNodeManager","canvasManager","_getCanvasManager","shadowDomManager","getCanvasManagerFn","ReplayEventTypeIncrementalSnapshot","ReplayEventTypeCustom","timestampToMs","timestampToS","addBreadcrumbEvent","replay","INTERACTIVE_SELECTOR","getClosestInteractive","getClickTargetNode","getTargetNode","isEventWithTarget","onWindowOpen","monkeyPatchWindowOpen","originalWindowOpen","handleClick","clickDetector","clickBreadcrumb","ClickDetector","slowClickConfig","_addBreadcrumbEvent","cleanupWindowOpen","nowInSeconds","ignoreElement","isClickBreadcrumb","newClick","click","timedOutClicks","hadScroll","hadMutation","isSlowClick","clickCount","timeAfterClickMs","endReason","SLOW_CLICK_TAGS","updateClickDetectorForRecordingEvent","isIncrementalEvent","isIncrementalMouseInteraction","createBreadcrumb","ATTRIBUTES_TO_RECORD","getAttributesToRecord","handleDomListener","handleDom","isClick","getBaseDomBreadcrumb","getDomTarget","handleKeyboardEvent","getKeyboardBreadcrumb","metaKey","shiftKey","ctrlKey","altKey","isInputElement","hasModifierKey","isCharacterKey","baseBreadcrumb","ENTRY_TYPES","createResourceEntry","createPaintEntry","createNavigationEntry","createPerformanceEntries","createPerformanceEntry","entry","getAbsoluteTime","time","entryType","startTime","decodedBodySize","domComplete","encodedBodySize","domContentLoadedEventStart","domContentLoadedEventEnd","domInteractive","loadEventStart","loadEventEnd","redirectCount","transferSize","initiatorType","responseEnd","responseStatus","getLargestContentfulPaint","setupPerformanceObserver","addPerformanceEntry","onEntries","clearCallbacks","clearCallback","logInfo","shouldAddBreadcrumb","addLogBreadcrumb","logInfoNextTick","EventBufferSizeExceededError","EventBufferArray","eventSize","eventsRet","WorkerHandler","worker","EventBufferCompressionWorker","EventBufferProxy","events","hasCheckout","addEventPromises","createEventBuffer","useCompression","customWorkerUrl","_loadWorker","workerUrl","_getWorkerUrl","hasSessionStorage","clearSession","deleteSession","isSampled","lastActivity","segmentId","previousSessionId","saveSession","getSessionSampleType","sessionSampleRate","allowBuffering","createSession","stickySession","fetchSession","traceInternals","sessionStringFromStorage","sessionObj","isExpired","initialTime","expiry","targetTime","isSessionExpired","maxReplayDuration","sessionIdleExpire","shouldRefreshSession","loadOrCreateSession","sessionOptions","existingSession","isCustomEvent","addEventSync","shouldAddEvent","_addEvent","addEvent","replayOptions","eventAfterPossibleCallback","maybeApplyCallback","timestampInMs","isReplayEvent","isFeedbackEvent","handleAfterSendEvent","enforceStatusCode","isBaseTransportSend","handleTransactionEvent","handleErrorEvent","replayContext","beforeErrorSampling","handleBeforeSendEvent","handleHydrationError","exceptionValue","isRrwebError","addFeedbackBreadcrumb","shouldSampleForBufferEvent","handleGlobalEventListener","includeAfterSendEventHandling","afterSendHandler","createPerformanceSpans","handleHistory","handleHistorySpanListener","shouldFilterRequest","addNetworkBreadcrumb","handleFetch","fetchData","handleFetchSpanListener","handleXhr","handleXhrSpanListener","getBodySize","formDataStr","_serializeFormData","parseContentLengthHeader","getBodyString","mergeWarning","warning","newMeta","existingWarnings","makeNetworkReplayBreadcrumb","buildSkippedNetworkRequestOrResponse","bodySize","buildNetworkRequestOrResponse","normalizedBody","warnings","normalizeNetworkBody","getAllowedHeaders","allowedHeaders","filteredHeaders","formData","exceedsSizeLimit","isProbablyJson","_strIsProbablyJson","truncatedBody","first","urlMatches","urls","fullUrl","getFullUrl","baseURI","fixedUrl","captureFetchBreadcrumbToReplay","_prepareFetchData","enrichFetchBreadcrumb","_getFetchRequestArgBody","reqSize","resSize","requestBodySize","responseBodySize","captureDetails","_getRequestInfo","_getResponseInfo","networkCaptureBodies","networkRequestHeaders","getRequestHeaders","requestBody","bodyStr","networkResponseHeaders","getAllHeaders","bodyText","_parseFetchResponseBody","getResponseData","_tryCloneResponse","_tryGetResponseText","allHeaders","getHeadersFromOptions","_getResponseText","txt","captureXhrBreadcrumbToReplay","_prepareXhrData","enrichXhrBreadcrumb","_getBodySize","getResponseHeaders","requestWarning","responseBody","responseWarning","_getXhrResponseBody","_parseXhrResponse","responseType","handleNetworkBreadcrumbs","networkDetailAllowUrls","networkDetailDenyUrls","beforeAddNetworkBreadcrumb","_isXhrBreadcrumb","_isXhrHint","_isFetchBreadcrumb","_isFetchHint","_LAST_BREADCRUMB","isBreadcrumbWithCategory","handleScopeListener","handleScope","newBreadcrumb","normalizeConsoleBreadcrumb","isTruncated","normalizedArgs","normalizedArg","addGlobalListeners","hasHooks","replayId","transaction","feedbackEvent","addMemoryEntry","createMemoryEntry","memoryEntry","jsHeapSizeLimit","totalJSHeapSize","usedJSHeapSize","debounce","callbackReturnValue","timerId","maxTimerId","maxWait","invokeFunc","cancelTimers","debounced","getHandleRecordingEmit","hadFirstEvent","_isCheckout","addSettingsEvent","earliestEvent","createOptionsEvent","createReplayEnvelope","replayEvent","recordingData","prepareRecordingData","payloadWithSequence","replayHeaders","sequence","prepareReplayEvent","event_id","eventHint","preparedEvent","sendReplayRequest","segment_id","eventContext","preparedRecordingData","errorIds","traceIds","initialTimestamp","baseEvent","TransportStatusCodeError","RateLimitError","sendReplay","replayData","retryConfig","THROTTLED","SKIPPED","throttle","maxCount","durationSeconds","_cleanup","_getTotalCount","isThrottled","wasThrottled","ReplayContainer","recordingOptions","slowClickTimeout","slowClickIgnoreSelectors","errorSampleRate","canvasOptions","forceFlush","continueRecording","activityTime","hasStoppedRecording","cbResult","urlPath","lastTransaction","_lastActivity","performanceEntries","eventBuffer","_context","tooShort","tooLong","mutationLimit","mutationBreadcrumbLimit","overMutationLimit","getOption","selectors","defaultSelectors","deprecatedClassOption","deprecatedSelectorOption","deprecatedSelectors","allSelectors","getPrivacyOptions","mask","unmask","block","unblock","ignore","defaultBlockedElements","maskSelector","unmaskSelector","maskAttribute","maskAttributes","privacyOptions","MEDIA_SELECTORS","DEFAULT_NETWORK_HEADERS","_initialized","replayIntegration$1","Replay$1","flushMinDelay","flushMaxDelay","minReplayDuration","_experiments","blockAllMedia","maskFn","beforeAddRecordingEvent","_getMergedNetworkHeaders","finalOptions","loadReplayOptionsFromClient","canvasIntegration","initialOptions","DEFAULT_HOOKS","classifyRE","classify","ROOT_COMPONENT_NAME","ANONYMOUS_COMPONENT_NAME","repeat","formatComponentName","vm","includeFile","file","generateComponentTrace","tree","currentRecursiveSequence","attachErrorHandler","warnHandler","silent","lifecycleHook","trace","hasConsole","VUE_OP","HOOKS","finishRootSpan","createTracingMixins","operation","internalHooks","internalHook","isRoot","oldSpan","globalWithVue","DEFAULT_CONFIG","_vueIntegration","integrationOptions","_setupIntegration","vueIntegration","vueInit","appWithInstance","config","init$1","Sentry.captureException","_imports_0$3","useHttp","checksum","http","email","password","loading","submit","sides","alignments","placements","side","min","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","direction","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","nextX","nextY","detectOverflow","_await$platform$isEle","elements","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","alignmentOffset","getPlacementList","autoAlignment","allowedPlacements","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","detectOverflowOptions","placements$1","overflow","currentIndex","currentPlacement","alignmentSides","currentOverflows","allOverflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","isBasePlacement","fallbackPlacements","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","_overflowsData$map$so","convertValueToCoords","mainAxisMulti","crossAxisMulti","mainAxis","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","apply","heightSide","widthSide","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","maximumClippingWidth","maximumClippingHeight","xMin","xMax","yMin","yMax","nextDimensions","getWindow","_node$ownerDocument","getComputedStyle$1","round","getCssDimensions","css","offsetWidth","offsetHeight","shouldFallback","getNodeName","isNode","uaString","getUAString","uaData","isHTMLElement","OwnElement","isOverflowElement","overflowX","overflowY","display","isTableElement","isContainingBlock","isFirefox","backdropFilter","contain","isLayoutViewport","isLastTraversableNode","unwrapElement","FALLBACK_SCALE","getScale","domElement","getBoundingClientRect","includeScale","isFixedStrategy","_win$visualViewport","_win$visualViewport2","clientRect","scale","addVisualOffsets","offsetWin","currentIFrame","iframeScale","iframeRect","getDocumentElement","getNodeScroll","convertOffsetParentRelativeRectToViewportRelativeRect","isOffsetParentAnElement","documentElement","offsets","offsetRect","getWindowScrollBarX","getDocumentRect","html","getParentNode","getNearestOverflowAncestor","getOverflowAncestors","scrollableAncestor","isBody","getViewportRect","visualViewport","layoutViewport","getInnerBoundingClientRect","left","getClientRectFromClippingAncestor","clippingAncestor","getClippingElementAncestors","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","currentNode","computedStyle","containingBlock","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getTrueOffsetParent","getContainingBlock","getOffsetParent","window","getRectRelativeToOffsetParent","getOffsetParentFn","getDimensionsFn","platformWithCache","computePosition$1","fe","Je","oe","me","ge","ie","se","ne","W","g","pe","X","G","K","H","We","Ge","qe","Ye","Xe","Ue","Ke","te","f","S","ae","Ze","Qe","ot","$e","et","de","tt","Ht","it","st","P","O","N","Me","ke","nt","rt","z","U","E","Be","pt","De","Ee","at","Le","dt","M","J","ht","lt","ut","ct","$","ft","mt","gt","T","Ie","Re","ee","Q","Z","$t","_t","A","B","D","I","R","w","F","V","Oe","ce","L","_e","we","ve","wt","vt","yt","Pt","Fe","Ve","ye","Pe","Tt","Te","q","C","Ct","Y","je","xe","St","be","he","Ce","le","Se","ze","ue","Ne","Ae","He","zt","xt","this","global","module","LoadingScreen","zIndex","showAccountMenu","accountMenu","getInitials","getFocusableElems","accountMenuKeydown","accountMenuItemKeydown","closeAccountMenu","menuButton","_imports_0$2","sampleProjects","showCreateProjectModal","createProjectModalView","newProjectName","newProjectPurposeStatement","newProjectResearchQuestions","showUpdateProjectModal","updateProjectId","updateProjectName","updateProjectPurposeStatement","updateProjectResearchQuestions","showDeleteSelectedProjectsModal","showReliabilityToolModal","reliabilityToolActiveView","reliabilityToolProjectId","reliabilityToolSnapshot","reliabilityToolRaters","reliabilityToolSendingInvite","reliabilityToolInviteInput","reliabilityToolInviteInputError","reliabilityToolRaterToDelete","showDeleteProjectModal","deleteProjectName","deleteProjectId","showTransferModal","transferProjectId","transferRecipient","transferRecipientInput","transferView","showShareModal","sharedUsers","emailsToInvite","shareProjectId","emailInvitesArr","emails","openUpdateModal","project","hideAllPoppers","openShareModal","openTransferModal","acceptProjectTransferRequest","updateProjects","declineProjectTransferRequest","createProjectTransferRequest","cancelProjectTransferRequest","openReliabilityToolModal","getReliabilityTool","createReliabilityToolSnapshot","deleteReliabilityToolSnapshot","createReliabilityToolInvite","sendReliabilityToolInvite","deleteReliabilityToolRater","downloadReliabilityToolResults","blob","saveAs","openDeleteProjectModal","createProjectInvite","removeSharedUser","leaveSharedProject","createProject","initializeSampleProject","transcriptsOnly","updateProject","deleteProject","deleteProjectModalDelete","deleteSelectedProjectsModalDelete","reqs","selectedProjects","sortBy","sortAscending","sortedProjects","proj","projectSearchTerm","returnVal","sortFunc","aDate","bDate","selectProject","checkAllProjects","toggleSelectProjects","lastProjectClicked","toggleSelectProject","lastClickedIndex","clickedIndex","combined","acceptInvitation","pmap","_imports_0$1","OrderedMap","newKey","place","without","findDiffStart","childA","childB","findDiffEnd","posA","posB","iA","iB","same","minSize","nodeStart","blockSeparator","leafText","separated","other","copy","otherPos","retIndex","curPos","schema","array","joined","nodes","compareDeep","Mark","placed","json","marks","ReplaceError","Slice","openStart","openEnd","insertInto","removeRange","openIsolating","indexTo","offsetTo","$from","$to","slice","replaceOuter","close","prepareSliceForReplace","replaceThreeWay","replaceTwoWay","checkJoin","main","sub","joinable","$before","$after","addNode","addRange","$start","$end","endIndex","$along","ResolvedPos","parentOffset","dOff","pred","NodeRange","rem","resolveCache","resolveCachePos","resolveCacheSize","emptyAttrs","Node","startPos","includeParents","wrapMarks","one","two","TextNode","ContentMatch","validEnd","string","nodeTypes","stream","TokenStream","expr","parseExpr","dfa","nfa","checkForDeadEnds","frag","toEnd","types","finished","tp","active","scan","tok","exprs","parseExprSeq","parseExprSubscript","parseExprAtom","parseExprRange","parseNum","resolveName","typeName","connect","edge","term","edges","loop","cmp","nullFrom","labeled","explore","states","work","dead","defaultAttrs","attrName","computeAttrs","built","given","initAttrs","Attribute","spec","markType","topType","MarkType","rank","Schema","instanceSpec","contentExprCache","contentExpr","markExpr","gatherMarks","excl","mark","ok","DOMParser","ParseContext","matches","blockTags","ignoreTags","listTags","OPT_PRESERVE_WS","OPT_PRESERVE_WS_FULL","OPT_OPEN_LEFT","wsOptionsFor","preserveWhitespace","NodeContext","pendingMarks","solid","nextType","pending","markMayApply","isOpen","topNode","topContext","topOptions","parseStyles","addMarks","removeMarks","nodeBefore","domNodeBefore","matchAfter","ruleID","normalizeList","sync","oldNeedsBlock","continueAfter","nodeType","startIn","contentDOM","cx","preserveWS","textNode","useRoot","minDepth","$context","deflt","findSameMarkInSet","upto","stashMark","prevItem","DOMSerializer","keep","markDOM","inline","toDOM","structure","xmlNS","space","innerContent","gatherToDOM","lower16","factor16","makeRecover","recoverIndex","recoverOffset","DEL_BEFORE","DEL_AFTER","DEL_ACROSS","DEL_SIDE","MapResult","delInfo","recover","StepMap","inverted","assoc","simple","oldIndex","oldSize","newSize","del","oldStart","newStart","Mapping","maps","mirrors","mapping","startSize","mirr","totalSize","inverse","corr","stepsByID","Step","stepClass","StepResult","failed","mapFragment","mapped","AddMarkStep","oldSlice","RemoveMarkStep","AddNodeMarkStep","newSet","RemoveNodeMarkStep","ReplaceStep","contentBetween","ReplaceAroundStep","gapFrom","gapTo","gap","inserted","addMark","tr","removed","added","removing","adding","removeMark","step","toRemove","clearIncompatible","parentType","replSteps","newline","canCut","liftTarget","lift","gapStart","gapEnd","splitting","wrappers","setBlockType","mapFrom","canChangeType","startM","endM","$pos","setNodeMarkup","newNode","canSplit","typesAfter","innerType","overrideChild","baseType","typeAfter","canJoin","join","insertPoint","dropPoint","bias","insertPos","fits","wrapping","replaceStep","fitsTrivially","Fitter","unplaced","fit","moveInline","placedSize","startDepth","sliceDepth","contentAt","frontierDepth","openAtEnd","dropFromFragment","taken","openEndCount","closeNodeStart","addToFragment","contentAfterFits","dropInner","open","invalidMarks","definesContent","replaceRange","targetDepths","coveredDepths","preferredTarget","preferredTargetIndex","leftNodes","preferredDepth","openDepth","targetDepth","expand","closeFragment","startSteps","oldOpen","newOpen","replaceRangeWith","point","deleteRange","covered","AttrStep","TransformError","Transform","classesById","Selection","$anchor","$head","SelectionRange","lastNode","lastParent","selectionToInsertionEnd","textOnly","TextSelection","findSelectionIn","AllSelection","selectionClass","warnedAboutTextSelection","checkTextSelection","TextBookmark","head","dPos","NodeSelection","deleted","NodeBookmark","sel","AllBookmark","startLen","_to","_newFrom","newTo","UPDATED_SEL","UPDATED_MARKS","UPDATED_SCROLL","Transaction","inheritMarks","bind","FieldDesc","desc","baseFields","_marks","_old","Configuration","EditorState","rootTr","trs","haveNew","oldState","newInstance","fields","field","$config","pluginFields","bindProps","Plugin","createKey","PluginKey","domIndex","reusedRange","textRange","isEquivalentPosition","off","targetOff","scanFor","atomElements","nodeSize","hasBlockDesc","isOnEdge","atStart","atEnd","selectionCollapsed","domSel","keyEvent","keyCode","deepActiveElement","elt","caretFromPoint","nav","agent","ie_edge","ie_upto10","ie_11up","ie_version","_chrome","chrome","chrome_version","safari","ios","mac","windows","android","webkit","webkit_version","windowRect","scaleX","scaleY","scrollRectIntoView","view","startDOM","scrollThreshold","scrollMargin","atTop","bounding","moveX","moveY","startX","startY","dX","dY","storeScrollPos","refDOM","refTop","localRect","scrollStack","resetScrollPos","newRefTop","restoreScrollStack","dTop","preventScrollSupported","focusPreventScroll","stored","findOffsetInNode","closest","dxClosest","coordsClosest","rowBot","rowTop","firstBelow","coordsBelow","childIndex","dx","findOffsetInText","singleRect","inRect","targetKludge","posFromElement","posFromCaret","outsideBlock","sawBlock","elementFromPoint","box","startI","posAtCoords","caret","nonZero","BIDI","coordsAtPos","atom","supportEmptyRange","rectBefore","rectAfter","flattenV","takeSide","flattenH","withFlushedState","viewState","endOfTextblockVertical","nearest","boxes","maybeRTL","endOfTextblockHorizontal","oldOff","anchorNode","anchorOffset","oldBidiLevel","parentDOM","newOff","cachedState","cachedDir","endOfTextblock","NOT_DIRTY","CHILD_DIRTY","CONTENT_DIRTY","NODE_DIRTY","ViewDesc","widget","outerDeco","innerDeco","nodeName","domBefore","domAfter","onlyNodes","nodeDOM","TrailingHackViewDesc","WidgetViewDesc","enter","fromOffset","toOffset","childBase","anchorDOM","headDOM","brKludge","domSelExtended","startInside","endInside","dirty","stop","CompositionViewDesc","textDOM","mut","MarkViewDesc","custom","replaceNodes","NodeViewDesc","descObj","applyOuterDeco","CustomNodeViewDesc","TextViewDesc","sameOuterDeco","composition","localComposition","compositionInChild","updater","ViewTreeUpdater","iterDeco","insideNode","compIndex","renderDescs","iosHacks","nearbyTextNode","textPos","findTextInFragment","needsWrap","oldDOM","patchOuterDeco","computeOuterDeco","docViewDesc","docView","skip","descs","written","childDOM","rm","OuterDecoLevel","noDeco","outerDOM","prevComputed","curComputed","curDOM","deco","patchAttributes","prevList","curList","lock","preMatch","maxKeep","markDesc","targetDesc","domNode","nextDOM","locked","ch","lastChild","hack","parentDesc","curDesc","descI","fI","compareSide","onWidget","onNode","locals","decoIndex","restNode","parentIndex","widgets","cutAt","oldCSS","childStart","selectionFromDOM","nearestDesc","inWidget","nearestDescNode","selectionBetween","editorOwnsSelection","hasSelection","selectionToDOM","syncNodeSelection","curSel","selectCursorWrapper","resetEditableFrom","resetEditableTo","brokenSelectBetweenUneditable","temporarilyEditableNear","resetEditable","removeClassOnSelectionChange","setEditable","img","clearNodeSelection","hasFocusAndSelection","anchorInRightPlace","moveSelectionBlock","$side","selectHorizontally","mods","nodePos","nodeLen","isIgnorable","skipIgnoredNodes","skipIgnoredNodesBefore","skipIgnoredNodesAfter","moveNode","moveOffset","setSelFocus","textNodeAfter","textNodeBefore","findDirection","mid","selectVertically","beyond","stopNativeHorizontalDelete","empty","nextNode","switchEditable","safariDownArrowBug","focusNode","focusOffset","getMods","captureKeyDown","serializeForClipboard","serializer","detachedDoc","firstChild","wrapMap","parseFromClipboard","plainText","inCode","asText","parsed","readHTML","restoreReplacedSpaces","contextNode","sliceData","inlineParents","addContext","closeSlice","normalizeSiblings","lastWrap","inLast","addToSibling","closeRight","withWrappers","sibling","closeRange","_detachedDoc","metas","firstTag","editHandlers","passiveHandlers","InputState","initInput","eventBelongsToView","runCustomHandler","ensureListeners","setSelectionOrigin","destroyInput","currentHandlers","dispatchEvent","inOrNearComposition","eventCoords","isNear","dy","runHandlerOnContext","propName","inside","selectClickedLeaf","selectClickedNode","selectedNode","selectAt","handleSingleClick","selectNode","handleDoubleClick","handleTripleClick","defaultTripleClick","forceDOMFlush","endComposition","selectNodeModifier","flushed","MouseDown","targetPos","timeoutComposition","scheduleComposeEnd","clearComposition","timestampFromCustomEvent","forceUpdate","captureCopy","brokenClipboardAPI","cut","sliceSingleNode","capturePaste","plain","doPaste","preferPlain","singleNode","Dragging","dragCopyModifier","mouseDown","dragging","eventPos","$mouse","beforeInsert","domChangeCount","$cursor","compareObjs","WidgetType","noSpec","oldOffset","Decoration","InlineType","none","DecorationSet","local","decorations","buildTree","predicate","childOff","newLocal","mapChildren","byPos","childOffset","baseOffset","takeSpansForNode","moveSpans","withoutNulls","dec","localSet","DecorationGroup","removeOverlap","members","mappedDecos","member","sorted","oldEnd","newEnd","dSize","mustRebuild","fromLocal","toLocal","mapAndGatherRemainingDecorations","spans","gather","hasNulls","localStart","subtree","working","insertAhead","viewDecorations","observeOptions","useCharData","SelectionState","DOMObserver","handleDOMChange","take","ancestors","newSel","typeOver","brs","readSel","checkCSS","previousSibling","cssChecked","cssCheckWarned","safariShadowSelectionRange","read","parseBetween","from_","to_","find","startDoc","ruleFromNode","isInline","readDOMChange","addedNodes","compositionID","shared","compare","preferredPos","preferredSide","change","findDiff","resolveSelection","$fromA","inlineChange","nextSel","looksLikeJoin","chFrom","chTo","storedMarks","markChange","isMarkChange","parsedSel","curMarks","prevMarks","$newStart","$newEnd","skipClosingAndOpening","$next","fromEnd","mayOpen","endA","endB","adjust","EditorView","checkStateComponent","getEditable","updateCursorWrapper","buildNodeViews","computeDocDeco","redraw","updateSel","pluginsChanged","nodeViews","changedNodeViews","updateDoc","oldScrollPos","forceSelUpdate","selectionContextChanged","chromeKludge","prevState","pluginView","dispatchTransaction","sel1","sel2","nA","nB","keyName","ignoreKey","normalizeKeyName","alt","ctrl","mod","keymap","keydownHandler","baseName","direct","fromCode","readFromCache","addToCache","cachePos","TableMap","problems","right","bottom","leftA","rightA","topA","bottomA","leftB","rightB","topB","bottomB","row","col","table","rowStart","rowEnd","rowEndIndex","computeMap","findWidth","mapPos","colWidths","rowNode","cellNode","colspan","rowspan","colwidth","colW","widthIndex","expectedPos","missing","tableMap","badWidths","findBadColWidths","hasRowSpan","rowWidth","prevRow","cell","colWidth","freshColWidth","tableNodeTypes","role","tableEditingKey","cellAround","cellWrapping","isInTable","selectionCell","$cell","cellNear","pointsAtCell","inSameTable","$cellA","$cellB","nextCell","tableStart","removeColSpan","addColSpan","columnIsHeader","headerCell","CellSelection","$anchorCell","$headCell","cells","tableChanged","rows","rowContent","cellRect","extraLeft","extraRight","anchorTop","headTop","anchorBottom","headBottom","anchorRect","headRect","anchorLeft","headLeft","anchorRight","headRight","anchorCell","headCell","CellBookmark","drawCellSelection","isCellBoundarySelection","afterFrom","beforeTo","isTextSelectionAcrossCells","fromCellBoundaryNode","toCellBoundaryNode","normalizeSelection","allowTableNodeSelection","NodeSelection2","lastCell","fixTablesKey","PluginKey2","changedDescendants","curSize","fixTables","fixTable","tablePos","mustAdd","prob","pastedCells","fitSlice","Slice2","ensureRectangular","widths","Fragment2","clipCells","newWidth","newHeight","newRows","growTable","emptyHead","start2","emptyRow","isolateHorizontal","cellTop","cellLeft","isolateVertical","updatePos","insertCells","dispatch","recomp","handleKeyDown","shiftArrow","deleteCellSelection","maybeSetSelection","Selection2","atEndOfCell","cellSel","baseContent","Slice3","handlePaste","Fragment3","handleMouseDown","startEvent","startDOMCell","domInCell","setCellSelection","cellUnderMouse","$anchor2","starting","TextSelection2","cellPos","dirStr","mousePos","TableView","cellMinWidth","updateColumnsOnResize","colgroup","overrideCol","overrideValue","totalWidth","fixedWidth","hasWidth","cssWidth","columnResizingPluginKey","PluginKey3","columnResizing","handleWidth","View","lastColumnResizable","ResizeState","pluginState","handleMouseMove","handleMouseLeave","handleMouseDown2","handleDecorations","activeHandle","handle","domCellAround","edgeCell","updateHandle","currentColWidth","finish","event2","pluginState2","updateColumnWidth","draggedWidth","dragged","displayColumnWidth","domWidth","mapIndex","zeroes","DecorationSet2","Decoration2","selectedRect","addColumn","refColumn","addColumnBefore","addColumnAfter","removeColumn","mapStart","deleteColumn","rowIsHeader","addRow","rowPos","refRow","addRowBefore","addRowAfter","removeRow","nextRow","newPos","deleteRow","isEmpty","cellsOverlapRectangle","indexTop","indexLeft","indexBottom","indexRight","mergeCells","Fragment4","mergedPos","mergedCell","splitCell","splitCellWithType","getCellType","baseAttrs","deprecated_toggleHeader","isHeaderEnabledByType","cellPositions","toggleHeader","isHeaderRowEnabled","isHeaderColumnEnabled","selectionStartsAt","cellsRect","newType","relativeCellPos","deleteTable","tableEditing","Plugin2","GOOD_LEAF_SIZE","RopeSequence","Append","Leaf","prototypeAccessors","leftLen","max_empty_items","Branch","eventCount","preserveItems","remap","transform","addAfter","addBefore","Item","histOptions","newItems","oldItems","lastItem","DEPTH_OVERFLOW","cutOffEvents","mirrorPos","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","newMaps","branch","cutPoint","mirrorOffset","HistoryState","undone","prevRanges","prevTime","prevComposition","applyTransaction","historyTr","historyKey","rebased","closeHistoryKey","appended","mustPreserveItems","rangesFor","newGroup","isAdjacentTo","mapRanges","adjacent","histTransaction","redo","pop","newHist","cachedPreserveItems","cachedPreserveItemsPlugins","hist","inputType","command","undo","__viteBrowserExternal","CryptoJS","Math","undefined","require","require$$0","cryptoSecureRandomInt","create","subtype","C_lib","Base","overrides","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","cfg","messageUpdate","hasher","C_algo","X32WordArray","C_x64","high","low","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","superInit","subInit","typedArrayByteLength","utf16Chars","codePoint","utf16Str","utf16StrLength","swapEndian","word","base64Chars","byte1","byte2","byte3","triplet","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","bits1","bits2","bitsCombined","urlSafe","Hasher","MD5","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","SHA1","isPrime","sqrtN","factor","getFractionalBits","nPrime","SHA256","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","sigma1","t1","t2","undef","require$$1","SHA224","X64Word","X64WordArray","X64Word_create","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1l","t1h","t2l","t2h","require$$2","SHA384","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","nBlockSizeLanes","M2i","M2i1","lane","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","hr","zl","zr","sl","sr","ar","br","cr","dr","er","f1","f2","f3","f4","f5","rotl","hasherBlockSize","hasherBlockSizeBytes","oKey","iKey","oKeyWords","iKeyWords","innerHash","hmac","HMAC","PBKDF2","salt","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","keySize","iterations","blockWords","blockWordsLength","intermediate","intermediateWords","EvpKDF","Base64","Cipher","xformMode","dataUpdate","finalProcessedData","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","finalProcessedBlocks","C_mode","BlockCipherMode","iv","CBC","xorBlock","thisBlock","C_pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","modeCreator","CipherParams","cipherParams","formatter","C_format","OpenSSLFormatter","openSSLStr","ciphertextWords","encryptor","cipherCfg","plaintext","format","C_kdf","OpenSSLKdf","ivSize","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","Encryptor","CTRGladman","incWord","b1","b2","b3","incCounter","OFB","ECB","lastBytePos","require$$3","require$$4","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AES","keyWords","nRounds","ksRows","keySchedule","ksRow","invKeySchedule","invKsRow","s0","s3","t0","t3","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","nSubKey","subKey","bitShift","invSubKeys","exchangeLR","exchangeRL","lBlock","rBlock","TripleDES","key1","key3","StreamCipher","RC4","keySigBytes","keyByteIndex","keyByte","generateKeystreamWord","keystreamWord","RC4Drop","C_","Rabbit","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","RabbitLegacy","ORIG_P","ORIG_S","BLOWFISH_CTX","BlowFish_Encrypt","Xl","Xr","temp","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","Blowfish","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","guid","byte","RFC3339DateString","pad","getColorFromString","markApplies","can","applyMarkToSelection","applyMark","toggleMark","isNodeInSelection","par","listToParagraph","paragraphs","ind","fromList","toList","wrapInList","listType","nodesBetweenList","listPos","sameType","levels","listId","nLevel","listItems","textIndent","pNode","li","fromBlockRange","listItemNode","toBlockRange","listRange","nodeSizes","fromReplacementPos","toReplacementPos","fromSelectOffset","outdentListItem","noIndent","newIndent","newLevel","listElems","insertTable","setNodeAttr","attrsToSet","applicable","dropdownExpanded","secondaryDropdownExpanded","insertTableUL","runCommand","resetInsertTableMenu","insertTableDropdownMouseover","nthChild","toggleDropdown","dropdown","toggleSecondaryDropdown","dropdownInputKeydown","UP","DOWN","SPACE","ENTER","secondaryDropdownInputKeydown","LEFT","RIGHT","closeDropdown","liKeydownEvent","TAB","ESC","END","HOME","activeIndex","increment","hideDropdownOnClick","isMarkActive","docMarks","activeMarks","activeFontFamily","activeFontSize","defaultFontFamily","fontFamilyOptions","defaultFontSize","fontSizeOptions","textColorOptions","insertTableOptions","deleteSelection","atBlockStart","joinBackward","$cut","findCutBefore","deleteBarrier","textblockAt","delStep","joinTextblockBackward","joinTextblocksAround","beforeText","beforePos","afterText","afterPos","only","selectNodeBackward","atBlockEnd","joinForward","findCutAfter","selectNodeForward","newlineInCode","defaultBlockAt","exitCode","above","createParagraphNear","liftEmptyBlock","splitBlockAs","splitNode","splitType","$first","splitBlock","selectAll","joinMaybeClear","conn","canDelAfter","joinAt","selAfter","afterDepth","selectTextblockSide","selectTextblockStart","selectTextblockEnd","chainCommands","commands","backspace","pcBaseKeymap","macBaseKeymap","baseKeymap","GapCursor","GapBookmark","closedBefore","closedAfter","override","mustMove","$cur","gapCursor","drawGapCursor","_view","beforeinput","$found","clickPos","findIntersection","arr1","arr2","set1","set2","intersection","getCellAttrs","widthAttr","setCellAttrs","getDocumentSchema","symbols","newSymbol","fontSize","fs","fontFamily","font","color","codeIdsArr","useDebouncedRef","scrollContainer","documentContainer","documentRenderer","beginEditOverlay","pmView","pmState","documentSchema","splitListItem","keyBindMap","updateList","startSlice","currentId","lvlIndex","containsExcerpt","markFound","nextTextNode","prevTextNode","$prev","getExcerptsAtPos","excerpts","$excerptPos","hoveredFrom","hoveredTo","excerptFrom","excerptTo","$hoveredFrom","$hoveredTo","originalHTML","initializeProsemirrorDocument","isEmptyNode","addExcerpts","fromExcerpts","toExcerpts","toFromOverlap","ov","isList","confirmCancelEdits","cancelEdits","useMemos","createMemo","projectid","title","createdAt","newMemoTitle","newMemoText","newMemoTags","newTagToAdd","newCreatedAt","newCreatedAtMax","errorMessage","createMemoModalCreate","existingMemoTags","addNewTag","resetCreateMemoVariables","year","month","day","hours","minutes","getDiff","oldstr","newstr","oldarr","newarr","to1","to2","deleteCodesInHTML","replaceCodeIdsInHTML","mergeCodesInHTML","originalIds","txRequests","transcript","originalId","second","saveTranscript","unassignCodeFromExcerpt","transcriptid","codeid","excerptid","tx","updateCodesForExcerpt","removeTagFromExcerpt","currentTags","addTagToExcerpt","deleteExcerpt","deleteExcerpts","excerptids","excerptMap","divs","pmDiv","req","useCodebook","deleteCodes","deleteThemes","activeModalView","selectCodesView","selectedCodes","activeExcerpt","activeExcerptCodes","showSelectCodesView","resetSelectedCodes","cancelSelectCodes","toggleCode","removeExcerpt","transcriptId","unassignCode","codeId","updateCodes","addTag","removeTag","activeView","activeCode","activeCodeExcerpts","renameCodeError","updateCode","oldCode","confirmUnassignExcerpt","lim","p2b","n2b","b2n","n2p","map$1","hex","h1","eq","isShort","hexParse","alpha","hexString","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","hueValue","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","p1","p2","rotate","deg","hslString","names$1","unpack","unpacked","tkeys","nk","nameParse","RGB_RE","rgbParse","rgbString","interpolate","rgb1","rgb2","modHSL","ratio","fromObject","functionParse","Color","weight","w2","w1","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toPercentage","dimension","toDimension","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","klen","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","keyResolvers","_splitKey","_getKeyResolver","resolveObjectKey","_capitalize","defined","setsEqual","_isClickEvent","PI","TAU","PITAU","INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","niceNum","roundedRange","niceRange","fraction","_factorize","sqrt","isNumber","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","hi","lo","_lookupByKey","ti","_rlookupByKey","_filterBetween","arrayEvents","listenArrayEvents","unlistenArrayEvents","stub","_arrayUnique","requestAnimFrame","throttled","argsToUse","ticking","_toLeftRightCenter","align","_alignStartEnd","_textX","atEdge","elasticIn","elasticOut","isPatternOrGradient","getHoverColor","numbers","colors","applyAnimationsDefaults","applyLayoutsDefaults","intlCache","getNumberFormat","locale","cacheKey","formatNumber","num","formatters","tickValue","ticks","notation","maxTick","calculateDelta","logDelta","numDecimal","remain","Ticks","applyScaleDefaults","_ctx","getScope$1","Defaults","_descriptors","_appliers","targetScope","targetName","scopeObject","targetScopeObject","privateName","appliers","toFontString","_measureText","gc","longest","textWidth","_longestText","arrayOfThings","jlen","thing","nestedThing","gcLen","_alignPixel","chart","devicePixelRatio","halfWidth","clearCanvas","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","rotation","radius","rad","_isPointInArea","area","margin","clipArea","unclipArea","_steppedLineTo","midpoint","_bezierCurveTo","setRenderOpts","decorateText","metrics","yDecoration","drawBackdrop","oldColor","renderText","stroke","addRoundedRectPath","LINE_HEIGHT","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","inputs","cacheable","_addGrace","minmax","grace","beginAtZero","keepZero","createContext","parentContext","_createResolver","scopes","rootScopes","getTarget","finalRootScopes","_resolve","_cached","_resolveWithPrefixes","getKeysFromAllScopes","storage","_attachContext","subProxy","descriptorDefaults","_resolveWithContext","_scriptable","_indexable","_allKeys","readKey","prefix","needsSubResolver","_proxy","_subProxy","_resolveScriptable","_resolveArray","_stack","createSubResolver","isIndexable","resolver","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","iScale","EPSILON","getPoint","points","getValueAxis","indexAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","controlPoints","_isDomSupported","_getParentNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","getStyle","getPositionedStyle","suffix","useOffsetPos","getCanvasPosition","touches","offsetX","offsetY","getRelativePosition","currentDevicePixelRatio","borderBox","paddings","borders","getContainerSize","maxWidth","maxHeight","containerStyle","containerBorder","containerPadding","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRightToLeftAdapter","rectX","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","restoreTextDirection","propertyFn","normalizeSegment","getSegment","bounds","startBound","endBound","between","_boundSegment","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","findStartAndEnd","spanGaps","solidSegments","_computeSegments","segmentOptions","splitByStyles","completeLoop","doSplitByStyles","chartContext","baseStyle","readStyle","datasetIndex","prevStyle","addStyle","styleChanged","Animator","anims","date","callbacks","numSteps","draw","charts","animator","transparent","interpolators","c0","Animation","elapsed","promises","rej","Animations","animationOptions","animatedProps","newOptions","resolveTargetOptions","animations","awaitAll","running","animation","anim","scaleClip","allowedOverflow","defaultClip","xScale","yScale","toClip","getSortedDatasetIndices","filterVisible","metasets","applyStack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","getUserBounds","minDefined","maxDefined","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","updateStacks","controller","iAxis","vAxis","itemStacks","visualValues","getFirstScaleId","scales","createDatasetContext","createDataContext","clearStacks","isDirectUpdateMode","cloneIfNotShared","createStack","canStack","DatasetController","dataset","chooseId","xid","yid","rid","iid","vid","scaleID","_data","resetNewElements","stackChanged","oldStacked","scopeKeys","_stacked","isNotInOrderComparedToPrev","labels","singleScale","xAxisKey","yAxisKey","parsedValue","_parsed","otherScale","otherMin","otherMax","_skip","drawActiveElementsOnTop","elementType","sharing","sharedOptions","firstOpts","previouslySharedOptions","includeOptions","arg1","arg2","numMeta","numData","newCount","__publicField","getAllScaleValues","visibleMetas","computeMinSampleSize","curr","updateMinAndPrev","computeFitCategoryTraits","ruler","stackCount","thickness","computeFlexCategoryTraits","pixels","percent","parseFloatBar","startValue","endValue","barStart","barEnd","parseValue","parseArrayOrPrimitive","isFloatBar","barSign","actualBase","borderProps","setBorderSkipped","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","bars","horizontal","vpixels","ipixels","dataIndex","skipNull","barThickness","baseValue","minBarLength","startPixel","endPixel","halfGrid","maxBarThickness","stackIndex","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","DoughnutController","chartArea","arcs","spacing","chartWeight","maxRadius","outerRadius","innerRadius","radiusLength","animationOpts","centerX","centerY","animateScale","arc","metaData","total","ringWeightOffset","pointStyle","label","legendItem","legend","PieController","RadarController","pointPosition","abstract","DateAdapterBase","adapters","binarySearch","metaset","intersect","_sorted","lookupMethod","evaluateInteractionItems","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","useFinalPosition","includeInvisible","getNearestRadialItems","evaluationFunc","getNearestCartesianItems","distanceMetric","minDistance","inRange","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","layoutBoxes","stackWeight","buildStacks","layouts","setLayoutDims","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","buildLayoutBoxes","centerHorizontal","centerVertical","getCombinedMax","updateMaxPadding","boxPadding","updateDims","widthChanged","heightChanged","handleMaxPadding","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","changed","setBoxDims","placeBoxes","userPadding","layoutItem","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","BasePlatform","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","isNullOrEmpty","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","eventListenerOptions","addListener","removeListener","fromNativeEvent","nodeListContains","nodeList","createAttachObserver","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","resize","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","releaseObserver","createProxyAndListen","DomPlatform","initial","proxies","_detectPlatform","Element","autoSkip","tickOpts","determinedMaxTicks","determineMaxTicks","ticksLimit","majorIndices","getMajorIndices","numMajorIndices","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","tickLength","maxScale","maxChart","evenMajorSpacing","getEvenSpacing","factors","majorStart","majorEnd","reverseAlign","offsetFromEdge","getTicksLimit","ticksLength","maxTicksLimit","sample","numItems","getPixelForGridLine","offsetGridLines","validIndex","lineValue","garbageCollect","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","Scale","_userMin","_userMax","_suggestedMin","_suggestedMax","sampleSize","samplingEnabled","reversePixels","numTicks","minRotation","maxRotation","labelRotation","tickWidth","maxLabelDiagonal","labelSizes","maxLabelWidth","maxLabelHeight","titleOpts","gridOpts","isHorizontal","titleHeight","widest","highest","tickPadding","angleRadians","cos","sin","labelHeight","labelWidth","isRotated","labelsBelowTicks","offsetLeft","offsetRight","paddingLeft","paddingRight","paddingTop","paddingBottom","heights","widestLabelSize","highestLabelSize","tickFont","fontString","lineHeight","nestedLabel","valueAt","decimal","optionTicks","rot","grid","border","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","y2","optsAtIndex","optsAtIndexBorder","lineWidth","lineColor","borderDash","borderDashOffset","tickColor","tickBorderDash","tickBorderDashOffset","crossAlign","tickAndPadding","hTickAndPadding","textAlign","lineCount","textOffset","textBaseline","halfCount","strokeColor","strokeWidth","tickTextAlign","backdrop","labelPadding","backgroundColor","drawLine","lastLineWidth","renderTextOptions","tz","gz","bz","axisID","TypedRegistry","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","propertyParts","sourceName","sourceScope","Registry","typedRegistry","reg","itemReg","camelMethod","PluginService","filter","all","allPlugins","createDescriptors","previousDescriptors","localIds","getOpts","pluginOpts","getIndexAxis","datasetDefaults","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","idMatchesAxis","axisFromPosition","determineAxis","scaleOptions","getAxisFromDataset","retrieveAxisFromDatasets","boundDs","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","datasetType","mainScope","resetCache","_scopeCache","keyLists","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","isScriptable","scriptable","indexable","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","onAnimationsComplete","onAnimationProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","getDatasetArea","Chart","invalidatePlugins","userConfig","initialCanvas","existingChart","maintainAspectRatio","_aspectRatio","newRatio","scalesOptions","axisOptions","scaleOpts","isRadial","scaleType","scaleClass","hasUpdated","datasets","newControllers","ControllerClass","datasetElementType","dataElementType","animsDisabled","_active","_lastEvent","existingEvents","newEvents","_hiddenIndices","changes","_dataChanges","datasetCount","makeSet","changeSet","noArea","layers","clip","useClip","visible","_add","_remove","attached","activeElements","lastActive","pluginId","hoverOptions","eventFilter","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","rThetaToXY","theta","pathArc","circular","innerR","spacingOffset","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStart","outerEnd","innerStart","innerEnd","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","drawBorder","borderWidth","borderJoinStyle","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","fix","radiusOffset","lineTo","getLineMethod","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","avgX","countX","prevX","lastY","pointIndex","drawX","truncX","_getSegmentMethod","_getInterpolationMethod","strokePathWithCache","strokePathDirect","segmentMethod","usePath2D","LineElement","_interpolate","interpolated","inRange$1","PointElement","mouseX","mouseY","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","enableBorderRadius","maxR","enableBorder","boundingRects","skipX","skipY","hasRadius","addNormalRectPath","inflateRect","amount","refRect","BarElement","borderColor","addRectPath","_segments","tpoints","_findSegmentEnd","_getBounds","targetSegments","tgt","subBounds","fillSources","fillSource","_getEdge","_pointsFromSegments","linePoints","_createBoundaryLine","_loop","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","simpleArc","_getTarget","getLineByIndex","computeBoundary","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","doFill","clipVertical","clipY","lineLoop","lastPoint","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","_args","getBoxSize","labelOpts","boxHeight","boxWidth","itemsEqual","Legend","legendItems","labelFont","itemHeight","hitboxes","lineWidths","totalHeight","_itemHeight","columnSizes","heightLimit","currentColHeight","calculateItemSize","rtlHelper","hitbox","defaultColor","halfFontSize","cursor","drawLegendBox","drawOptions","yBoxTop","xBoxLeft","borderRadius","fillText","realX","fontLineHeight","calculateLegendItemHeight","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","isListened","hoveredItem","sameItem","calculateItemWidth","calculateItemHeight","legendItemText","plugin_legend","ci","usePointStyle","useBorderRadius","Title","textSize","fontOpts","createTitle","plugin_title","titleBlock","positioners","eventPosition","nearestElement","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","bodyLineHeight","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","caretSize","caretPadding","topLeft","topRight","bottomLeft","bottomRight","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","defaultCallbacks","labelCount","tooltipItem","invokeCallbackWithFallback","Tooltip","beforeTitle","afterTitle","bodyItems","scoped","beforeFooter","afterFooter","labelColors","labelPointStyles","labelTextColors","positionAndSize","backgroundPoint","tooltipPoint","caretPosition","ptX","ptY","x3","y3","titleSpacing","labelColor","labelPointStyle","colorX","rtlColorX","yOffSet","colorY","outerX","innerX","bodySpacing","bodyAlign","displayColors","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","tooltipSize","animX","animY","opacity","hasTooltipContent","positionChanged","caretX","caretY","plugin_tooltip","addIfString","addedLabels","findOrAddLabel","_getLabelForValue","CategoryScale","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","LinearScaleBase","setMin","setMax","minSign","maxSign","stepSize","numericGeneratorOptions","LinearScale","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","startExp","generateTicks","minExp","exp","significand","lastTick","LogarithmicScale","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","valueCount","pointLabelOpts","additionalAngle","plFont","hLimits","vLimits","updateLimits","buildPointLabelItems","createPointLabelItem","itemOpts","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","isNotOverlapped","centerPointLabels","drawPointLabelBox","backdropColor","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","pointLabels","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","angleLines","INTERVALS","UNITS","sorter","adapter","isoWeekday","determineUnitForAutoTicks","minUnit","capacity","determineUnitForFormatting","determineMajorUnit","addTick","timestamps","setMajorTicks","majorUnit","major","ticksFromTimestamps","TimeScale","_applyBounds","timeOpts","minor","weekday","hasWeekday","formats","fmt","minorFormat","majorFormat","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","displayFormats","exampleLabel","prevSource","nextSource","prevTarget","TimeSeriesScale","HELPER","gaussian","toSampleVariance","variance","nrd","iqr","kde","stats","bandwidth","sum","quantilesInterpolate","compute","quantilesType7","quantilesLinear","quantilesLower","quantilesHigher","quantilesNearest","quantilesMidpoint","quantilesFivenum","n4","quantilesHinges","createSortedData","vs","validData","withSortedData","computeWhiskers","eps","quantiles","coef","whiskersMode","median","q1","q3","isCoefValid","whiskerLow","whiskerHigh","outlierLow","reversedOutlierHigh","outlier","computeStats","mean","boxplot","fullOptions","invalid","whiskers","coefValid","whiskerMin","whiskerMax","defaultStatsOptions","determineQuantiles","determineStatsOptions","boxplotStats","computeSamples","samples","inc","violinStats","maxEstimate","asBoxPlotStats","asViolinStats","rnd","seed","baseDefaults$1","baseRoutes","baseOptionKeys","StatsBase$1","vert","random","pointOptions","outliers","_useFinalPosition","hitRadius","vertical","toCompare","itemInfo","boxOptionsKeys","BoxAndWiskers","x0","y0","Violin","interpolateNumberArray","interpolateKdeCoords","patchInHoveredOutlier","that","outlierPositioner","baseDefaults","colorKeys","defaultOverrides","StatsBase","mapper","bak","rectangle","patchController","BoxPlotController","BoxPlotChart","ViolinController","ViolinChart","chartCanvas","Filler","useCharts","colorPalette","getCodeCountsByTranscript","getDataForCodeCountsByTranscript","codesBarPlot","codeCounts","getCodeCounts","freqs","codesByTranscriptsBarPlot","codesByTranscriptsStackedBarPlot","codeCount","getThemeCounts","themeCount","themeBarPlot","subthemes","themePieChart","themeCounts","subtheme","tooltipEl","tooltipModel","getBody","titleLines","bodyLines","titleDiv","colorDiv","titleText","themesBarPlot","getThemeCountsByTranscript","themeCountsByTranscript","themeId","getDataForThemesByTranscripts","frequencies","themesByTranscriptsBarPlot","themesByTranscriptsStackedBarPlot","transcriptsByThemesStackedBarPlot","deleteOption","activeTheme","pieChart","activeThemeParent","activeThemeSubthemes","activeThemeCodes","activeThemeExcerpts","excerptIds","renameThemeError","updateTheme","oldTheme","statusMessage","pollingId","startPolling","poll","stopPolling","getAutoCodingResults","codeFeedback","showCancelWarning","applyChanges","refineResults","approved","rejected","cancelJob","resumeJob","startAutoCoding","showDescriptionTooltip","tooltipRect","hideDescriptionTooltip","nthemes","suggestions","defaultSolution","requests","suggestion","themeres","editTranscriptId","showCreateMemoModal","showExcerptDetailsModal","showAutoCodingModal","codebookSidebarElem","transcriptSidebarElem","showTranscriptSidebar","showCodebookSidebar","hiddenCodes","toggleCodeVisibilityModal","codeVisibilityStyles","isCodeVisibilityToggled","toggleCodeVisibilityMode","toggleCodeVisibility","showAllCodesInTranscript","hideAllCodesInTranscript","toggleCodeVisibilityByCodeId","toggleCodeVisibilityByTheme","codeids","showCodes","updateExcerptStripes","cssSelectors","selectedExcerpt","isExcerptHidden","removeSelectedExcerpt","codeIdsAttr","getClosestExcerpt","comparison","cLength","getTextNodesInRange","commonAncestor","walk","textNodes","wrapTextNode","wrapTextNodes","getOffsetFromPosition","hoveredExcerptId","currentTextSelection","setHoveredExcerpt","removeHoveredExcerpt","onDocumentMousemove","onDocumentRendererMouseleave","selectExcerpt","removeTextSelection","dragIcon","ispan","fromBound","dragExcerptHandle","toBound","dragElem","dragMouseDown","handles","docHtmlBeforeDrag","removeExcerptStripes","onSelectionChange","closeDragElement","elementDrag","onDocumentRendererClick","getTextNodeBefore","rangeToTextSelection","updateCodingDocument","transcriptSidebarWidth","codebookSidebarWidth","changeTranscript","transcriptSidebarResizerMousedown","resizeTranscriptSidebar","stopResize","_b","codebookSidebarResizerMousedown","resizeCodebookSidebar","txSidebarWidth","expandTranscriptSidebar","collapseTranscriptSidebar","expandCodebookSidebar","collapseCodebookSidebar","selectedThemes","showDeleteSelectedItemsModal","showMergeCodesModal","mergeCodesTarget","mergeCodesSelectedIds","showDeleteCodeModal","aiCodeName","aiCodeNameSuggestion","aiCodeNameError","aiCodeDescription","aiCodeDescriptionSuggestion","aiCodeError","showAddCodeModal","addCodeModalView","addCodeName","addCodeNameError","addCodeDescription","codeToDelete","showAddThemeModal","addThemeModalView","addThemeName","addThemeNameError","addThemeDescription","aiThemeName","aiThemeNameSuggestion","aiThemeNameError","aiThemeDescription","aiThemeDescriptionSuggestion","aiThemeSelectedCodes","aiThemeError","applyAIThemeConfirmation","aiThemeAddCodes","createCode","description","codeReq","createCodeAndAddSelection","addCodeToSelection","deleteCode","memoTitle","memoStr","_c","memoTags","closeCodeDetailsModal","createAITheme","createTheme","deleteTheme","codesToDelete","_f","_d","_i","_h","_g","closeThemeDetailsModal","suggestAICode","startText","selectedText","endText","characterLimit","selectionLimit","characterDiff","suggestAITheme","openAddCodeModal","openAddThemeModal","lastThemeClicked","toggleSelectTheme","sortedThemes","themeCodeTree","themeIdsToAdd","subthemeId","codeIdsToAdd","themeIdsToRemove","subthemeIndex","codeIdsToRemove","codeIndex","pIndex","lastCodeClicked","toggleSelectCode","sortedCodes","themeIndex","curTheme","parentTheme","parentThemeIndex","deleteSelectedItems","_j","_n","_m","_l","_k","openDeleteCodeModal","closeDeleteCodeModal","deleteCodeModalDelete","openMergeCodesModal","targetCode","closeMergeCodesModal","mergeCodesModalMerge","mergeCodes","oxfordList","strings","targetid","deletedCodeNames","deleteIds","deletedCode","showMergeThemesModal","mergeThemesSelectedIds","mergeThemesTarget","showDeleteThemeModal","deleteThemesOption","themeToDelete","openDeleteThemeModal","closeDeleteThemeModal","deleteThemeModalDelete","themeOption","openMergeThemesModal","targetTheme","closeMergeThemesModal","mergeThemesModalMerge","mergeThemes","themeReqs","codeReqs","deletedThemeNames","deleteThemeReqs","deletedTheme","codeSearchTerm","codeExcerptCount","themeExcerptCount","setThemeExcerptCounts","totalExcerptCount","subthemeTotalExcerptCount","draggedNode","searchTerm","th","themesMap","nest","nestedItems","unassigned","draggedNodeOriginalParent","preventCursorNotAllowedOnDragging","handleDragStart","handleDragOver","nodeTo","themeDraggedToUnassignedCodes","themeDraggedIntoChild","themeDraggedIntoSelf","handleDragEnd","handleRootDragOver","showCodeDetailsModal","activeCodeId","openCodeDetailsModal","showThemeDetailsModal","activeThemeId","openThemeDetailsModal","goToExcerpt","showDeleteSelectedTranscriptsModal","fileInput","audioFileInput","showUploadTranscriptModal","activeUploadTranscriptModalView","selectedTranscripts","activeTranscript","showTranscriptDetailsModal","activeTranscriptModalView","transcriptSearchTerm","transcriptToDelete","showDeleteTranscriptModal","openDeleteTranscriptModal","closeDeleteTranscriptModal","deleteTranscriptModalDelete","deleteTranscript","lastTranscriptClicked","toggleSelectTranscript","sortedTranscripts","deleteSelectedTranscripts","deleteTranscripts","readFile","fr","sanitizeTranscriptUploadFile","listConversions","divRendered","listNodes","isNested","divList","convertList","previousListNode","listAtLevel","listNode","plist","createTranscript","transcriptName","create_request","txReq","openUploadTranscriptModalDefaultView","filesLoading","uploadTranscripts","sleep","uploadFiles","files","uploadedTranscripts","uploadPromises","transcriptIndex","ext","contents","url_request","percentComplete","processing_request","prdata","checkTranscriptStatus","prerr","transcriptList","ms","dlreq","deletedTranscript","renameTranscriptError","renameTranscript","newName","closeTranscriptDetailsModal","transcripts","transcriptDetails","transcriptDetailsDeleteTranscript","openTranscriptDetailsModal","downloadTranscript","downloadAllTranscripts","zip","JSZip","charCount","goToSelection","matchIndex","sentence","currentScrollPos","activeMatchIndex","showSearchTranscriptsMode","searchTranscriptsTerm","searchTranscriptsInput","searchTranscriptsMatches","searchResultsLoading","openSearchTranscriptsMode","splitHtmlIntoSentences","sentences","walker","remainingText","searchTranscripts","preview","downloadCodebook","thememap","escapeForCSV","codebookFileInput","codebookUploading","codebookUploadProgress","uploadCodebook","themesReq","themesRes","tdata","codeRes","cdata","closeExcerptDetailsModal","showAIToolsModal","showThematizingModal","autoCodingMethod","createExcerptWithRange","excerptSpan","addCodeToSelectionEvent","toggleCodeForSelectedExcerptEvent","toggleCodeForSelectedExcerpt","excerptStripes","lastBottom","excerptStripeBounds","docRight","excerptIdsSet","stripeColumn","button","editTranscript","saveTranscriptEditing","cancelTranscriptEditing","htmlHasContent","fname","lname","usertype","leadsource","queryParams","selectedExcerpts","showDeleteExcerptsModal","checkAllExcerpts","toggleSelectExcerpts","lastExcerptClicked","toggleSelectExcerpt","openExcerptDetailsModal","confirmDeleteExcerpts","excerptSearchTerm","transcriptFilterFunction","contentFilterFunction","codeFilterFunction","themeFilterFunction","out1","aName","bName","isFilterSet","clearAllFilters","applyFilters","selectAllTranscripts","transcriptFilter","openTranscriptFilterDropdown","contentFilter","openContentFilterDropdown","selectAllCodes","codeFilter","openCodeFilterDropdown","selectAllThemes","themeFilter","openThemeFilterDropdown","downloadExcerpts","arrayToCsv","transcriptmap","txName","tName","showDeleteSelectedMemosModal","showDeleteMemoModal","deleteMemoId","memoView","memoSearchTerm","selectedMemos","checkAllMemos","showMemoDetailsModal","activeMemo","createdAtMax","activeMemoErrorMessage","changeMemoView","openDeleteMemoModal","deleteMemoModalDelete","deleteMemo","deleteSelectedMemosModalDelete","deleteMemos","sortedMemos","memos","inTitle","inText","inTags","toggleSelectMemos","lastMemoClicked","toggleSelectMemo","openMemoDetailsModal","createdAtY","createdAtM","createdAtD","createdAtH","createdAtMin","updateMemo","oldMemo","memoDetailsModalSave","formatDateToCustomString","months","hour","minute","ampm","formattedHour","showAddFilterModal","filterCombinator","openAddFilterModal","tagmap","filteredExcerpts","tmap","codeObj","themeObj","barplotGroupedData","group","imap","sums","indices","plotConfig","excerptLengthByTranscript","renderedPlot","maxchars","dpi","addChartToInsights","plotMetric","clearDiagonalUpperTriangular","matrix","themeCrosstabs","themeExcerpts","overlap","dimnames","innerKey","codeCrosstabs","codeExcerpts","tagCrosstabs","tagExcerpts","crosstabs","cellsize","firstColumnWidth","accumulator","drawText","maxVal","rowIndex","colIndex","downloadAsCSV","firstrow","showCooccurrenceMatrixView","showBarChartView","selectedTableOfContentsItems","selectAllItems","sortedItems","clearItems","lastItemClicked","toggleSelectItem","showDeleteSummaryItemsModal","openDeleteSummaryItemsModal","deleteSummaryItems","themeDescriptionId","themeDescriptionExcerpts","showThemeDescriptionModal","themeDescriptionExcerptChoices","messageModalTitle","messageModalContent","showMessageModal","openMessageModal","openThemeDescriptionModal","itemReq","codeDescriptionId","codeDescriptionExcerpts","showCodeDescriptionModal","codeDescriptionExcerptChoices","openCodeDescriptionModal","rationaleRQ","rationaleThemes","showRationaleModal","rationaleModalView","openRationaleModal","suggestRationaleThemes","addRationale","addImage","addKappaRatings","references","summaryHtml","tbls","tblcounter","tbl","addMemos","draggedItem","preventDefault","targetBounds","b64ToBlob","b64","contentType","dat","bytes","byteArray","downloadSummaryDocument","submitted","confirmation","goToApp","ownerEmail","projectName","success","redirectPath","_imports_0","completed","responses","questionIndex","themeDescriptionIcons","themeDescriptionTooltip","themeTooltip","getSurvey","submitTimer","saveSurvey","submitSurvey","setPosition","scrollLeft","scrollTop","ttbounds","top_space","left_space","bottom_space","right_space","ttpos","showTooltip","removeTooltip","chunksize","estimateError","estimateLoading","uploadError","getFileExtension","fileName","uploadAudioFiles","multipartUpload","fileUpload","calculatePrice","idsParam","namesParam","estimate_req","partial_upload_requests","doMultipartUpload","xmlbody","getFinalRequestXML","request_list","etags","partrequests","fileSize","bytesLoaded","totalBytesLoaded","getJobFiles","totalDuration","totalPrice","payTranscription","transcriptionsStarted","getTranscriptionJob","transcription_req","startTranscription","loadUnverifedUserData","userReq","Sentry.setUser","loadUserData","loadProjects","projectsReq","loadProjectData","metadataReq","txListReq","summaryListReq","memosReq","autoCodingReq","metadataRes","txListRes","summaryListRes","memosRes","txReqs","summaryItemReqs","summaryItem","autoCodingRes","checkAccess","funcs","Login","Signup","ForgotPassword","ResetPassword","VerifyEmail","ProjectList","Transcript","Memos","ExcerptList","Insights","ProjectInvitation","Upgrade","ReliabilitySurvey","AudioTranscriptionUpload","AudioTranscriptionPreview","AudioTranscriptionStart","notification","updateTimer","hideErrorMessage","messageArr","refreshApp","App","FloatingVue","Sentry.init","Sentry.replayIntegration","registration","cacheLastUpdate","twoWeeksInMilliseconds","staleTab"],"mappings":"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,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,KACd,EACD,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV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AEWC,EAAS,CACX,CAAI,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,QAAY,UAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UAAc,EACtD,CAAI,WAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,UAAY,WAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UAAc,EACtD,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,W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AE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EA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"}