{"version":3,"file":"_plugin-vue_export-helper-ClpyGNaE.js","sources":["../../../node_modules/.pnpm/@vue+runtime-dom@3.5.13/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../node_modules/.pnpm/vue@3.5.13_typescript@5.8.2/node_modules/vue/dist/vue.runtime.esm-bundler.js","../../../node_modules/.pnpm/@intlify+shared@11.1.2/node_modules/@intlify/shared/dist/shared.mjs","../../../node_modules/.pnpm/@intlify+message-compiler@11.1.2/node_modules/@intlify/message-compiler/dist/message-compiler.mjs","../../../node_modules/.pnpm/@intlify+core-base@11.1.2/node_modules/@intlify/core-base/dist/core-base.mjs","../../../node_modules/.pnpm/vue-i18n@11.1.2_vue@3.5.13_typescript@5.8.2_/node_modules/vue-i18n/dist/vue-i18n.runtime.mjs","../../../app/javascript/src/i18n/options.ts","../../../app/javascript/src/i18n/setup.js","../../../node_modules/.pnpm/@sentry+types@6.17.4/node_modules/@sentry/types/esm/severity.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/async.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/polyfill.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/error.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/dsn.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/supports.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/instrument.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/promisebuffer.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/severity.js","../../../node_modules/.pnpm/@sentry+utils@6.17.4/node_modules/@sentry/utils/esm/status.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/api.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/integration.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/baseclient.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/transports/noop.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/basebackend.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/request.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/sdk.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/version.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/integrations/functiontostring.js","../../../node_modules/.pnpm/@sentry+core@6.17.4/node_modules/@sentry/core/esm/integrations/inboundfilters.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/tracekit.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/parsers.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/eventbuilder.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/transports/utils.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/transports/base.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/transports/fetch.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/transports/xhr.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/backend.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/helpers.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/integrations/globalhandlers.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/integrations/trycatch.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/integrations/linkederrors.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/integrations/useragent.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/integrations/dedupe.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/client.js","../../../node_modules/.pnpm/@sentry+browser@6.17.4/node_modules/@sentry/browser/esm/sdk.js","../../../node_modules/.pnpm/@sentry+vue@6.17.4_vue-router@4.5.0_vue@3.5.13_typescript@5.8.2___vue@3.5.13_typescript@5.8.2_/node_modules/@sentry/vue/esm/constants.js","../../../node_modules/.pnpm/@sentry+vue@6.17.4_vue-router@4.5.0_vue@3.5.13_typescript@5.8.2___vue@3.5.13_typescript@5.8.2_/node_modules/@sentry/vue/esm/components.js","../../../node_modules/.pnpm/@sentry+vue@6.17.4_vue-router@4.5.0_vue@3.5.13_typescript@5.8.2___vue@3.5.13_typescript@5.8.2_/node_modules/@sentry/vue/esm/errorhandler.js","../../../node_modules/.pnpm/@sentry+vue@6.17.4_vue-router@4.5.0_vue@3.5.13_typescript@5.8.2___vue@3.5.13_typescript@5.8.2_/node_modules/@sentry/vue/esm/tracing.js","../../../node_modules/.pnpm/@sentry+vue@6.17.4_vue-router@4.5.0_vue@3.5.13_typescript@5.8.2___vue@3.5.13_typescript@5.8.2_/node_modules/@sentry/vue/esm/sdk.js","../../../node_modules/.pnpm/@sentry+vue@6.17.4_vue-router@4.5.0_vue@3.5.13_typescript@5.8.2___vue@3.5.13_typescript@5.8.2_/node_modules/@sentry/vue/esm/router.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/utils.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/errors.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/constants.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/span.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/transaction.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/idletransaction.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/hubextensions.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/backgroundtab.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/lib/bindReporter.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/lib/initMetric.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/lib/observe.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/lib/onHidden.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/getCLS.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/getFID.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/web-vitals/getLCP.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/metrics.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/request.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/router.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/browser/browsertracing.js","../../../node_modules/.pnpm/@sentry+tracing@6.17.4/node_modules/@sentry/tracing/esm/index.js","../../../app/javascript/src/utils/sentry.js","../../../node_modules/.pnpm/@unhead+shared@1.11.20/node_modules/@unhead/shared/dist/index.mjs","../../../node_modules/.pnpm/@unhead+dom@1.11.20/node_modules/@unhead/dom/dist/index.mjs","../../../node_modules/.pnpm/hookable@5.5.3/node_modules/hookable/dist/index.mjs","../../../node_modules/.pnpm/unhead@1.11.20/node_modules/unhead/dist/index.mjs","../../../node_modules/.pnpm/@unhead+vue@1.11.20_vue@3.5.13_typescript@5.8.2_/node_modules/@unhead/vue/dist/shared/vue.ziyDaVMR.mjs","../../../node_modules/.pnpm/@unhead+vue@1.11.20_vue@3.5.13_typescript@5.8.2_/node_modules/@unhead/vue/dist/shared/vue.-sixQ7xP.mjs","../../../node_modules/.pnpm/@unhead+vue@1.11.20_vue@3.5.13_typescript@5.8.2_/node_modules/@unhead/vue/dist/polyfill.mjs","../../../node_modules/.pnpm/@vueuse+head@2.0.0_vue@3.5.13_typescript@5.8.2_/node_modules/@vueuse/head/dist/index.mjs","../../../node_modules/.pnpm/pinia@3.0.1_typescript@5.8.2_vue@3.5.13_typescript@5.8.2_/node_modules/pinia/dist/pinia.mjs","../../../app/javascript/src/directives/hideFooter.js","../../../node_modules/.pnpm/ua-parser-js@2.0.3/node_modules/ua-parser-js/src/main/ua-parser.mjs","../../../app/javascript/src/utils/generalUtils.js","../../../app/javascript/src/directives/contenteditable.js","../../../app/javascript/src/plugins/openNewTab.js","../../../node_modules/.pnpm/@vueuse+shared@13.0.0_vue@3.5.13_typescript@5.8.2_/node_modules/@vueuse/shared/index.mjs","../../../node_modules/.pnpm/@vueuse+core@13.0.0_vue@3.5.13_typescript@5.8.2_/node_modules/@vueuse/core/index.mjs","../../../app/javascript/src/directives/dragscroll.js","../../../node_modules/.pnpm/recaptcha-v3@1.11.3/node_modules/recaptcha-v3/dist/ReCaptchaInstance.js","../../../node_modules/.pnpm/recaptcha-v3@1.11.3/node_modules/recaptcha-v3/dist/ReCaptchaLoader.js","../../../node_modules/.pnpm/recaptcha-v3@1.11.3/node_modules/recaptcha-v3/dist/ReCaptcha.js","../../../node_modules/.pnpm/vue-recaptcha-v3@2.0.1_vue@3.5.13_typescript@5.8.2_/node_modules/vue-recaptcha-v3/dist/ReCaptchaVuePlugin.js","../../../app/javascript/src/app.js"],"sourcesContent":["/**\n* @vue/runtime-dom v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { warn, h, BaseTransition, assertNumber, BaseTransitionPropsValidators, getCurrentInstance, onBeforeUpdate, queuePostFlushCb, onMounted, watch, onUnmounted, Fragment, Static, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, unref, createVNode, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, Text, isRuntimeOnly, createRenderer, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { extend, isObject, toNumber, isArray, NOOP, isString, hyphenate, capitalize, includeBooleanAttr, isSymbol, isSpecialBooleanAttr, isFunction, isOn, isModelListener, camelize as camelize$1, isPlainObject, hasOwn, EMPTY_OBJ, looseToNumber, looseIndexOf, isSet, looseEqual, invokeArrayFns, isHTMLTag, isSVGTag, isMathMLTag } from '@vue/shared';\n\nlet policy = void 0;\nconst tt = typeof window !== \"undefined\" && window.trustedTypes;\nif (tt) {\n try {\n policy = /* @__PURE__ */ tt.createPolicy(\"vue\", {\n createHTML: (val) => val\n });\n } catch (e) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Error creating trusted types policy: ${e}`);\n }\n}\nconst unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;\nconst svgNS = \"http://www.w3.org/2000/svg\";\nconst mathmlNS = \"http://www.w3.org/1998/Math/MathML\";\nconst doc = typeof document !== \"undefined\" ? document : null;\nconst templateContainer = doc && /* @__PURE__ */ doc.createElement(\"template\");\nconst nodeOps = {\n insert: (child, parent, anchor) => {\n parent.insertBefore(child, anchor || null);\n },\n remove: (child) => {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n },\n createElement: (tag, namespace, is, props) => {\n const el = namespace === \"svg\" ? doc.createElementNS(svgNS, tag) : namespace === \"mathml\" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);\n if (tag === \"select\" && props && props.multiple != null) {\n el.setAttribute(\"multiple\", props.multiple);\n }\n return el;\n },\n createText: (text) => doc.createTextNode(text),\n createComment: (text) => doc.createComment(text),\n setText: (node, text) => {\n node.nodeValue = text;\n },\n setElementText: (el, text) => {\n el.textContent = text;\n },\n parentNode: (node) => node.parentNode,\n nextSibling: (node) => node.nextSibling,\n querySelector: (selector) => doc.querySelector(selector),\n setScopeId(el, id) {\n el.setAttribute(id, \"\");\n },\n // __UNSAFE__\n // Reason: innerHTML.\n // Static content here can only come from compiled templates.\n // As long as the user only uses trusted templates, this is safe.\n insertStaticContent(content, parent, anchor, namespace, start, end) {\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n if (start && (start === end || start.nextSibling)) {\n while (true) {\n parent.insertBefore(start.cloneNode(true), anchor);\n if (start === end || !(start = start.nextSibling)) break;\n }\n } else {\n templateContainer.innerHTML = unsafeToTrustedHTML(\n namespace === \"svg\" ? `<svg>${content}</svg>` : namespace === \"mathml\" ? `<math>${content}</math>` : content\n );\n const template = templateContainer.content;\n if (namespace === \"svg\" || namespace === \"mathml\") {\n const wrapper = template.firstChild;\n while (wrapper.firstChild) {\n template.appendChild(wrapper.firstChild);\n }\n template.removeChild(wrapper);\n }\n parent.insertBefore(template, anchor);\n }\n return [\n // first\n before ? before.nextSibling : parent.firstChild,\n // last\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\n\nconst TRANSITION = \"transition\";\nconst ANIMATION = \"animation\";\nconst vtcKey = Symbol(\"_vtc\");\nconst DOMTransitionPropsValidators = {\n name: String,\n type: String,\n css: {\n type: Boolean,\n default: true\n },\n duration: [String, Number, Object],\n enterFromClass: String,\n enterActiveClass: String,\n enterToClass: String,\n appearFromClass: String,\n appearActiveClass: String,\n appearToClass: String,\n leaveFromClass: String,\n leaveActiveClass: String,\n leaveToClass: String\n};\nconst TransitionPropsValidators = /* @__PURE__ */ extend(\n {},\n BaseTransitionPropsValidators,\n DOMTransitionPropsValidators\n);\nconst decorate$1 = (t) => {\n t.displayName = \"Transition\";\n t.props = TransitionPropsValidators;\n return t;\n};\nconst Transition = /* @__PURE__ */ decorate$1(\n (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots)\n);\nconst callHook = (hook, args = []) => {\n if (isArray(hook)) {\n hook.forEach((h2) => h2(...args));\n } else if (hook) {\n hook(...args);\n }\n};\nconst hasExplicitCallback = (hook) => {\n return hook ? isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;\n};\nfunction resolveTransitionProps(rawProps) {\n const baseProps = {};\n for (const key in rawProps) {\n if (!(key in DOMTransitionPropsValidators)) {\n baseProps[key] = rawProps[key];\n }\n }\n if (rawProps.css === false) {\n return baseProps;\n }\n const {\n name = \"v\",\n type,\n duration,\n enterFromClass = `${name}-enter-from`,\n enterActiveClass = `${name}-enter-active`,\n enterToClass = `${name}-enter-to`,\n appearFromClass = enterFromClass,\n appearActiveClass = enterActiveClass,\n appearToClass = enterToClass,\n leaveFromClass = `${name}-leave-from`,\n leaveActiveClass = `${name}-leave-active`,\n leaveToClass = `${name}-leave-to`\n } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const {\n onBeforeEnter,\n onEnter,\n onEnterCancelled,\n onLeave,\n onLeaveCancelled,\n onBeforeAppear = onBeforeEnter,\n onAppear = onEnter,\n onAppearCancelled = onEnterCancelled\n } = baseProps;\n const finishEnter = (el, isAppear, done, isCancelled) => {\n el._enterCancelled = isCancelled;\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n done && done();\n };\n const finishLeave = (el, done) => {\n el._isLeaving = false;\n removeTransitionClass(el, leaveFromClass);\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n done && done();\n };\n const makeEnterHook = (isAppear) => {\n return (el, done) => {\n const hook = isAppear ? onAppear : onEnter;\n const resolve = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve);\n }\n });\n };\n };\n return extend(baseProps, {\n onBeforeEnter(el) {\n callHook(onBeforeEnter, [el]);\n addTransitionClass(el, enterFromClass);\n addTransitionClass(el, enterActiveClass);\n },\n onBeforeAppear(el) {\n callHook(onBeforeAppear, [el]);\n addTransitionClass(el, appearFromClass);\n addTransitionClass(el, appearActiveClass);\n },\n onEnter: makeEnterHook(false),\n onAppear: makeEnterHook(true),\n onLeave(el, done) {\n el._isLeaving = true;\n const resolve = () => finishLeave(el, done);\n addTransitionClass(el, leaveFromClass);\n if (!el._enterCancelled) {\n forceReflow();\n addTransitionClass(el, leaveActiveClass);\n } else {\n addTransitionClass(el, leaveActiveClass);\n forceReflow();\n }\n nextFrame(() => {\n if (!el._isLeaving) {\n return;\n }\n removeTransitionClass(el, leaveFromClass);\n addTransitionClass(el, leaveToClass);\n if (!hasExplicitCallback(onLeave)) {\n whenTransitionEnds(el, type, leaveDuration, resolve);\n }\n });\n callHook(onLeave, [el, resolve]);\n },\n onEnterCancelled(el) {\n finishEnter(el, false, void 0, true);\n callHook(onEnterCancelled, [el]);\n },\n onAppearCancelled(el) {\n finishEnter(el, true, void 0, true);\n callHook(onAppearCancelled, [el]);\n },\n onLeaveCancelled(el) {\n finishLeave(el);\n callHook(onLeaveCancelled, [el]);\n }\n });\n}\nfunction normalizeDuration(duration) {\n if (duration == null) {\n return null;\n } else if (isObject(duration)) {\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\n } else {\n const n = NumberOf(duration);\n return [n, n];\n }\n}\nfunction NumberOf(val) {\n const res = toNumber(val);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(res, \"<transition> explicit duration\");\n }\n return res;\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.add(c));\n (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach((c) => c && el.classList.remove(c));\n const _vtc = el[vtcKey];\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el[vtcKey] = void 0;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n const id = el._endId = ++endId;\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve();\n }\n };\n if (explicitTimeout != null) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve();\n }\n const endEvent = type + \"end\";\n let ended = 0;\n const end = () => {\n el.removeEventListener(endEvent, onEnd);\n resolveIfNotStale();\n };\n const onEnd = (e) => {\n if (e.target === el && ++ended >= propCount) {\n end();\n }\n };\n setTimeout(() => {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n const styles = window.getComputedStyle(el);\n const getStyleProperties = (key) => (styles[key] || \"\").split(\", \");\n const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n const animationTimeout = getTimeout(animationDelays, animationDurations);\n let type = null;\n let timeout = 0;\n let propCount = 0;\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null;\n propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0;\n }\n const hasTransform = type === TRANSITION && /\\b(transform|all)(,|$)/.test(\n getStyleProperties(`${TRANSITION}Property`).toString()\n );\n return {\n type,\n timeout,\n propCount,\n hasTransform\n };\n}\nfunction getTimeout(delays, durations) {\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\nfunction toMs(s) {\n if (s === \"auto\") return 0;\n return Number(s.slice(0, -1).replace(\",\", \".\")) * 1e3;\n}\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\n\nfunction patchClass(el, value, isSVG) {\n const transitionClasses = el[vtcKey];\n if (transitionClasses) {\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(\" \");\n }\n if (value == null) {\n el.removeAttribute(\"class\");\n } else if (isSVG) {\n el.setAttribute(\"class\", value);\n } else {\n el.className = value;\n }\n}\n\nconst vShowOriginalDisplay = Symbol(\"_vod\");\nconst vShowHidden = Symbol(\"_vsh\");\nconst vShow = {\n beforeMount(el, { value }, { transition }) {\n el[vShowOriginalDisplay] = el.style.display === \"none\" ? \"\" : el.style.display;\n if (transition && value) {\n transition.beforeEnter(el);\n } else {\n setDisplay(el, value);\n }\n },\n mounted(el, { value }, { transition }) {\n if (transition && value) {\n transition.enter(el);\n }\n },\n updated(el, { value, oldValue }, { transition }) {\n if (!value === !oldValue) return;\n if (transition) {\n if (value) {\n transition.beforeEnter(el);\n setDisplay(el, true);\n transition.enter(el);\n } else {\n transition.leave(el, () => {\n setDisplay(el, false);\n });\n }\n } else {\n setDisplay(el, value);\n }\n },\n beforeUnmount(el, { value }) {\n setDisplay(el, value);\n }\n};\nif (!!(process.env.NODE_ENV !== \"production\")) {\n vShow.name = \"show\";\n}\nfunction setDisplay(el, value) {\n el.style.display = value ? el[vShowOriginalDisplay] : \"none\";\n el[vShowHidden] = !value;\n}\nfunction initVShowForSSR() {\n vShow.getSSRProps = ({ value }) => {\n if (!value) {\n return { style: { display: \"none\" } };\n }\n };\n}\n\nconst CSS_VAR_TEXT = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"CSS_VAR_TEXT\" : \"\");\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssVars is called without current active component instance.`);\n return;\n }\n const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {\n Array.from(\n document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)\n ).forEach((node) => setVarsOnNode(node, vars));\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.getCssVars = () => getter(instance.proxy);\n }\n const setVars = () => {\n const vars = getter(instance.proxy);\n if (instance.ce) {\n setVarsOnNode(instance.ce, vars);\n } else {\n setVarsOnVNode(instance.subTree, vars);\n }\n updateTeleports(vars);\n };\n onBeforeUpdate(() => {\n queuePostFlushCb(setVars);\n });\n onMounted(() => {\n watch(setVars, NOOP, { flush: \"post\" });\n const ob = new MutationObserver(setVars);\n ob.observe(instance.subTree.el.parentNode, { childList: true });\n onUnmounted(() => ob.disconnect());\n });\n}\nfunction setVarsOnVNode(vnode, vars) {\n if (vnode.shapeFlag & 128) {\n const suspense = vnode.suspense;\n vnode = suspense.activeBranch;\n if (suspense.pendingBranch && !suspense.isHydrating) {\n suspense.effects.push(() => {\n setVarsOnVNode(suspense.activeBranch, vars);\n });\n }\n }\n while (vnode.component) {\n vnode = vnode.component.subTree;\n }\n if (vnode.shapeFlag & 1 && vnode.el) {\n setVarsOnNode(vnode.el, vars);\n } else if (vnode.type === Fragment) {\n vnode.children.forEach((c) => setVarsOnVNode(c, vars));\n } else if (vnode.type === Static) {\n let { el, anchor } = vnode;\n while (el) {\n setVarsOnNode(el, vars);\n if (el === anchor) break;\n el = el.nextSibling;\n }\n }\n}\nfunction setVarsOnNode(el, vars) {\n if (el.nodeType === 1) {\n const style = el.style;\n let cssText = \"\";\n for (const key in vars) {\n style.setProperty(`--${key}`, vars[key]);\n cssText += `--${key}: ${vars[key]};`;\n }\n style[CSS_VAR_TEXT] = cssText;\n }\n}\n\nconst displayRE = /(^|;)\\s*display\\s*:/;\nfunction patchStyle(el, prev, next) {\n const style = el.style;\n const isCssString = isString(next);\n let hasControlledDisplay = false;\n if (next && !isCssString) {\n if (prev) {\n if (!isString(prev)) {\n for (const key in prev) {\n if (next[key] == null) {\n setStyle(style, key, \"\");\n }\n }\n } else {\n for (const prevStyle of prev.split(\";\")) {\n const key = prevStyle.slice(0, prevStyle.indexOf(\":\")).trim();\n if (next[key] == null) {\n setStyle(style, key, \"\");\n }\n }\n }\n }\n for (const key in next) {\n if (key === \"display\") {\n hasControlledDisplay = true;\n }\n setStyle(style, key, next[key]);\n }\n } else {\n if (isCssString) {\n if (prev !== next) {\n const cssVarText = style[CSS_VAR_TEXT];\n if (cssVarText) {\n next += \";\" + cssVarText;\n }\n style.cssText = next;\n hasControlledDisplay = displayRE.test(next);\n }\n } else if (prev) {\n el.removeAttribute(\"style\");\n }\n }\n if (vShowOriginalDisplay in el) {\n el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : \"\";\n if (el[vShowHidden]) {\n style.display = \"none\";\n }\n }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n if (isArray(val)) {\n val.forEach((v) => setStyle(style, name, v));\n } else {\n if (val == null) val = \"\";\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (semicolonRE.test(val)) {\n warn(\n `Unexpected semicolon at the end of '${name}' style value: '${val}'`\n );\n }\n }\n if (name.startsWith(\"--\")) {\n style.setProperty(name, val);\n } else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n style.setProperty(\n hyphenate(prefixed),\n val.replace(importantRE, \"\"),\n \"important\"\n );\n } else {\n style[prefixed] = val;\n }\n }\n }\n}\nconst prefixes = [\"Webkit\", \"Moz\", \"ms\"];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n let name = camelize(rawName);\n if (name !== \"filter\" && name in style) {\n return prefixCache[rawName] = name;\n }\n name = capitalize(name);\n for (let i = 0; i < prefixes.length; i++) {\n const prefixed = prefixes[i] + name;\n if (prefixed in style) {\n return prefixCache[rawName] = prefixed;\n }\n }\n return rawName;\n}\n\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nfunction patchAttr(el, key, value, isSVG, instance, isBoolean = isSpecialBooleanAttr(key)) {\n if (isSVG && key.startsWith(\"xlink:\")) {\n if (value == null) {\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n if (value == null || isBoolean && !includeBooleanAttr(value)) {\n el.removeAttribute(key);\n } else {\n el.setAttribute(\n key,\n isBoolean ? \"\" : isSymbol(value) ? String(value) : value\n );\n }\n }\n}\n\nfunction patchDOMProp(el, key, value, parentComponent, attrName) {\n if (key === \"innerHTML\" || key === \"textContent\") {\n if (value != null) {\n el[key] = key === \"innerHTML\" ? unsafeToTrustedHTML(value) : value;\n }\n return;\n }\n const tag = el.tagName;\n if (key === \"value\" && tag !== \"PROGRESS\" && // custom elements may use _value internally\n !tag.includes(\"-\")) {\n const oldValue = tag === \"OPTION\" ? el.getAttribute(\"value\") || \"\" : el.value;\n const newValue = value == null ? (\n // #11647: value should be set as empty string for null and undefined,\n // but <input type=\"checkbox\"> should be set as 'on'.\n el.type === \"checkbox\" ? \"on\" : \"\"\n ) : String(value);\n if (oldValue !== newValue || !(\"_value\" in el)) {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\n el._value = value;\n return;\n }\n let needRemove = false;\n if (value === \"\" || value == null) {\n const type = typeof el[key];\n if (type === \"boolean\") {\n value = includeBooleanAttr(value);\n } else if (value == null && type === \"string\") {\n value = \"\";\n needRemove = true;\n } else if (type === \"number\") {\n value = 0;\n needRemove = true;\n }\n }\n try {\n el[key] = value;\n } catch (e) {\n if (!!(process.env.NODE_ENV !== \"production\") && !needRemove) {\n warn(\n `Failed setting prop \"${key}\" on <${tag.toLowerCase()}>: value ${value} is invalid.`,\n e\n );\n }\n }\n needRemove && el.removeAttribute(attrName || key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n el.removeEventListener(event, handler, options);\n}\nconst veiKey = Symbol(\"_vei\");\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n const invokers = el[veiKey] || (el[veiKey] = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n existingInvoker.value = !!(process.env.NODE_ENV !== \"production\") ? sanitizeEventValue(nextValue, rawName) : nextValue;\n } else {\n const [name, options] = parseName(rawName);\n if (nextValue) {\n const invoker = invokers[rawName] = createInvoker(\n !!(process.env.NODE_ENV !== \"production\") ? sanitizeEventValue(nextValue, rawName) : nextValue,\n instance\n );\n addEventListener(el, name, invoker, options);\n } else if (existingInvoker) {\n removeEventListener(el, name, existingInvoker, options);\n invokers[rawName] = void 0;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while (m = name.match(optionsModifierRE)) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n const event = name[2] === \":\" ? name.slice(3) : hyphenate(name.slice(2));\n return [event, options];\n}\nlet cachedNow = 0;\nconst p = /* @__PURE__ */ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n if (!e._vts) {\n e._vts = Date.now();\n } else if (e._vts <= invoker.attached) {\n return;\n }\n callWithAsyncErrorHandling(\n patchStopImmediatePropagation(e, invoker.value),\n instance,\n 5,\n [e]\n );\n };\n invoker.value = initialValue;\n invoker.attached = getNow();\n return invoker;\n}\nfunction sanitizeEventValue(value, propName) {\n if (isFunction(value) || isArray(value)) {\n return value;\n }\n warn(\n `Wrong type passed as event handler to ${propName} - did you forget @ or : in front of your prop?\nExpected function or array of functions, received type ${typeof value}.`\n );\n return NOOP;\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop.call(e);\n e._stopped = true;\n };\n return value.map(\n (fn) => (e2) => !e2._stopped && fn && fn(e2)\n );\n } else {\n return value;\n }\n}\n\nconst isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter\nkey.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;\nconst patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {\n const isSVG = namespace === \"svg\";\n if (key === \"class\") {\n patchClass(el, nextValue, isSVG);\n } else if (key === \"style\") {\n patchStyle(el, prevValue, nextValue);\n } else if (isOn(key)) {\n if (!isModelListener(key)) {\n patchEvent(el, key, prevValue, nextValue, parentComponent);\n }\n } else if (key[0] === \".\" ? (key = key.slice(1), true) : key[0] === \"^\" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {\n patchDOMProp(el, key, nextValue);\n if (!el.tagName.includes(\"-\") && (key === \"value\" || key === \"checked\" || key === \"selected\")) {\n patchAttr(el, key, nextValue, isSVG, parentComponent, key !== \"value\");\n }\n } else if (\n // #11081 force set props for possible async custom element\n el._isVueCE && (/[A-Z]/.test(key) || !isString(nextValue))\n ) {\n patchDOMProp(el, camelize$1(key), nextValue, parentComponent, key);\n } else {\n if (key === \"true-value\") {\n el._trueValue = nextValue;\n } else if (key === \"false-value\") {\n el._falseValue = nextValue;\n }\n patchAttr(el, key, nextValue, isSVG);\n }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n if (isSVG) {\n if (key === \"innerHTML\" || key === \"textContent\") {\n return true;\n }\n if (key in el && isNativeOn(key) && isFunction(value)) {\n return true;\n }\n return false;\n }\n if (key === \"spellcheck\" || key === \"draggable\" || key === \"translate\") {\n return false;\n }\n if (key === \"form\") {\n return false;\n }\n if (key === \"list\" && el.tagName === \"INPUT\") {\n return false;\n }\n if (key === \"type\" && el.tagName === \"TEXTAREA\") {\n return false;\n }\n if (key === \"width\" || key === \"height\") {\n const tag = el.tagName;\n if (tag === \"IMG\" || tag === \"VIDEO\" || tag === \"CANVAS\" || tag === \"SOURCE\") {\n return false;\n }\n }\n if (isNativeOn(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\n\nconst REMOVAL = {};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineCustomElement(options, extraOptions, _createApp) {\n const Comp = defineComponent(options, extraOptions);\n if (isPlainObject(Comp)) extend(Comp, extraOptions);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, _createApp);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\n/*! #__NO_SIDE_EFFECTS__ */\nconst defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options, extraOptions) => {\n return /* @__PURE__ */ defineCustomElement(options, extraOptions, createSSRApp);\n};\nconst BaseClass = typeof HTMLElement !== \"undefined\" ? HTMLElement : class {\n};\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, _createApp = createApp) {\n super();\n this._def = _def;\n this._props = _props;\n this._createApp = _createApp;\n this._isVueCE = true;\n /**\n * @internal\n */\n this._instance = null;\n /**\n * @internal\n */\n this._app = null;\n /**\n * @internal\n */\n this._nonce = this._def.nonce;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n this._styleChildren = /* @__PURE__ */ new WeakSet();\n this._ob = null;\n if (this.shadowRoot && _createApp !== createApp) {\n this._root = this.shadowRoot;\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && this.shadowRoot) {\n warn(\n `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \\`defineSSRCustomElement\\`.`\n );\n }\n if (_def.shadowRoot !== false) {\n this.attachShadow({ mode: \"open\" });\n this._root = this.shadowRoot;\n } else {\n this._root = this;\n }\n }\n if (!this._def.__asyncLoader) {\n this._resolveProps(this._def);\n }\n }\n connectedCallback() {\n if (!this.isConnected) return;\n if (!this.shadowRoot) {\n this._parseSlots();\n }\n this._connected = true;\n let parent = this;\n while (parent = parent && (parent.parentNode || parent.host)) {\n if (parent instanceof VueElement) {\n this._parent = parent;\n break;\n }\n }\n if (!this._instance) {\n if (this._resolved) {\n this._setParent();\n this._update();\n } else {\n if (parent && parent._pendingResolve) {\n this._pendingResolve = parent._pendingResolve.then(() => {\n this._pendingResolve = void 0;\n this._resolveDef();\n });\n } else {\n this._resolveDef();\n }\n }\n }\n }\n _setParent(parent = this._parent) {\n if (parent) {\n this._instance.parent = parent._instance;\n this._instance.provides = parent._instance.provides;\n }\n }\n disconnectedCallback() {\n this._connected = false;\n nextTick(() => {\n if (!this._connected) {\n if (this._ob) {\n this._ob.disconnect();\n this._ob = null;\n }\n this._app && this._app.unmount();\n if (this._instance) this._instance.ce = void 0;\n this._app = this._instance = null;\n }\n });\n }\n /**\n * resolve inner component definition (handle possible async component)\n */\n _resolveDef() {\n if (this._pendingResolve) {\n return;\n }\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n this._ob = new MutationObserver((mutations) => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n });\n this._ob.observe(this, { attributes: true });\n const resolve = (def, isAsync = false) => {\n this._resolved = true;\n this._pendingResolve = void 0;\n const { props, styles } = def;\n let numberProps;\n if (props && !isArray(props)) {\n for (const key in props) {\n const opt = props[key];\n if (opt === Number || opt && opt.type === Number) {\n if (key in this._props) {\n this._props[key] = toNumber(this._props[key]);\n }\n (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize$1(key)] = true;\n }\n }\n }\n this._numberProps = numberProps;\n if (isAsync) {\n this._resolveProps(def);\n }\n if (this.shadowRoot) {\n this._applyStyles(styles);\n } else if (!!(process.env.NODE_ENV !== \"production\") && styles) {\n warn(\n \"Custom element style injection is not supported when using shadowRoot: false\"\n );\n }\n this._mount(def);\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n this._pendingResolve = asyncDef().then(\n (def) => resolve(this._def = def, true)\n );\n } else {\n resolve(this._def);\n }\n }\n _mount(def) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) && !def.name) {\n def.name = \"VueElement\";\n }\n this._app = this._createApp(def);\n if (def.configureApp) {\n def.configureApp(this._app);\n }\n this._app._ceVNode = this._createVNode();\n this._app.mount(this._root);\n const exposed = this._instance && this._instance.exposed;\n if (!exposed) return;\n for (const key in exposed) {\n if (!hasOwn(this, key)) {\n Object.defineProperty(this, key, {\n // unwrap ref to be consistent with public instance behavior\n get: () => unref(exposed[key])\n });\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`Exposed property \"${key}\" already exists on custom element.`);\n }\n }\n }\n _resolveProps(def) {\n const { props } = def;\n const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n for (const key of Object.keys(this)) {\n if (key[0] !== \"_\" && declaredPropKeys.includes(key)) {\n this._setProp(key, this[key]);\n }\n }\n for (const key of declaredPropKeys.map(camelize$1)) {\n Object.defineProperty(this, key, {\n get() {\n return this._getProp(key);\n },\n set(val) {\n this._setProp(key, val, true, true);\n }\n });\n }\n }\n _setAttr(key) {\n if (key.startsWith(\"data-v-\")) return;\n const has = this.hasAttribute(key);\n let value = has ? this.getAttribute(key) : REMOVAL;\n const camelKey = camelize$1(key);\n if (has && this._numberProps && this._numberProps[camelKey]) {\n value = toNumber(value);\n }\n this._setProp(camelKey, value, false, true);\n }\n /**\n * @internal\n */\n _getProp(key) {\n return this._props[key];\n }\n /**\n * @internal\n */\n _setProp(key, val, shouldReflect = true, shouldUpdate = false) {\n if (val !== this._props[key]) {\n if (val === REMOVAL) {\n delete this._props[key];\n } else {\n this._props[key] = val;\n if (key === \"key\" && this._app) {\n this._app._ceVNode.key = val;\n }\n }\n if (shouldUpdate && this._instance) {\n this._update();\n }\n if (shouldReflect) {\n const ob = this._ob;\n ob && ob.disconnect();\n if (val === true) {\n this.setAttribute(hyphenate(key), \"\");\n } else if (typeof val === \"string\" || typeof val === \"number\") {\n this.setAttribute(hyphenate(key), val + \"\");\n } else if (!val) {\n this.removeAttribute(hyphenate(key));\n }\n ob && ob.observe(this, { attributes: true });\n }\n }\n }\n _update() {\n render(this._createVNode(), this._root);\n }\n _createVNode() {\n const baseProps = {};\n if (!this.shadowRoot) {\n baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);\n }\n const vnode = createVNode(this._def, extend(baseProps, this._props));\n if (!this._instance) {\n vnode.ce = (instance) => {\n this._instance = instance;\n instance.ce = this;\n instance.isCE = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n instance.ceReload = (newStyles) => {\n if (this._styles) {\n this._styles.forEach((s) => this._root.removeChild(s));\n this._styles.length = 0;\n }\n this._applyStyles(newStyles);\n this._instance = null;\n this._update();\n };\n }\n const dispatch = (event, args) => {\n this.dispatchEvent(\n new CustomEvent(\n event,\n isPlainObject(args[0]) ? extend({ detail: args }, args[0]) : { detail: args }\n )\n );\n };\n instance.emit = (event, ...args) => {\n dispatch(event, args);\n if (hyphenate(event) !== event) {\n dispatch(hyphenate(event), args);\n }\n };\n this._setParent();\n };\n }\n return vnode;\n }\n _applyStyles(styles, owner) {\n if (!styles) return;\n if (owner) {\n if (owner === this._def || this._styleChildren.has(owner)) {\n return;\n }\n this._styleChildren.add(owner);\n }\n const nonce = this._nonce;\n for (let i = styles.length - 1; i >= 0; i--) {\n const s = document.createElement(\"style\");\n if (nonce) s.setAttribute(\"nonce\", nonce);\n s.textContent = styles[i];\n this.shadowRoot.prepend(s);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (owner) {\n if (owner.__hmrId) {\n if (!this._childStyles) this._childStyles = /* @__PURE__ */ new Map();\n let entry = this._childStyles.get(owner.__hmrId);\n if (!entry) {\n this._childStyles.set(owner.__hmrId, entry = []);\n }\n entry.push(s);\n }\n } else {\n (this._styles || (this._styles = [])).push(s);\n }\n }\n }\n }\n /**\n * Only called when shadowRoot is false\n */\n _parseSlots() {\n const slots = this._slots = {};\n let n;\n while (n = this.firstChild) {\n const slotName = n.nodeType === 1 && n.getAttribute(\"slot\") || \"default\";\n (slots[slotName] || (slots[slotName] = [])).push(n);\n this.removeChild(n);\n }\n }\n /**\n * Only called when shadowRoot is false\n */\n _renderSlots() {\n const outlets = (this._teleportTarget || this).querySelectorAll(\"slot\");\n const scopeId = this._instance.type.__scopeId;\n for (let i = 0; i < outlets.length; i++) {\n const o = outlets[i];\n const slotName = o.getAttribute(\"name\") || \"default\";\n const content = this._slots[slotName];\n const parent = o.parentNode;\n if (content) {\n for (const n of content) {\n if (scopeId && n.nodeType === 1) {\n const id = scopeId + \"-s\";\n const walker = document.createTreeWalker(n, 1);\n n.setAttribute(id, \"\");\n let child;\n while (child = walker.nextNode()) {\n child.setAttribute(id, \"\");\n }\n }\n parent.insertBefore(n, o);\n }\n } else {\n while (o.firstChild) parent.insertBefore(o.firstChild, o);\n }\n parent.removeChild(o);\n }\n }\n /**\n * @internal\n */\n _injectChildStyle(comp) {\n this._applyStyles(comp.styles, comp);\n }\n /**\n * @internal\n */\n _removeChildStyle(comp) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this._styleChildren.delete(comp);\n if (this._childStyles && comp.__hmrId) {\n const oldStyles = this._childStyles.get(comp.__hmrId);\n if (oldStyles) {\n oldStyles.forEach((s) => this._root.removeChild(s));\n oldStyles.length = 0;\n }\n }\n }\n }\n}\nfunction useHost(caller) {\n const instance = getCurrentInstance();\n const el = instance && instance.ce;\n if (el) {\n return el;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!instance) {\n warn(\n `${caller || \"useHost\"} called without an active component instance.`\n );\n } else {\n warn(\n `${caller || \"useHost\"} can only be used in components defined via defineCustomElement.`\n );\n }\n }\n return null;\n}\nfunction useShadowRoot() {\n const el = !!(process.env.NODE_ENV !== \"production\") ? useHost(\"useShadowRoot\") : useHost();\n return el && el.shadowRoot;\n}\n\nfunction useCssModule(name = \"$style\") {\n {\n const instance = getCurrentInstance();\n if (!instance) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n !!(process.env.NODE_ENV !== \"production\") && warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\nconst positionMap = /* @__PURE__ */ new WeakMap();\nconst newPositionMap = /* @__PURE__ */ new WeakMap();\nconst moveCbKey = Symbol(\"_moveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nconst decorate = (t) => {\n delete t.props.mode;\n return t;\n};\nconst TransitionGroupImpl = /* @__PURE__ */ decorate({\n name: \"TransitionGroup\",\n props: /* @__PURE__ */ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevChildren;\n let children;\n onUpdated(() => {\n if (!prevChildren.length) {\n return;\n }\n const moveClass = props.moveClass || `${props.name || \"v\"}-move`;\n if (!hasCSSTransform(\n prevChildren[0].el,\n instance.vnode.el,\n moveClass\n )) {\n return;\n }\n prevChildren.forEach(callPendingCbs);\n prevChildren.forEach(recordPosition);\n const movedChildren = prevChildren.filter(applyTranslation);\n forceReflow();\n movedChildren.forEach((c) => {\n const el = c.el;\n const style = el.style;\n addTransitionClass(el, moveClass);\n style.transform = style.webkitTransform = style.transitionDuration = \"\";\n const cb = el[moveCbKey] = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(\"transitionend\", cb);\n el[moveCbKey] = null;\n removeTransitionClass(el, moveClass);\n }\n };\n el.addEventListener(\"transitionend\", cb);\n });\n });\n return () => {\n const rawProps = toRaw(props);\n const cssTransitionProps = resolveTransitionProps(rawProps);\n let tag = rawProps.tag || Fragment;\n prevChildren = [];\n if (children) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.el && child.el instanceof Element) {\n prevChildren.push(child);\n setTransitionHooks(\n child,\n resolveTransitionHooks(\n child,\n cssTransitionProps,\n state,\n instance\n )\n );\n positionMap.set(\n child,\n child.el.getBoundingClientRect()\n );\n }\n }\n }\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.key != null) {\n setTransitionHooks(\n child,\n resolveTransitionHooks(child, cssTransitionProps, state, instance)\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") && child.type !== Text) {\n warn(`<TransitionGroup> children must be keyed.`);\n }\n }\n return createVNode(tag, null, children);\n };\n }\n});\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el[moveCbKey]) {\n el[moveCbKey]();\n }\n if (el[enterCbKey]) {\n el[enterCbKey]();\n }\n}\nfunction recordPosition(c) {\n newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n const oldPos = positionMap.get(c);\n const newPos = newPositionMap.get(c);\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n if (dx || dy) {\n const s = c.el.style;\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = \"0s\";\n return c;\n }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n const clone = el.cloneNode();\n const _vtc = el[vtcKey];\n if (_vtc) {\n _vtc.forEach((cls) => {\n cls.split(/\\s+/).forEach((c) => c && clone.classList.remove(c));\n });\n }\n moveClass.split(/\\s+/).forEach((c) => c && clone.classList.add(c));\n clone.style.display = \"none\";\n const container = root.nodeType === 1 ? root : root.parentNode;\n container.appendChild(clone);\n const { hasTransform } = getTransitionInfo(clone);\n container.removeChild(clone);\n return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n const fn = vnode.props[\"onUpdate:modelValue\"] || false;\n return isArray(fn) ? (value) => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n const target = e.target;\n if (target.composing) {\n target.composing = false;\n target.dispatchEvent(new Event(\"input\"));\n }\n}\nconst assignKey = Symbol(\"_assign\");\nconst vModelText = {\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n const castToNumber = number || vnode.props && vnode.props.type === \"number\";\n addEventListener(el, lazy ? \"change\" : \"input\", (e) => {\n if (e.target.composing) return;\n let domValue = el.value;\n if (trim) {\n domValue = domValue.trim();\n }\n if (castToNumber) {\n domValue = looseToNumber(domValue);\n }\n el[assignKey](domValue);\n });\n if (trim) {\n addEventListener(el, \"change\", () => {\n el.value = el.value.trim();\n });\n }\n if (!lazy) {\n addEventListener(el, \"compositionstart\", onCompositionStart);\n addEventListener(el, \"compositionend\", onCompositionEnd);\n addEventListener(el, \"change\", onCompositionEnd);\n }\n },\n // set value on mounted so it's after min/max for type=\"range\"\n mounted(el, { value }) {\n el.value = value == null ? \"\" : value;\n },\n beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n if (el.composing) return;\n const elValue = (number || el.type === \"number\") && !/^0\\d/.test(el.value) ? looseToNumber(el.value) : el.value;\n const newValue = value == null ? \"\" : value;\n if (elValue === newValue) {\n return;\n }\n if (document.activeElement === el && el.type !== \"range\") {\n if (lazy && value === oldValue) {\n return;\n }\n if (trim && el.value.trim() === newValue) {\n return;\n }\n }\n el.value = newValue;\n }\n};\nconst vModelCheckbox = {\n // #4096 array checkboxes need to be deep traversed\n deep: true,\n created(el, _, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n addEventListener(el, \"change\", () => {\n const modelValue = el._modelValue;\n const elementValue = getValue(el);\n const checked = el.checked;\n const assign = el[assignKey];\n if (isArray(modelValue)) {\n const index = looseIndexOf(modelValue, elementValue);\n const found = index !== -1;\n if (checked && !found) {\n assign(modelValue.concat(elementValue));\n } else if (!checked && found) {\n const filtered = [...modelValue];\n filtered.splice(index, 1);\n assign(filtered);\n }\n } else if (isSet(modelValue)) {\n const cloned = new Set(modelValue);\n if (checked) {\n cloned.add(elementValue);\n } else {\n cloned.delete(elementValue);\n }\n assign(cloned);\n } else {\n assign(getCheckboxValue(el, checked));\n }\n });\n },\n // set initial checked on mount to wait for true-value/false-value\n mounted: setChecked,\n beforeUpdate(el, binding, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n setChecked(el, binding, vnode);\n }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n el._modelValue = value;\n let checked;\n if (isArray(value)) {\n checked = looseIndexOf(value, vnode.props.value) > -1;\n } else if (isSet(value)) {\n checked = value.has(vnode.props.value);\n } else {\n if (value === oldValue) return;\n checked = looseEqual(value, getCheckboxValue(el, true));\n }\n if (el.checked !== checked) {\n el.checked = checked;\n }\n}\nconst vModelRadio = {\n created(el, { value }, vnode) {\n el.checked = looseEqual(value, vnode.props.value);\n el[assignKey] = getModelAssigner(vnode);\n addEventListener(el, \"change\", () => {\n el[assignKey](getValue(el));\n });\n },\n beforeUpdate(el, { value, oldValue }, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n if (value !== oldValue) {\n el.checked = looseEqual(value, vnode.props.value);\n }\n }\n};\nconst vModelSelect = {\n // <select multiple> value need to be deep traversed\n deep: true,\n created(el, { value, modifiers: { number } }, vnode) {\n const isSetModel = isSet(value);\n addEventListener(el, \"change\", () => {\n const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(\n (o) => number ? looseToNumber(getValue(o)) : getValue(o)\n );\n el[assignKey](\n el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]\n );\n el._assigning = true;\n nextTick(() => {\n el._assigning = false;\n });\n });\n el[assignKey] = getModelAssigner(vnode);\n },\n // set value in mounted & updated because <select> relies on its children\n // <option>s.\n mounted(el, { value }) {\n setSelected(el, value);\n },\n beforeUpdate(el, _binding, vnode) {\n el[assignKey] = getModelAssigner(vnode);\n },\n updated(el, { value }) {\n if (!el._assigning) {\n setSelected(el, value);\n }\n }\n};\nfunction setSelected(el, value) {\n const isMultiple = el.multiple;\n const isArrayValue = isArray(value);\n if (isMultiple && !isArrayValue && !isSet(value)) {\n !!(process.env.NODE_ENV !== \"production\") && warn(\n `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.`\n );\n return;\n }\n for (let i = 0, l = el.options.length; i < l; i++) {\n const option = el.options[i];\n const optionValue = getValue(option);\n if (isMultiple) {\n if (isArrayValue) {\n const optionType = typeof optionValue;\n if (optionType === \"string\" || optionType === \"number\") {\n option.selected = value.some((v) => String(v) === String(optionValue));\n } else {\n option.selected = looseIndexOf(value, optionValue) > -1;\n }\n } else {\n option.selected = value.has(optionValue);\n }\n } else if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) el.selectedIndex = i;\n return;\n }\n }\n if (!isMultiple && el.selectedIndex !== -1) {\n el.selectedIndex = -1;\n }\n}\nfunction getValue(el) {\n return \"_value\" in el ? el._value : el.value;\n}\nfunction getCheckboxValue(el, checked) {\n const key = checked ? \"_trueValue\" : \"_falseValue\";\n return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n created(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, \"created\");\n },\n mounted(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, \"mounted\");\n },\n beforeUpdate(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, \"beforeUpdate\");\n },\n updated(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, \"updated\");\n }\n};\nfunction resolveDynamicModel(tagName, type) {\n switch (tagName) {\n case \"SELECT\":\n return vModelSelect;\n case \"TEXTAREA\":\n return vModelText;\n default:\n switch (type) {\n case \"checkbox\":\n return vModelCheckbox;\n case \"radio\":\n return vModelRadio;\n default:\n return vModelText;\n }\n }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n const modelToUse = resolveDynamicModel(\n el.tagName,\n vnode.props && vnode.props.type\n );\n const fn = modelToUse[hook];\n fn && fn(el, binding, vnode, prevVNode);\n}\nfunction initVModelForSSR() {\n vModelText.getSSRProps = ({ value }) => ({ value });\n vModelRadio.getSSRProps = ({ value }, vnode) => {\n if (vnode.props && looseEqual(vnode.props.value, value)) {\n return { checked: true };\n }\n };\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n if (isArray(value)) {\n if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n return { checked: true };\n }\n } else if (isSet(value)) {\n if (vnode.props && value.has(vnode.props.value)) {\n return { checked: true };\n }\n } else if (value) {\n return { checked: true };\n }\n };\n vModelDynamic.getSSRProps = (binding, vnode) => {\n if (typeof vnode.type !== \"string\") {\n return;\n }\n const modelToUse = resolveDynamicModel(\n // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n vnode.type.toUpperCase(),\n vnode.props && vnode.props.type\n );\n if (modelToUse.getSSRProps) {\n return modelToUse.getSSRProps(binding, vnode);\n }\n };\n}\n\nconst systemModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\"];\nconst modifierGuards = {\n stop: (e) => e.stopPropagation(),\n prevent: (e) => e.preventDefault(),\n self: (e) => e.target !== e.currentTarget,\n ctrl: (e) => !e.ctrlKey,\n shift: (e) => !e.shiftKey,\n alt: (e) => !e.altKey,\n meta: (e) => !e.metaKey,\n left: (e) => \"button\" in e && e.button !== 0,\n middle: (e) => \"button\" in e && e.button !== 1,\n right: (e) => \"button\" in e && e.button !== 2,\n exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))\n};\nconst withModifiers = (fn, modifiers) => {\n const cache = fn._withMods || (fn._withMods = {});\n const cacheKey = modifiers.join(\".\");\n return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {\n for (let i = 0; i < modifiers.length; i++) {\n const guard = modifierGuards[modifiers[i]];\n if (guard && guard(event, modifiers)) return;\n }\n return fn(event, ...args);\n });\n};\nconst keyNames = {\n esc: \"escape\",\n space: \" \",\n up: \"arrow-up\",\n left: \"arrow-left\",\n right: \"arrow-right\",\n down: \"arrow-down\",\n delete: \"backspace\"\n};\nconst withKeys = (fn, modifiers) => {\n const cache = fn._withKeys || (fn._withKeys = {});\n const cacheKey = modifiers.join(\".\");\n return cache[cacheKey] || (cache[cacheKey] = (event) => {\n if (!(\"key\" in event)) {\n return;\n }\n const eventKey = hyphenate(event.key);\n if (modifiers.some(\n (k) => k === eventKey || keyNames[k] === eventKey\n )) {\n return fn(event);\n }\n });\n};\n\nconst rendererOptions = /* @__PURE__ */ extend({ patchProp }, nodeOps);\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n return renderer || (renderer = createRenderer(rendererOptions));\n}\nfunction ensureHydrationRenderer() {\n renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);\n enabledHydration = true;\n return renderer;\n}\nconst render = (...args) => {\n ensureRenderer().render(...args);\n};\nconst hydrate = (...args) => {\n ensureHydrationRenderer().hydrate(...args);\n};\nconst createApp = (...args) => {\n const app = ensureRenderer().createApp(...args);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (!container) return;\n const component = app._component;\n if (!isFunction(component) && !component.render && !component.template) {\n component.template = container.innerHTML;\n }\n if (container.nodeType === 1) {\n container.textContent = \"\";\n }\n const proxy = mount(container, false, resolveRootNamespace(container));\n if (container instanceof Element) {\n container.removeAttribute(\"v-cloak\");\n container.setAttribute(\"data-v-app\", \"\");\n }\n return proxy;\n };\n return app;\n};\nconst createSSRApp = (...args) => {\n const app = ensureHydrationRenderer().createApp(...args);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (container) {\n return mount(container, true, resolveRootNamespace(container));\n }\n };\n return app;\n};\nfunction resolveRootNamespace(container) {\n if (container instanceof SVGElement) {\n return \"svg\";\n }\n if (typeof MathMLElement === \"function\" && container instanceof MathMLElement) {\n return \"mathml\";\n }\n}\nfunction injectNativeTagCheck(app) {\n Object.defineProperty(app.config, \"isNativeTag\", {\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),\n writable: false\n });\n}\nfunction injectCompilerOptionsCheck(app) {\n if (isRuntimeOnly()) {\n const isCustomElement = app.config.isCustomElement;\n Object.defineProperty(app.config, \"isCustomElement\", {\n get() {\n return isCustomElement;\n },\n set() {\n warn(\n `The \\`isCustomElement\\` config option is deprecated. Use \\`compilerOptions.isCustomElement\\` instead.`\n );\n }\n });\n const compilerOptions = app.config.compilerOptions;\n const msg = `The \\`compilerOptions\\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka \"full build\"). Since you are using the runtime-only build, \\`compilerOptions\\` must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\n- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\n- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`;\n Object.defineProperty(app.config, \"compilerOptions\", {\n get() {\n warn(msg);\n return compilerOptions;\n },\n set() {\n warn(msg);\n }\n });\n }\n}\nfunction normalizeContainer(container) {\n if (isString(container)) {\n const res = document.querySelector(container);\n if (!!(process.env.NODE_ENV !== \"production\") && !res) {\n warn(\n `Failed to mount app: mount target selector \"${container}\" returned null.`\n );\n }\n return res;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === \"closed\") {\n warn(\n `mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`\n );\n }\n return container;\n}\nlet ssrDirectiveInitialized = false;\nconst initDirectivesForSSR = () => {\n if (!ssrDirectiveInitialized) {\n ssrDirectiveInitialized = true;\n initVModelForSSR();\n initVShowForSSR();\n }\n} ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, useHost, useShadowRoot, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","/**\n* vue v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { initCustomFormatter, warn } from '@vue/runtime-dom';\nexport * from '@vue/runtime-dom';\n\nfunction initDev() {\n {\n initCustomFormatter();\n }\n}\n\nif (!!(process.env.NODE_ENV !== \"production\")) {\n initDev();\n}\nconst compile = () => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Runtime compilation is not supported in this build of Vue.` + (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".` )\n );\n }\n};\n\nexport { compile };\n","/*!\n * shared v11.1.2\n * (c) 2025 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\n * Original Utilities\n * written by kazuya kawaguchi\n */\nconst inBrowser = typeof window !== 'undefined';\nlet mark;\nlet measure;\nif ((process.env.NODE_ENV !== 'production')) {\n const perf = inBrowser && window.performance;\n if (perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n // @ts-ignore browser compat\n perf.clearMeasures) {\n mark = (tag) => {\n perf.mark(tag);\n };\n measure = (name, startTag, endTag) => {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n };\n }\n}\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\n/* eslint-disable */\nfunction format(message, ...args) {\n if (args.length === 1 && isObject(args[0])) {\n args = args[0];\n }\n if (!args || !args.hasOwnProperty) {\n args = {};\n }\n return message.replace(RE_ARGS, (match, identifier) => {\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\n });\n}\nconst makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n .replace(/\\u0027/g, '\\\\u0027');\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\nconst assign = Object.assign;\nconst _create = Object.create;\nconst create = (obj = null) => _create(obj);\nlet _globalThis;\nconst getGlobalThis = () => {\n // prettier-ignore\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : create()));\n};\nfunction escapeHtml(rawText) {\n return rawText\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n/* eslint-enable */\n/**\n * Useful Utilities By Evan you\n * Modified by kazuya kawaguchi\n * MIT License\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\n */\nconst isArray = Array.isArray;\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isBoolean = (val) => typeof val === 'boolean';\nconst isSymbol = (val) => typeof val === 'symbol';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isObject = (val) => val !== null && typeof val === 'object';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 isPlainObject = (val) => toTypeString(val) === '[object Object]';\n// for converting list and named values to displayed strings.\nconst toDisplayString = (val) => {\n return val == null\n ? ''\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\n ? JSON.stringify(val, null, 2)\n : String(val);\n};\nfunction join(items, separator = '') {\n return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');\n}\nconst RANGE = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n const lines = source.split(/\\r?\\n/);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\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(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\n const lineLength = lines[j].length;\n if (j === i) {\n // push underline\n const pad = start - (count - lineLength) + 1;\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\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 + 1;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\nfunction warn(msg, err) {\n if (typeof console !== 'undefined') {\n console.warn(`[intlify] ` + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\nconst hasWarned = {};\nfunction warnOnce(msg) {\n if (!hasWarned[msg]) {\n hasWarned[msg] = true;\n warn(msg);\n }\n}\n\n/**\n * Event emitter, forked from the below:\n * - original repository url: https://github.com/developit/mitt\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\n * - author: Jason Miller (https://github.com/developit)\n * - license: MIT\n */\n/**\n * Create a event emitter\n *\n * @returns An event emitter\n */\nfunction createEmitter() {\n const events = new Map();\n const emitter = {\n events,\n on(event, handler) {\n const handlers = events.get(event);\n const added = handlers && handlers.push(handler);\n if (!added) {\n events.set(event, [handler]);\n }\n },\n off(event, handler) {\n const handlers = events.get(event);\n if (handlers) {\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n },\n emit(event, payload) {\n (events.get(event) || [])\n .slice()\n .map(handler => handler(payload));\n (events.get('*') || [])\n .slice()\n .map(handler => handler(event, payload));\n }\n };\n return emitter;\n}\n\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction deepCopy(src, des) {\n // src and des should both be objects, and none of them can be a array\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\n throw new Error('Invalid value');\n }\n const stack = [{ src, des }];\n while (stack.length) {\n const { src, des } = stack.pop();\n // using `Object.keys` which skips prototype properties\n Object.keys(src).forEach(key => {\n if (key === '__proto__') {\n return;\n }\n // if src[key] is an object/array, set des[key]\n // to empty object/array to prevent setting by reference\n if (isObject(src[key]) && !isObject(des[key])) {\n des[key] = Array.isArray(src[key]) ? [] : create();\n }\n if (isNotObjectOrIsArray(des[key]) || isNotObjectOrIsArray(src[key])) {\n // replace with src[key] when:\n // src[key] or des[key] is not an object, or\n // src[key] or des[key] is an array\n des[key] = src[key];\n }\n else {\n // src[key] and des[key] are both objects, merge them\n stack.push({ src: src[key], des: des[key] });\n }\n });\n }\n}\n\nexport { assign, create, createEmitter, deepCopy, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, join, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn, warnOnce };\n","/*!\n * message-compiler v11.1.2\n * (c) 2025 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, join, isString } from '@intlify/shared';\n\nconst LOCATION_STUB = {\n start: { line: 1, column: 1, offset: 0 },\n end: { line: 1, column: 1, offset: 0 }\n};\nfunction createPosition(line, column, offset) {\n return { line, column, offset };\n}\nfunction createLocation(start, end, source) {\n const loc = { start, end };\n if (source != null) {\n loc.source = source;\n }\n return loc;\n}\n\nconst CompileErrorCodes = {\n // tokenizer error codes\n EXPECTED_TOKEN: 1,\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\n UNKNOWN_ESCAPE_SEQUENCE: 4,\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\n UNBALANCED_CLOSING_BRACE: 6,\n UNTERMINATED_CLOSING_BRACE: 7,\n EMPTY_PLACEHOLDER: 8,\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\n INVALID_LINKED_FORMAT: 10,\n // parser error codes\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\n // generator error codes\n UNHANDLED_CODEGEN_NODE_TYPE: 15,\n // minifier error codes\n UNHANDLED_MINIFIER_NODE_TYPE: 16\n};\n// Special value for higher-order compilers to pick up the last code\n// to avoid collision of error codes.\n// This should always be kept as the last item.\nconst COMPILE_ERROR_CODES_EXTEND_POINT = 17;\n/** @internal */\nconst errorMessages = {\n // tokenizer error messages\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\n // parser error messages\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,\n // generator error messages\n [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,\n // minimizer error messages\n [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`\n};\nfunction createCompileError(code, loc, options = {}) {\n const { domain, messages, args } = options;\n const msg = (process.env.NODE_ENV !== 'production')\n ? format((messages || errorMessages)[code] || '', ...(args || []))\n : code;\n const error = new SyntaxError(String(msg));\n error.code = code;\n if (loc) {\n error.location = loc;\n }\n error.domain = domain;\n return error;\n}\n/** @internal */\nfunction defaultOnError(error) {\n throw error;\n}\n\n// eslint-disable-next-line no-useless-escape\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nconst detectHtmlTag = (source) => RE_HTML_TAG.test(source);\n\nconst CHAR_SP = ' ';\nconst CHAR_CR = '\\r';\nconst CHAR_LF = '\\n';\nconst CHAR_LS = String.fromCharCode(0x2028);\nconst CHAR_PS = String.fromCharCode(0x2029);\nfunction createScanner(str) {\n const _buf = str;\n let _index = 0;\n let _line = 1;\n let _column = 1;\n let _peekOffset = 0;\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\n const isLF = (index) => _buf[index] === CHAR_LF;\n const isPS = (index) => _buf[index] === CHAR_PS;\n const isLS = (index) => _buf[index] === CHAR_LS;\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\n const index = () => _index;\n const line = () => _line;\n const column = () => _column;\n const peekOffset = () => _peekOffset;\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\n const currentChar = () => charAt(_index);\n const currentPeek = () => charAt(_index + _peekOffset);\n function next() {\n _peekOffset = 0;\n if (isLineEnd(_index)) {\n _line++;\n _column = 0;\n }\n if (isCRLF(_index)) {\n _index++;\n }\n _index++;\n _column++;\n return _buf[_index];\n }\n function peek() {\n if (isCRLF(_index + _peekOffset)) {\n _peekOffset++;\n }\n _peekOffset++;\n return _buf[_index + _peekOffset];\n }\n function reset() {\n _index = 0;\n _line = 1;\n _column = 1;\n _peekOffset = 0;\n }\n function resetPeek(offset = 0) {\n _peekOffset = offset;\n }\n function skipToPeek() {\n const target = _index + _peekOffset;\n while (target !== _index) {\n next();\n }\n _peekOffset = 0;\n }\n return {\n index,\n line,\n column,\n peekOffset,\n charAt,\n currentChar,\n currentPeek,\n next,\n peek,\n reset,\n resetPeek,\n skipToPeek\n };\n}\n\nconst EOF = undefined;\nconst DOT = '.';\nconst LITERAL_DELIMITER = \"'\";\nconst ERROR_DOMAIN$3 = 'tokenizer';\nfunction createTokenizer(source, options = {}) {\n const location = options.location !== false;\n const _scnr = createScanner(source);\n const currentOffset = () => _scnr.index();\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\n const _initLoc = currentPosition();\n const _initOffset = currentOffset();\n const _context = {\n currentType: 13 /* TokenTypes.EOF */,\n offset: _initOffset,\n startLoc: _initLoc,\n endLoc: _initLoc,\n lastType: 13 /* TokenTypes.EOF */,\n lastOffset: _initOffset,\n lastStartLoc: _initLoc,\n lastEndLoc: _initLoc,\n braceNest: 0,\n inLinked: false,\n text: ''\n };\n const context = () => _context;\n const { onError } = options;\n function emitError(code, pos, offset, ...args) {\n const ctx = context();\n pos.column += offset;\n pos.offset += offset;\n if (onError) {\n const loc = location ? createLocation(ctx.startLoc, pos) : null;\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$3,\n args\n });\n onError(err);\n }\n }\n function getToken(context, type, value) {\n context.endLoc = currentPosition();\n context.currentType = type;\n const token = { type };\n if (location) {\n token.loc = createLocation(context.startLoc, context.endLoc);\n }\n if (value != null) {\n token.value = value;\n }\n return token;\n }\n const getEndToken = (context) => getToken(context, 13 /* TokenTypes.EOF */);\n function eat(scnr, ch) {\n if (scnr.currentChar() === ch) {\n scnr.next();\n return ch;\n }\n else {\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\n return '';\n }\n }\n function peekSpaces(scnr) {\n let buf = '';\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\n buf += scnr.currentPeek();\n scnr.peek();\n }\n return buf;\n }\n function skipSpaces(scnr) {\n const buf = peekSpaces(scnr);\n scnr.skipToPeek();\n return buf;\n }\n function isIdentifierStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n cc === 95 // _\n );\n }\n function isNumberStart(ch) {\n if (ch === EOF) {\n return false;\n }\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n function isNamedIdentifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isListIdentifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\n const ret = isNumberStart(ch);\n scnr.resetPeek();\n return ret;\n }\n function isLiteralStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 2 /* TokenTypes.BraceLeft */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDotStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 7 /* TokenTypes.LinkedAlias */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \".\" /* TokenChars.LinkedDot */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedModifierStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 8 /* TokenTypes.LinkedDot */) {\n return false;\n }\n peekSpaces(scnr);\n const ret = isIdentifierStart(scnr.currentPeek());\n scnr.resetPeek();\n return ret;\n }\n function isLinkedDelimiterStart(scnr, context) {\n const { currentType } = context;\n if (!(currentType === 7 /* TokenTypes.LinkedAlias */ ||\n currentType === 11 /* TokenTypes.LinkedModifier */)) {\n return false;\n }\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \":\" /* TokenChars.LinkedDelimiter */;\n scnr.resetPeek();\n return ret;\n }\n function isLinkedReferStart(scnr, context) {\n const { currentType } = context;\n if (currentType !== 9 /* TokenTypes.LinkedDelimiter */) {\n return false;\n }\n const fn = () => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n return isIdentifierStart(scnr.peek());\n }\n else if (ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n ch === \":\" /* TokenChars.LinkedDelimiter */ ||\n ch === \".\" /* TokenChars.LinkedDot */ ||\n ch === CHAR_SP ||\n !ch) {\n return false;\n }\n else if (ch === CHAR_LF) {\n scnr.peek();\n return fn();\n }\n else {\n // other characters\n return isTextStart(scnr, false);\n }\n };\n const ret = fn();\n scnr.resetPeek();\n return ret;\n }\n function isPluralStart(scnr) {\n peekSpaces(scnr);\n const ret = scnr.currentPeek() === \"|\" /* TokenChars.Pipe */;\n scnr.resetPeek();\n return ret;\n }\n function isTextStart(scnr, reset = true) {\n const fn = (hasSpace = false, prev = '') => {\n const ch = scnr.currentPeek();\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n return hasSpace;\n }\n else if (ch === \"@\" /* TokenChars.LinkedAlias */ || !ch) {\n return hasSpace;\n }\n else if (ch === \"|\" /* TokenChars.Pipe */) {\n return !(prev === CHAR_SP || prev === CHAR_LF);\n }\n else if (ch === CHAR_SP) {\n scnr.peek();\n return fn(true, CHAR_SP);\n }\n else if (ch === CHAR_LF) {\n scnr.peek();\n return fn(true, CHAR_LF);\n }\n else {\n return true;\n }\n };\n const ret = fn();\n reset && scnr.resetPeek();\n return ret;\n }\n function takeChar(scnr, fn) {\n const ch = scnr.currentChar();\n if (ch === EOF) {\n return EOF;\n }\n if (fn(ch)) {\n scnr.next();\n return ch;\n }\n return null;\n }\n function isIdentifier(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n (cc >= 48 && cc <= 57) || // 0-9\n cc === 95 || // _\n cc === 36 // $\n );\n }\n function takeIdentifierChar(scnr) {\n return takeChar(scnr, isIdentifier);\n }\n function isNamedIdentifier(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 97 && cc <= 122) || // a-z\n (cc >= 65 && cc <= 90) || // A-Z\n (cc >= 48 && cc <= 57) || // 0-9\n cc === 95 || // _\n cc === 36 || // $\n cc === 45 // -\n );\n }\n function takeNamedIdentifierChar(scnr) {\n return takeChar(scnr, isNamedIdentifier);\n }\n function isDigit(ch) {\n const cc = ch.charCodeAt(0);\n return cc >= 48 && cc <= 57; // 0-9\n }\n function takeDigit(scnr) {\n return takeChar(scnr, isDigit);\n }\n function isHexDigit(ch) {\n const cc = ch.charCodeAt(0);\n return ((cc >= 48 && cc <= 57) || // 0-9\n (cc >= 65 && cc <= 70) || // A-F\n (cc >= 97 && cc <= 102)); // a-f\n }\n function takeHexDigit(scnr) {\n return takeChar(scnr, isHexDigit);\n }\n function getDigits(scnr) {\n let ch = '';\n let num = '';\n while ((ch = takeDigit(scnr))) {\n num += ch;\n }\n return num;\n }\n function readText(scnr) {\n let buf = '';\n while (true) {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n ch === \"}\" /* TokenChars.BraceRight */ ||\n ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n !ch) {\n break;\n }\n else if (ch === CHAR_SP || ch === CHAR_LF) {\n if (isTextStart(scnr)) {\n buf += ch;\n scnr.next();\n }\n else if (isPluralStart(scnr)) {\n break;\n }\n else {\n buf += ch;\n scnr.next();\n }\n }\n else {\n buf += ch;\n scnr.next();\n }\n }\n return buf;\n }\n function readNamedIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let name = '';\n while ((ch = takeNamedIdentifierChar(scnr))) {\n name += ch;\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return name;\n }\n function readListIdentifier(scnr) {\n skipSpaces(scnr);\n let value = '';\n if (scnr.currentChar() === '-') {\n scnr.next();\n value += `-${getDigits(scnr)}`;\n }\n else {\n value += getDigits(scnr);\n }\n if (scnr.currentChar() === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n return value;\n }\n function isLiteral(ch) {\n return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;\n }\n function readLiteral(scnr) {\n skipSpaces(scnr);\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n let ch = '';\n let literal = '';\n while ((ch = takeChar(scnr, isLiteral))) {\n if (ch === '\\\\') {\n literal += readEscapeSequence(scnr);\n }\n else {\n literal += ch;\n }\n }\n const current = scnr.currentChar();\n if (current === CHAR_LF || current === EOF) {\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\n // TODO: Is it correct really?\n if (current === CHAR_LF) {\n scnr.next();\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n }\n return literal;\n }\n // eslint-disable-next-line no-useless-escape\n eat(scnr, `\\'`);\n return literal;\n }\n function readEscapeSequence(scnr) {\n const ch = scnr.currentChar();\n switch (ch) {\n case '\\\\':\n case `\\'`: // eslint-disable-line no-useless-escape\n scnr.next();\n return `\\\\${ch}`;\n case 'u':\n return readUnicodeEscapeSequence(scnr, ch, 4);\n case 'U':\n return readUnicodeEscapeSequence(scnr, ch, 6);\n default:\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\n return '';\n }\n }\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\n eat(scnr, unicode);\n let sequence = '';\n for (let i = 0; i < digits; i++) {\n const ch = takeHexDigit(scnr);\n if (!ch) {\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\n break;\n }\n sequence += ch;\n }\n return `\\\\${unicode}${sequence}`;\n }\n function isInvalidIdentifier(ch) {\n return (ch !== \"{\" /* TokenChars.BraceLeft */ &&\n ch !== \"}\" /* TokenChars.BraceRight */ &&\n ch !== CHAR_SP &&\n ch !== CHAR_LF);\n }\n function readInvalidIdentifier(scnr) {\n skipSpaces(scnr);\n let ch = '';\n let identifiers = '';\n while ((ch = takeChar(scnr, isInvalidIdentifier))) {\n identifiers += ch;\n }\n return identifiers;\n }\n function readLinkedModifier(scnr) {\n let ch = '';\n let name = '';\n while ((ch = takeIdentifierChar(scnr))) {\n name += ch;\n }\n return name;\n }\n function readLinkedRefer(scnr) {\n const fn = (buf) => {\n const ch = scnr.currentChar();\n if (ch === \"{\" /* TokenChars.BraceLeft */ ||\n ch === \"@\" /* TokenChars.LinkedAlias */ ||\n ch === \"|\" /* TokenChars.Pipe */ ||\n ch === \"(\" /* TokenChars.ParenLeft */ ||\n ch === \")\" /* TokenChars.ParenRight */ ||\n !ch) {\n return buf;\n }\n else if (ch === CHAR_SP) {\n return buf;\n }\n else if (ch === CHAR_LF || ch === DOT) {\n buf += ch;\n scnr.next();\n return fn(buf);\n }\n else {\n buf += ch;\n scnr.next();\n return fn(buf);\n }\n };\n return fn('');\n }\n function readPlural(scnr) {\n skipSpaces(scnr);\n const plural = eat(scnr, \"|\" /* TokenChars.Pipe */);\n skipSpaces(scnr);\n return plural;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInPlaceholder(scnr, context) {\n let token = null;\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* TokenChars.BraceLeft */:\n if (context.braceNest >= 1) {\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 2 /* TokenTypes.BraceLeft */, \"{\" /* TokenChars.BraceLeft */);\n skipSpaces(scnr);\n context.braceNest++;\n return token;\n case \"}\" /* TokenChars.BraceRight */:\n if (context.braceNest > 0 &&\n context.currentType === 2 /* TokenTypes.BraceLeft */) {\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\n }\n scnr.next();\n token = getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n context.braceNest--;\n context.braceNest > 0 && skipSpaces(scnr);\n if (context.inLinked && context.braceNest === 0) {\n context.inLinked = false;\n }\n return token;\n case \"@\" /* TokenChars.LinkedAlias */:\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = readTokenInLinked(scnr, context) || getEndToken(context);\n context.braceNest = 0;\n return token;\n default: {\n let validNamedIdentifier = true;\n let validListIdentifier = true;\n let validLiteral = true;\n if (isPluralStart(scnr)) {\n if (context.braceNest > 0) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n }\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (context.braceNest > 0 &&\n (context.currentType === 4 /* TokenTypes.Named */ ||\n context.currentType === 5 /* TokenTypes.List */ ||\n context.currentType === 6 /* TokenTypes.Literal */)) {\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\n context.braceNest = 0;\n return readToken(scnr, context);\n }\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\n token = getToken(context, 4 /* TokenTypes.Named */, readNamedIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\n token = getToken(context, 5 /* TokenTypes.List */, readListIdentifier(scnr));\n skipSpaces(scnr);\n return token;\n }\n if ((validLiteral = isLiteralStart(scnr, context))) {\n token = getToken(context, 6 /* TokenTypes.Literal */, readLiteral(scnr));\n skipSpaces(scnr);\n return token;\n }\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\n token = getToken(context, 12 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\n skipSpaces(scnr);\n return token;\n }\n break;\n }\n }\n return token;\n }\n // TODO: We need refactoring of token parsing ...\n function readTokenInLinked(scnr, context) {\n const { currentType } = context;\n let token = null;\n const ch = scnr.currentChar();\n if ((currentType === 7 /* TokenTypes.LinkedAlias */ ||\n currentType === 8 /* TokenTypes.LinkedDot */ ||\n currentType === 11 /* TokenTypes.LinkedModifier */ ||\n currentType === 9 /* TokenTypes.LinkedDelimiter */) &&\n (ch === CHAR_LF || ch === CHAR_SP)) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n switch (ch) {\n case \"@\" /* TokenChars.LinkedAlias */:\n scnr.next();\n token = getToken(context, 7 /* TokenTypes.LinkedAlias */, \"@\" /* TokenChars.LinkedAlias */);\n context.inLinked = true;\n return token;\n case \".\" /* TokenChars.LinkedDot */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 8 /* TokenTypes.LinkedDot */, \".\" /* TokenChars.LinkedDot */);\n case \":\" /* TokenChars.LinkedDelimiter */:\n skipSpaces(scnr);\n scnr.next();\n return getToken(context, 9 /* TokenTypes.LinkedDelimiter */, \":\" /* TokenChars.LinkedDelimiter */);\n default:\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (isLinkedDotStart(scnr, context) ||\n isLinkedDelimiterStart(scnr, context)) {\n skipSpaces(scnr);\n return readTokenInLinked(scnr, context);\n }\n if (isLinkedModifierStart(scnr, context)) {\n skipSpaces(scnr);\n return getToken(context, 11 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));\n }\n if (isLinkedReferStart(scnr, context)) {\n skipSpaces(scnr);\n if (ch === \"{\" /* TokenChars.BraceLeft */) {\n // scan the placeholder\n return readTokenInPlaceholder(scnr, context) || token;\n }\n else {\n return getToken(context, 10 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));\n }\n }\n if (currentType === 7 /* TokenTypes.LinkedAlias */) {\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\n }\n context.braceNest = 0;\n context.inLinked = false;\n return readToken(scnr, context);\n }\n }\n // TODO: We need refactoring of token parsing ...\n function readToken(scnr, context) {\n let token = { type: 13 /* TokenTypes.EOF */ };\n if (context.braceNest > 0) {\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n }\n if (context.inLinked) {\n return readTokenInLinked(scnr, context) || getEndToken(context);\n }\n const ch = scnr.currentChar();\n switch (ch) {\n case \"{\" /* TokenChars.BraceLeft */:\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\n case \"}\" /* TokenChars.BraceRight */:\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\n scnr.next();\n return getToken(context, 3 /* TokenTypes.BraceRight */, \"}\" /* TokenChars.BraceRight */);\n case \"@\" /* TokenChars.LinkedAlias */:\n return readTokenInLinked(scnr, context) || getEndToken(context);\n default: {\n if (isPluralStart(scnr)) {\n token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));\n // reset\n context.braceNest = 0;\n context.inLinked = false;\n return token;\n }\n if (isTextStart(scnr)) {\n return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));\n }\n break;\n }\n }\n return token;\n }\n function nextToken() {\n const { currentType, offset, startLoc, endLoc } = _context;\n _context.lastType = currentType;\n _context.lastOffset = offset;\n _context.lastStartLoc = startLoc;\n _context.lastEndLoc = endLoc;\n _context.offset = currentOffset();\n _context.startLoc = currentPosition();\n if (_scnr.currentChar() === EOF) {\n return getToken(_context, 13 /* TokenTypes.EOF */);\n }\n return readToken(_scnr, _context);\n }\n return {\n nextToken,\n currentOffset,\n currentPosition,\n context\n };\n}\n\nconst ERROR_DOMAIN$2 = 'parser';\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\n switch (match) {\n case `\\\\\\\\`:\n return `\\\\`;\n // eslint-disable-next-line no-useless-escape\n case `\\\\\\'`:\n // eslint-disable-next-line no-useless-escape\n return `\\'`;\n default: {\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\n return String.fromCodePoint(codePoint);\n }\n // invalid ...\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\n return '�';\n }\n }\n}\nfunction createParser(options = {}) {\n const location = options.location !== false;\n const { onError } = options;\n function emitError(tokenzer, code, start, offset, ...args) {\n const end = tokenzer.currentPosition();\n end.offset += offset;\n end.column += offset;\n if (onError) {\n const loc = location ? createLocation(start, end) : null;\n const err = createCompileError(code, loc, {\n domain: ERROR_DOMAIN$2,\n args\n });\n onError(err);\n }\n }\n function startNode(type, offset, loc) {\n const node = { type };\n if (location) {\n node.start = offset;\n node.end = offset;\n node.loc = { start: loc, end: loc };\n }\n return node;\n }\n function endNode(node, offset, pos, type) {\n if (location) {\n node.end = offset;\n if (node.loc) {\n node.loc.end = pos;\n }\n }\n }\n function parseText(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseList(tokenizer, index) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(5 /* NodeTypes.List */, offset, loc);\n node.index = parseInt(index, 10);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseNamed(tokenizer, key) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(4 /* NodeTypes.Named */, offset, loc);\n node.key = key;\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLiteral(tokenizer, value) {\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\n const node = startNode(9 /* NodeTypes.Literal */, offset, loc);\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\n tokenizer.nextToken(); // skip brach right\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinkedModifier(tokenizer) {\n const token = tokenizer.nextToken();\n const context = tokenizer.context();\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\n const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);\n if (token.type !== 11 /* TokenTypes.LinkedModifier */) {\n // empty modifier\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\n node.value = '';\n endNode(node, offset, loc);\n return {\n nextConsumeToken: token,\n node\n };\n }\n // check token\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.value = token.value || '';\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node\n };\n }\n function parseLinkedKey(tokenizer, value) {\n const context = tokenizer.context();\n const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);\n node.value = value;\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseLinked(tokenizer) {\n const context = tokenizer.context();\n const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);\n let token = tokenizer.nextToken();\n if (token.type === 8 /* TokenTypes.LinkedDot */) {\n const parsed = parseLinkedModifier(tokenizer);\n linkedNode.modifier = parsed.node;\n token = parsed.nextConsumeToken || tokenizer.nextToken();\n }\n // asset check token\n if (token.type !== 9 /* TokenTypes.LinkedDelimiter */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n token = tokenizer.nextToken();\n // skip brace left\n if (token.type === 2 /* TokenTypes.BraceLeft */) {\n token = tokenizer.nextToken();\n }\n switch (token.type) {\n case 10 /* TokenTypes.LinkedKey */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\n break;\n case 4 /* TokenTypes.Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseNamed(tokenizer, token.value || '');\n break;\n case 5 /* TokenTypes.List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseList(tokenizer, token.value || '');\n break;\n case 6 /* TokenTypes.Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\n break;\n default: {\n // empty key\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\n const nextContext = tokenizer.context();\n const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);\n emptyLinkedKeyNode.value = '';\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\n linkedNode.key = emptyLinkedKeyNode;\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\n return {\n nextConsumeToken: token,\n node: linkedNode\n };\n }\n }\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\n return {\n node: linkedNode\n };\n }\n function parseMessage(tokenizer) {\n const context = tokenizer.context();\n const startOffset = context.currentType === 1 /* TokenTypes.Pipe */\n ? tokenizer.currentOffset()\n : context.offset;\n const startLoc = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.endLoc\n : context.startLoc;\n const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);\n node.items = [];\n let nextToken = null;\n do {\n const token = nextToken || tokenizer.nextToken();\n nextToken = null;\n switch (token.type) {\n case 0 /* TokenTypes.Text */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseText(tokenizer, token.value || ''));\n break;\n case 5 /* TokenTypes.List */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseList(tokenizer, token.value || ''));\n break;\n case 4 /* TokenTypes.Named */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseNamed(tokenizer, token.value || ''));\n break;\n case 6 /* TokenTypes.Literal */:\n if (token.value == null) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\n }\n node.items.push(parseLiteral(tokenizer, token.value || ''));\n break;\n case 7 /* TokenTypes.LinkedAlias */: {\n const parsed = parseLinked(tokenizer);\n node.items.push(parsed.node);\n nextToken = parsed.nextConsumeToken || null;\n break;\n }\n }\n } while (context.currentType !== 13 /* TokenTypes.EOF */ &&\n context.currentType !== 1 /* TokenTypes.Pipe */);\n // adjust message node loc\n const endOffset = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.lastOffset\n : tokenizer.currentOffset();\n const endLoc = context.currentType === 1 /* TokenTypes.Pipe */\n ? context.lastEndLoc\n : tokenizer.currentPosition();\n endNode(node, endOffset, endLoc);\n return node;\n }\n function parsePlural(tokenizer, offset, loc, msgNode) {\n const context = tokenizer.context();\n let hasEmptyMessage = msgNode.items.length === 0;\n const node = startNode(1 /* NodeTypes.Plural */, offset, loc);\n node.cases = [];\n node.cases.push(msgNode);\n do {\n const msg = parseMessage(tokenizer);\n if (!hasEmptyMessage) {\n hasEmptyMessage = msg.items.length === 0;\n }\n node.cases.push(msg);\n } while (context.currentType !== 13 /* TokenTypes.EOF */);\n if (hasEmptyMessage) {\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n function parseResource(tokenizer) {\n const context = tokenizer.context();\n const { offset, startLoc } = context;\n const msgNode = parseMessage(tokenizer);\n if (context.currentType === 13 /* TokenTypes.EOF */) {\n return msgNode;\n }\n else {\n return parsePlural(tokenizer, offset, startLoc, msgNode);\n }\n }\n function parse(source) {\n const tokenizer = createTokenizer(source, assign({}, options));\n const context = tokenizer.context();\n const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);\n if (location && node.loc) {\n node.loc.source = source;\n }\n node.body = parseResource(tokenizer);\n if (options.onCacheKey) {\n node.cacheKey = options.onCacheKey(source);\n }\n // assert whether achieved to EOF\n if (context.currentType !== 13 /* TokenTypes.EOF */) {\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\n }\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\n return node;\n }\n return { parse };\n}\nfunction getTokenCaption(token) {\n if (token.type === 13 /* TokenTypes.EOF */) {\n return 'EOF';\n }\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\n) {\n const _context = {\n ast,\n helpers: new Set()\n };\n const context = () => _context;\n const helper = (name) => {\n _context.helpers.add(name);\n return name;\n };\n return { context, helper };\n}\nfunction traverseNodes(nodes, transformer) {\n for (let i = 0; i < nodes.length; i++) {\n traverseNode(nodes[i], transformer);\n }\n}\nfunction traverseNode(node, transformer) {\n // TODO: if we need pre-hook of transform, should be implemented to here\n switch (node.type) {\n case 1 /* NodeTypes.Plural */:\n traverseNodes(node.cases, transformer);\n transformer.helper(\"plural\" /* HelperNameMap.PLURAL */);\n break;\n case 2 /* NodeTypes.Message */:\n traverseNodes(node.items, transformer);\n break;\n case 6 /* NodeTypes.Linked */: {\n const linked = node;\n traverseNode(linked.key, transformer);\n transformer.helper(\"linked\" /* HelperNameMap.LINKED */);\n transformer.helper(\"type\" /* HelperNameMap.TYPE */);\n break;\n }\n case 5 /* NodeTypes.List */:\n transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n transformer.helper(\"list\" /* HelperNameMap.LIST */);\n break;\n case 4 /* NodeTypes.Named */:\n transformer.helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */);\n transformer.helper(\"named\" /* HelperNameMap.NAMED */);\n break;\n }\n // TODO: if we need post-hook of transform, should be implemented to here\n}\n// transform AST\nfunction transform(ast, options = {} // eslint-disable-line\n) {\n const transformer = createTransformer(ast);\n transformer.helper(\"normalize\" /* HelperNameMap.NORMALIZE */);\n // traverse\n ast.body && traverseNode(ast.body, transformer);\n // set meta information\n const context = transformer.context();\n ast.helpers = Array.from(context.helpers);\n}\n\nfunction optimize(ast) {\n const body = ast.body;\n if (body.type === 2 /* NodeTypes.Message */) {\n optimizeMessageNode(body);\n }\n else {\n body.cases.forEach(c => optimizeMessageNode(c));\n }\n return ast;\n}\nfunction optimizeMessageNode(message) {\n if (message.items.length === 1) {\n const item = message.items[0];\n if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n message.static = item.value;\n delete item.value; // optimization for size\n }\n }\n else {\n const values = [];\n for (let i = 0; i < message.items.length; i++) {\n const item = message.items[i];\n if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {\n break;\n }\n if (item.value == null) {\n break;\n }\n values.push(item.value);\n }\n if (values.length === message.items.length) {\n message.static = join(values);\n for (let i = 0; i < message.items.length; i++) {\n const item = message.items[i];\n if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {\n delete item.value; // optimization for size\n }\n }\n }\n }\n}\n\nconst ERROR_DOMAIN$1 = 'minifier';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction minify(node) {\n node.t = node.type;\n switch (node.type) {\n case 0 /* NodeTypes.Resource */: {\n const resource = node;\n minify(resource.body);\n resource.b = resource.body;\n delete resource.body;\n break;\n }\n case 1 /* NodeTypes.Plural */: {\n const plural = node;\n const cases = plural.cases;\n for (let i = 0; i < cases.length; i++) {\n minify(cases[i]);\n }\n plural.c = cases;\n delete plural.cases;\n break;\n }\n case 2 /* NodeTypes.Message */: {\n const message = node;\n const items = message.items;\n for (let i = 0; i < items.length; i++) {\n minify(items[i]);\n }\n message.i = items;\n delete message.items;\n if (message.static) {\n message.s = message.static;\n delete message.static;\n }\n break;\n }\n case 3 /* NodeTypes.Text */:\n case 9 /* NodeTypes.Literal */:\n case 8 /* NodeTypes.LinkedModifier */:\n case 7 /* NodeTypes.LinkedKey */: {\n const valueNode = node;\n if (valueNode.value) {\n valueNode.v = valueNode.value;\n delete valueNode.value;\n }\n break;\n }\n case 6 /* NodeTypes.Linked */: {\n const linked = node;\n minify(linked.key);\n linked.k = linked.key;\n delete linked.key;\n if (linked.modifier) {\n minify(linked.modifier);\n linked.m = linked.modifier;\n delete linked.modifier;\n }\n break;\n }\n case 5 /* NodeTypes.List */: {\n const list = node;\n list.i = list.index;\n delete list.index;\n break;\n }\n case 4 /* NodeTypes.Named */: {\n const named = node;\n named.k = named.key;\n delete named.key;\n break;\n }\n default:\n if ((process.env.NODE_ENV !== 'production')) {\n throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {\n domain: ERROR_DOMAIN$1,\n args: [node.type]\n });\n }\n }\n delete node.type;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference types=\"source-map-js\" />\nconst ERROR_DOMAIN = 'parser';\nfunction createCodeGenerator(ast, options) {\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\n const location = options.location !== false;\n const _context = {\n filename,\n code: '',\n column: 1,\n line: 1,\n offset: 0,\n map: undefined,\n breakLineCode,\n needIndent: _needIndent,\n indentLevel: 0\n };\n if (location && ast.loc) {\n _context.source = ast.loc.source;\n }\n const context = () => _context;\n function push(code, node) {\n _context.code += code;\n }\n function _newline(n, withBreakLine = true) {\n const _breakLineCode = withBreakLine ? breakLineCode : '';\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\n }\n function indent(withNewLine = true) {\n const level = ++_context.indentLevel;\n withNewLine && _newline(level);\n }\n function deindent(withNewLine = true) {\n const level = --_context.indentLevel;\n withNewLine && _newline(level);\n }\n function newline() {\n _newline(_context.indentLevel);\n }\n const helper = (key) => `_${key}`;\n const needIndent = () => _context.needIndent;\n return {\n context,\n push,\n indent,\n deindent,\n newline,\n helper,\n needIndent\n };\n}\nfunction generateLinkedNode(generator, node) {\n const { helper } = generator;\n generator.push(`${helper(\"linked\" /* HelperNameMap.LINKED */)}(`);\n generateNode(generator, node.key);\n if (node.modifier) {\n generator.push(`, `);\n generateNode(generator, node.modifier);\n generator.push(`, _type`);\n }\n else {\n generator.push(`, undefined, _type`);\n }\n generator.push(`)`);\n}\nfunction generateMessageNode(generator, node) {\n const { helper, needIndent } = generator;\n generator.push(`${helper(\"normalize\" /* HelperNameMap.NORMALIZE */)}([`);\n generator.indent(needIndent());\n const length = node.items.length;\n for (let i = 0; i < length; i++) {\n generateNode(generator, node.items[i]);\n if (i === length - 1) {\n break;\n }\n generator.push(', ');\n }\n generator.deindent(needIndent());\n generator.push('])');\n}\nfunction generatePluralNode(generator, node) {\n const { helper, needIndent } = generator;\n if (node.cases.length > 1) {\n generator.push(`${helper(\"plural\" /* HelperNameMap.PLURAL */)}([`);\n generator.indent(needIndent());\n const length = node.cases.length;\n for (let i = 0; i < length; i++) {\n generateNode(generator, node.cases[i]);\n if (i === length - 1) {\n break;\n }\n generator.push(', ');\n }\n generator.deindent(needIndent());\n generator.push(`])`);\n }\n}\nfunction generateResource(generator, node) {\n if (node.body) {\n generateNode(generator, node.body);\n }\n else {\n generator.push('null');\n }\n}\nfunction generateNode(generator, node) {\n const { helper } = generator;\n switch (node.type) {\n case 0 /* NodeTypes.Resource */:\n generateResource(generator, node);\n break;\n case 1 /* NodeTypes.Plural */:\n generatePluralNode(generator, node);\n break;\n case 2 /* NodeTypes.Message */:\n generateMessageNode(generator, node);\n break;\n case 6 /* NodeTypes.Linked */:\n generateLinkedNode(generator, node);\n break;\n case 8 /* NodeTypes.LinkedModifier */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 7 /* NodeTypes.LinkedKey */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 5 /* NodeTypes.List */:\n generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"list\" /* HelperNameMap.LIST */)}(${node.index}))`, node);\n break;\n case 4 /* NodeTypes.Named */:\n generator.push(`${helper(\"interpolate\" /* HelperNameMap.INTERPOLATE */)}(${helper(\"named\" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);\n break;\n case 9 /* NodeTypes.Literal */:\n generator.push(JSON.stringify(node.value), node);\n break;\n case 3 /* NodeTypes.Text */:\n generator.push(JSON.stringify(node.value), node);\n break;\n default:\n if ((process.env.NODE_ENV !== 'production')) {\n throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {\n domain: ERROR_DOMAIN,\n args: [node.type]\n });\n }\n }\n}\n// generate code from AST\nconst generate = (ast, options = {}) => {\n const mode = isString(options.mode) ? options.mode : 'normal';\n const filename = isString(options.filename)\n ? options.filename\n : 'message.intl';\n const sourceMap = !!options.sourceMap;\n // prettier-ignore\n const breakLineCode = options.breakLineCode != null\n ? options.breakLineCode\n : mode === 'arrow'\n ? ';'\n : '\\n';\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\n const helpers = ast.helpers || [];\n const generator = createCodeGenerator(ast, {\n mode,\n filename,\n sourceMap,\n breakLineCode,\n needIndent\n });\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\n generator.indent(needIndent);\n if (helpers.length > 0) {\n generator.push(`const { ${join(helpers.map(s => `${s}: _${s}`), ', ')} } = ctx`);\n generator.newline();\n }\n generator.push(`return `);\n generateNode(generator, ast);\n generator.deindent(needIndent);\n generator.push(`}`);\n delete ast.helpers;\n const { code, map } = generator.context();\n return {\n ast,\n code,\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\n };\n};\n\nfunction baseCompile(source, options = {}) {\n const assignedOptions = assign({}, options);\n const jit = !!assignedOptions.jit;\n const enalbeMinify = !!assignedOptions.minify;\n const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;\n // parse source codes\n const parser = createParser(assignedOptions);\n const ast = parser.parse(source);\n if (!jit) {\n // transform ASTs\n transform(ast, assignedOptions);\n // generate javascript codes\n return generate(ast, assignedOptions);\n }\n else {\n // optimize ASTs\n enambeOptimize && optimize(ast);\n // minimize ASTs\n enalbeMinify && minify(ast);\n // In JIT mode, no ast transform, no code generation.\n return { ast, code: '' };\n }\n}\n\nexport { COMPILE_ERROR_CODES_EXTEND_POINT, CompileErrorCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };\n","/*!\n * core-base v11.1.2\n * (c) 2025 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, hasOwn, isNumber, create, isObject, isString, isBoolean, warn, format as format$1, isFunction, isPromise, isArray, isPlainObject, assign, isRegExp, warnOnce, isEmptyObject, isDate, join, toDisplayString, escapeHtml, inBrowser, mark, measure, generateCodeFrame, generateFormatCacheKey } from '@intlify/shared';\nimport { detectHtmlTag, defaultOnError, baseCompile as baseCompile$1, COMPILE_ERROR_CODES_EXTEND_POINT, createCompileError } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\n\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n }\n if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n }\n}\n\nfunction format(ast) {\n const msg = (ctx) => formatParts(ctx, ast);\n return msg;\n}\nfunction formatParts(ctx, ast) {\n const body = resolveBody(ast);\n if (body == null) {\n throw createUnhandleNodeError(0 /* NodeTypes.Resource */);\n }\n const type = resolveType(body);\n if (type === 1 /* NodeTypes.Plural */) {\n const plural = body;\n const cases = resolveCases(plural);\n return ctx.plural(cases.reduce((messages, c) => [\n ...messages,\n formatMessageParts(ctx, c)\n ], []));\n }\n else {\n return formatMessageParts(ctx, body);\n }\n}\nconst PROPS_BODY = ['b', 'body'];\nfunction resolveBody(node) {\n return resolveProps(node, PROPS_BODY);\n}\nconst PROPS_CASES = ['c', 'cases'];\nfunction resolveCases(node) {\n return resolveProps(node, PROPS_CASES, []);\n}\nfunction formatMessageParts(ctx, node) {\n const static_ = resolveStatic(node);\n if (static_ != null) {\n return ctx.type === 'text'\n ? static_\n : ctx.normalize([static_]);\n }\n else {\n const messages = resolveItems(node).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []);\n return ctx.normalize(messages);\n }\n}\nconst PROPS_STATIC = ['s', 'static'];\nfunction resolveStatic(node) {\n return resolveProps(node, PROPS_STATIC);\n}\nconst PROPS_ITEMS = ['i', 'items'];\nfunction resolveItems(node) {\n return resolveProps(node, PROPS_ITEMS, []);\n}\nfunction formatMessagePart(ctx, node) {\n const type = resolveType(node);\n switch (type) {\n case 3 /* NodeTypes.Text */: {\n return resolveValue$1(node, type);\n }\n case 9 /* NodeTypes.Literal */: {\n return resolveValue$1(node, type);\n }\n case 4 /* NodeTypes.Named */: {\n const named = node;\n if (hasOwn(named, 'k') && named.k) {\n return ctx.interpolate(ctx.named(named.k));\n }\n if (hasOwn(named, 'key') && named.key) {\n return ctx.interpolate(ctx.named(named.key));\n }\n throw createUnhandleNodeError(type);\n }\n case 5 /* NodeTypes.List */: {\n const list = node;\n if (hasOwn(list, 'i') && isNumber(list.i)) {\n return ctx.interpolate(ctx.list(list.i));\n }\n if (hasOwn(list, 'index') && isNumber(list.index)) {\n return ctx.interpolate(ctx.list(list.index));\n }\n throw createUnhandleNodeError(type);\n }\n case 6 /* NodeTypes.Linked */: {\n const linked = node;\n const modifier = resolveLinkedModifier(linked);\n const key = resolveLinkedKey(linked);\n return ctx.linked(formatMessagePart(ctx, key), modifier ? formatMessagePart(ctx, modifier) : undefined, ctx.type);\n }\n case 7 /* NodeTypes.LinkedKey */: {\n return resolveValue$1(node, type);\n }\n case 8 /* NodeTypes.LinkedModifier */: {\n return resolveValue$1(node, type);\n }\n default:\n throw new Error(`unhandled node on format message part: ${type}`);\n }\n}\nconst PROPS_TYPE = ['t', 'type'];\nfunction resolveType(node) {\n return resolveProps(node, PROPS_TYPE);\n}\nconst PROPS_VALUE = ['v', 'value'];\nfunction resolveValue$1(node, type) {\n const resolved = resolveProps(node, PROPS_VALUE);\n if (resolved) {\n return resolved;\n }\n else {\n throw createUnhandleNodeError(type);\n }\n}\nconst PROPS_MODIFIER = ['m', 'modifier'];\nfunction resolveLinkedModifier(node) {\n return resolveProps(node, PROPS_MODIFIER);\n}\nconst PROPS_KEY = ['k', 'key'];\nfunction resolveLinkedKey(node) {\n const resolved = resolveProps(node, PROPS_KEY);\n if (resolved) {\n return resolved;\n }\n else {\n throw createUnhandleNodeError(6 /* NodeTypes.Linked */);\n }\n}\nfunction resolveProps(node, props, defaultValue) {\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (hasOwn(node, prop) && node[prop] != null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return node[prop];\n }\n }\n return defaultValue;\n}\nfunction createUnhandleNodeError(type) {\n return new Error(`unhandled node type: ${type}`);\n}\n\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\nfunction checkHtmlMessage(source, warnHtmlMessage) {\n if (warnHtmlMessage && detectHtmlTag(source)) {\n warn(format$1(WARN_MESSAGE, { source }));\n }\n}\nconst defaultOnCacheKey = (message) => message;\nlet compileCache = create();\nfunction clearCompileCache() {\n compileCache = create();\n}\nfunction isMessageAST(val) {\n return (isObject(val) &&\n resolveType(val) === 0 &&\n (hasOwn(val, 'b') || hasOwn(val, 'body')));\n}\nfunction baseCompile(message, options = {}) {\n // error detecting on compile\n let detectError = false;\n const onError = options.onError || defaultOnError;\n options.onError = (err) => {\n detectError = true;\n onError(err);\n };\n // compile with mesasge-compiler\n return { ...baseCompile$1(message, options), detectError };\n}\n/* #__NO_SIDE_EFFECTS__ */\nfunction compile(message, context) {\n if ((!__INTLIFY_DROP_MESSAGE_COMPILER__) &&\n isString(message)) {\n // check HTML message\n const warnHtmlMessage = isBoolean(context.warnHtmlMessage)\n ? context.warnHtmlMessage\n : true;\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(message, warnHtmlMessage);\n // check caches\n const onCacheKey = context.onCacheKey || defaultOnCacheKey;\n const cacheKey = onCacheKey(message);\n const cached = compileCache[cacheKey];\n if (cached) {\n return cached;\n }\n // compile with JIT mode\n const { ast, detectError } = baseCompile(message, {\n ...context,\n location: (process.env.NODE_ENV !== 'production'),\n jit: true\n });\n // compose message function from AST\n const msg = format(ast);\n // if occurred compile error, don't cache\n return !detectError\n ? (compileCache[cacheKey] = msg)\n : msg;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && !isMessageAST(message)) {\n warn(`the message that is resolve with key '${context.key}' is not supported for jit compilation`);\n return (() => message);\n }\n // AST case (passed from bundler)\n const cacheKey = message.cacheKey;\n if (cacheKey) {\n const cached = compileCache[cacheKey];\n if (cached) {\n return cached;\n }\n // compose message function from message (AST)\n return (compileCache[cacheKey] =\n format(message));\n }\n else {\n return format(message);\n }\n }\n}\n\nlet devtools = null;\nfunction setDevToolsHook(hook) {\n devtools = hook;\n}\nfunction getDevToolsHook() {\n return devtools;\n}\nfunction initI18nDevTools(i18n, version, meta) {\n // TODO: queue if devtools is undefined\n devtools &&\n devtools.emit('i18n:init', {\n timestamp: Date.now(),\n i18n,\n version,\n meta\n });\n}\nconst translateDevTools = \n/* #__PURE__*/ createDevToolsHook('function:translate');\nfunction createDevToolsHook(hook) {\n return (payloads) => devtools && devtools.emit(hook, payloads);\n}\n\nconst CoreErrorCodes = {\n INVALID_ARGUMENT: COMPILE_ERROR_CODES_EXTEND_POINT, // 17\n INVALID_DATE_ARGUMENT: 18,\n INVALID_ISO_DATE_ARGUMENT: 19,\n NOT_SUPPORT_NON_STRING_MESSAGE: 20,\n NOT_SUPPORT_LOCALE_PROMISE_VALUE: 21,\n NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: 22,\n NOT_SUPPORT_LOCALE_TYPE: 23\n};\nconst CORE_ERROR_CODES_EXTEND_POINT = 24;\nfunction createCoreError(code) {\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\n}\n/** @internal */\nconst errorMessages = {\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\n 'Make sure your Date represents a valid date.',\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string',\n [CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: 'Not support non-string message',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE]: 'cannot support promise value',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION]: 'cannot support async function',\n [CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE]: 'cannot support locale type'\n};\n\n/** @internal */\nfunction getLocale(context, options) {\n return options.locale != null\n ? resolveLocale(options.locale)\n : resolveLocale(context.locale);\n}\nlet _resolveLocale;\n/** @internal */\nfunction resolveLocale(locale) {\n if (isString(locale)) {\n return locale;\n }\n else {\n if (isFunction(locale)) {\n if (locale.resolvedOnce && _resolveLocale != null) {\n return _resolveLocale;\n }\n else if (locale.constructor.name === 'Function') {\n const resolve = locale();\n if (isPromise(resolve)) {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE);\n }\n return (_resolveLocale = resolve);\n }\n else {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION);\n }\n }\n else {\n throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE);\n }\n }\n}\n/**\n * Fallback with simple implemenation\n *\n * @remarks\n * A fallback locale function implemented with a simple fallback algorithm.\n *\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithSimple(ctx, fallback, start) {\n // prettier-ignore\n return [...new Set([\n start,\n ...(isArray(fallback)\n ? fallback\n : isObject(fallback)\n ? Object.keys(fallback)\n : isString(fallback)\n ? [fallback]\n : [start])\n ])];\n}\n/**\n * Fallback with locale chain\n *\n * @remarks\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\n *\n * @param ctx - A {@link CoreContext | context}\n * @param fallback - A {@link FallbackLocale | fallback locale}\n * @param start - A starting {@link Locale | locale}\n *\n * @returns Fallback locales\n *\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\n *\n * @VueI18nGeneral\n */\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\n const context = ctx;\n if (!context.__localeChainCache) {\n context.__localeChainCache = new Map();\n }\n let chain = context.__localeChainCache.get(startLocale);\n if (!chain) {\n chain = [];\n // first block defined by start\n let block = [start];\n // while any intervening block found\n while (isArray(block)) {\n block = appendBlockToChain(chain, block, fallback);\n }\n // prettier-ignore\n // last block defined by default\n const defaults = isArray(fallback) || !isPlainObject(fallback)\n ? fallback\n : fallback['default']\n ? fallback['default']\n : null;\n // convert defaults to array\n block = isString(defaults) ? [defaults] : defaults;\n if (isArray(block)) {\n appendBlockToChain(chain, block, false);\n }\n context.__localeChainCache.set(startLocale, chain);\n }\n return chain;\n}\nfunction appendBlockToChain(chain, block, blocks) {\n let follow = true;\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\n const locale = block[i];\n if (isString(locale)) {\n follow = appendLocaleToChain(chain, block[i], blocks);\n }\n }\n return follow;\n}\nfunction appendLocaleToChain(chain, locale, blocks) {\n let follow;\n const tokens = locale.split('-');\n do {\n const target = tokens.join('-');\n follow = appendItemToChain(chain, target, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && follow === true);\n return follow;\n}\nfunction appendItemToChain(chain, target, blocks) {\n let follow = false;\n if (!chain.includes(target)) {\n follow = true;\n if (target) {\n follow = target[target.length - 1] !== '!';\n const locale = target.replace(/!/g, '');\n chain.push(locale);\n if ((isArray(blocks) || isPlainObject(blocks)) &&\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n follow = blocks[locale];\n }\n }\n }\n return follow;\n}\n\nconst pathStateMachine = [];\npathStateMachine[0 /* States.BEFORE_PATH */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [0 /* States.BEFORE_PATH */],\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[1 /* States.IN_PATH */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */],\n [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */]\n};\npathStateMachine[2 /* States.BEFORE_IDENT */] = {\n [\"w\" /* PathCharTypes.WORKSPACE */]: [2 /* States.BEFORE_IDENT */],\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */]\n};\npathStateMachine[3 /* States.IN_IDENT */] = {\n [\"i\" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"0\" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */],\n [\"w\" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */, 1 /* Actions.PUSH */],\n [\".\" /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */, 1 /* Actions.PUSH */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */, 1 /* Actions.PUSH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */, 1 /* Actions.PUSH */]\n};\npathStateMachine[4 /* States.IN_SUB_PATH */] = {\n [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */],\n [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */],\n [\"[\" /* PathCharTypes.LEFT_BRACKET */]: [\n 4 /* States.IN_SUB_PATH */,\n 2 /* Actions.INC_SUB_PATH_DEPTH */\n ],\n [\"]\" /* PathCharTypes.RIGHT_BRACKET */]: [1 /* States.IN_PATH */, 3 /* Actions.PUSH_SUB_PATH */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */]\n};\npathStateMachine[5 /* States.IN_SINGLE_QUOTE */] = {\n [\"'\" /* PathCharTypes.SINGLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */]\n};\npathStateMachine[6 /* States.IN_DOUBLE_QUOTE */] = {\n [\"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */],\n [\"o\" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */,\n [\"l\" /* PathCharTypes.ELSE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */]\n};\n/**\n * Check if an expression is a literal value.\n */\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral(exp) {\n return literalValueRE.test(exp);\n}\n/**\n * Strip quotes from a string\n */\nfunction stripQuotes(str) {\n const a = str.charCodeAt(0);\n const b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\n}\n/**\n * Determine the type of a character in a keypath.\n */\nfunction getPathCharType(ch) {\n if (ch === undefined || ch === null) {\n return \"o\" /* PathCharTypes.END_OF_FAIL */;\n }\n const code = ch.charCodeAt(0);\n switch (code) {\n case 0x5b: // [\n case 0x5d: // ]\n case 0x2e: // .\n case 0x22: // \"\n case 0x27: // '\n return ch;\n case 0x5f: // _\n case 0x24: // $\n case 0x2d: // -\n return \"i\" /* PathCharTypes.IDENT */;\n case 0x09: // Tab (HT)\n case 0x0a: // Newline (LF)\n case 0x0d: // Return (CR)\n case 0xa0: // No-break space (NBSP)\n case 0xfeff: // Byte Order Mark (BOM)\n case 0x2028: // Line Separator (LS)\n case 0x2029: // Paragraph Separator (PS)\n return \"w\" /* PathCharTypes.WORKSPACE */;\n }\n return \"i\" /* PathCharTypes.IDENT */;\n}\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\nfunction formatSubPath(path) {\n const trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\n return false;\n }\n return isLiteral(trimmed)\n ? stripQuotes(trimmed)\n : \"*\" /* PathCharTypes.ASTARISK */ + trimmed;\n}\n/**\n * Parse a string path into an array of segments\n */\nfunction parse(path) {\n const keys = [];\n let index = -1;\n let mode = 0 /* States.BEFORE_PATH */;\n let subPathDepth = 0;\n let c;\n let key; // eslint-disable-line\n let newChar;\n let type;\n let transition;\n let action;\n let typeMap;\n const actions = [];\n actions[0 /* Actions.APPEND */] = () => {\n if (key === undefined) {\n key = newChar;\n }\n else {\n key += newChar;\n }\n };\n actions[1 /* Actions.PUSH */] = () => {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n actions[2 /* Actions.INC_SUB_PATH_DEPTH */] = () => {\n actions[0 /* Actions.APPEND */]();\n subPathDepth++;\n };\n actions[3 /* Actions.PUSH_SUB_PATH */] = () => {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = 4 /* States.IN_SUB_PATH */;\n actions[0 /* Actions.APPEND */]();\n }\n else {\n subPathDepth = 0;\n if (key === undefined) {\n return false;\n }\n key = formatSubPath(key);\n if (key === false) {\n return false;\n }\n else {\n actions[1 /* Actions.PUSH */]();\n }\n }\n };\n function maybeUnescapeQuote() {\n const nextChar = path[index + 1];\n if ((mode === 5 /* States.IN_SINGLE_QUOTE */ &&\n nextChar === \"'\" /* PathCharTypes.SINGLE_QUOTE */) ||\n (mode === 6 /* States.IN_DOUBLE_QUOTE */ &&\n nextChar === \"\\\"\" /* PathCharTypes.DOUBLE_QUOTE */)) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[0 /* Actions.APPEND */]();\n return true;\n }\n }\n while (mode !== null) {\n index++;\n c = path[index];\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue;\n }\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap[\"l\" /* PathCharTypes.ELSE */] || 8 /* States.ERROR */;\n // check parse error\n if (transition === 8 /* States.ERROR */) {\n return;\n }\n mode = transition[0];\n if (transition[1] !== undefined) {\n action = actions[transition[1]];\n if (action) {\n newChar = c;\n if (action() === false) {\n return;\n }\n }\n }\n // check parse finish\n if (mode === 7 /* States.AFTER_PATH */) {\n return keys;\n }\n }\n}\n// path token cache\nconst cache = new Map();\n/**\n * key-value message resolver\n *\n * @remarks\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveWithKeyValue(obj, path) {\n return isObject(obj) ? obj[path] : null;\n}\n/**\n * message resolver\n *\n * @remarks\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\n *\n * @param obj - A target object to be resolved with path\n * @param path - A {@link Path | path} to resolve the value of message\n *\n * @returns A resolved {@link PathValue | path value}\n *\n * @VueI18nGeneral\n */\nfunction resolveValue(obj, path) {\n // check object\n if (!isObject(obj)) {\n return null;\n }\n // parse path\n let hit = cache.get(path);\n if (!hit) {\n hit = parse(path);\n if (hit) {\n cache.set(path, hit);\n }\n }\n // check hit\n if (!hit) {\n return null;\n }\n // resolve path value\n const len = hit.length;\n let last = obj;\n let i = 0;\n while (i < len) {\n const val = last[hit[i]];\n if (val === undefined) {\n return null;\n }\n if (isFunction(last)) {\n return null;\n }\n last = val;\n i++;\n }\n return last;\n}\n\nconst CoreWarnCodes = {\n NOT_FOUND_KEY: 1,\n FALLBACK_TO_TRANSLATE: 2,\n CANNOT_FORMAT_NUMBER: 3,\n FALLBACK_TO_NUMBER_FORMAT: 4,\n CANNOT_FORMAT_DATE: 5,\n FALLBACK_TO_DATE_FORMAT: 6,\n EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: 7\n};\nconst CORE_WARN_CODES_EXTEND_POINT = 8;\n/** @internal */\nconst warnMessages = {\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`,\n [CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.`\n};\nfunction getWarnMessage(code, ...args) {\n return format$1(warnMessages[code], ...args);\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Intlify core-base version\n * @internal\n */\nconst VERSION = '11.1.2';\nconst NOT_REOSLVED = -1;\nconst DEFAULT_LOCALE = 'en-US';\nconst MISSING_RESOLVE_VALUE = '';\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\nfunction getDefaultLinkedModifiers() {\n return {\n upper: (val, type) => {\n // prettier-ignore\n return type === 'text' && isString(val)\n ? val.toUpperCase()\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n ? val.children.toUpperCase()\n : val;\n },\n lower: (val, type) => {\n // prettier-ignore\n return type === 'text' && isString(val)\n ? val.toLowerCase()\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n ? val.children.toLowerCase()\n : val;\n },\n capitalize: (val, type) => {\n // prettier-ignore\n return (type === 'text' && isString(val)\n ? capitalize(val)\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\n ? capitalize(val.children)\n : val);\n }\n };\n}\nlet _compiler;\nfunction registerMessageCompiler(compiler) {\n _compiler = compiler;\n}\nlet _resolver;\n/**\n * Register the message resolver\n *\n * @param resolver - A {@link MessageResolver} function\n *\n * @VueI18nGeneral\n */\nfunction registerMessageResolver(resolver) {\n _resolver = resolver;\n}\nlet _fallbacker;\n/**\n * Register the locale fallbacker\n *\n * @param fallbacker - A {@link LocaleFallbacker} function\n *\n * @VueI18nGeneral\n */\nfunction registerLocaleFallbacker(fallbacker) {\n _fallbacker = fallbacker;\n}\n// Additional Meta for Intlify DevTools\nlet _additionalMeta = null;\n/* #__NO_SIDE_EFFECTS__ */\nconst setAdditionalMeta = (meta) => {\n _additionalMeta = meta;\n};\n/* #__NO_SIDE_EFFECTS__ */\nconst getAdditionalMeta = () => _additionalMeta;\nlet _fallbackContext = null;\nconst setFallbackContext = (context) => {\n _fallbackContext = context;\n};\nconst getFallbackContext = () => _fallbackContext;\n// ID for CoreContext\nlet _cid = 0;\nfunction createCoreContext(options = {}) {\n // setup options\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\n const version = isString(options.version) ? options.version : VERSION;\n const locale = isString(options.locale) || isFunction(options.locale)\n ? options.locale\n : DEFAULT_LOCALE;\n const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale;\n const fallbackLocale = isArray(options.fallbackLocale) ||\n isPlainObject(options.fallbackLocale) ||\n isString(options.fallbackLocale) ||\n options.fallbackLocale === false\n ? options.fallbackLocale\n : _locale;\n const messages = isPlainObject(options.messages)\n ? options.messages\n : createResources(_locale);\n const datetimeFormats = isPlainObject(options.datetimeFormats)\n ? options.datetimeFormats\n : createResources(_locale)\n ;\n const numberFormats = isPlainObject(options.numberFormats)\n ? options.numberFormats\n : createResources(_locale)\n ;\n const modifiers = assign(create(), options.modifiers, getDefaultLinkedModifiers());\n const pluralRules = options.pluralRules || create();\n const missing = isFunction(options.missing) ? options.missing : null;\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n ? options.missingWarn\n : true;\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n ? options.fallbackWarn\n : true;\n const fallbackFormat = !!options.fallbackFormat;\n const unresolving = !!options.unresolving;\n const postTranslation = isFunction(options.postTranslation)\n ? options.postTranslation\n : null;\n const processor = isPlainObject(options.processor) ? options.processor : null;\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\n ? options.warnHtmlMessage\n : true;\n const escapeParameter = !!options.escapeParameter;\n const messageCompiler = isFunction(options.messageCompiler)\n ? options.messageCompiler\n : _compiler;\n if ((process.env.NODE_ENV !== 'production') &&\n !false &&\n !false &&\n isFunction(options.messageCompiler)) {\n warnOnce(getWarnMessage(CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER));\n }\n const messageResolver = isFunction(options.messageResolver)\n ? options.messageResolver\n : _resolver || resolveWithKeyValue;\n const localeFallbacker = isFunction(options.localeFallbacker)\n ? options.localeFallbacker\n : _fallbacker || fallbackWithSimple;\n const fallbackContext = isObject(options.fallbackContext)\n ? options.fallbackContext\n : undefined;\n // setup internal options\n const internalOptions = options;\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\n ? internalOptions.__datetimeFormatters\n : new Map()\n ;\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\n ? internalOptions.__numberFormatters\n : new Map()\n ;\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\n _cid++;\n const context = {\n version,\n cid: _cid,\n locale,\n fallbackLocale,\n messages,\n modifiers,\n pluralRules,\n missing,\n missingWarn,\n fallbackWarn,\n fallbackFormat,\n unresolving,\n postTranslation,\n processor,\n warnHtmlMessage,\n escapeParameter,\n messageCompiler,\n messageResolver,\n localeFallbacker,\n fallbackContext,\n onWarn,\n __meta\n };\n {\n context.datetimeFormats = datetimeFormats;\n context.numberFormats = numberFormats;\n context.__datetimeFormatters = __datetimeFormatters;\n context.__numberFormatters = __numberFormatters;\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n context.__v_emitter =\n internalOptions.__v_emitter != null\n ? internalOptions.__v_emitter\n : undefined;\n }\n // NOTE: experimental !!\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n initI18nDevTools(context, version, __meta);\n }\n return context;\n}\nconst createResources = (locale) => ({ [locale]: create() });\n/** @internal */\nfunction isTranslateFallbackWarn(fallback, key) {\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\n}\n/** @internal */\nfunction isTranslateMissingWarn(missing, key) {\n return missing instanceof RegExp ? missing.test(key) : missing;\n}\n/** @internal */\nfunction handleMissing(context, key, locale, missingWarn, type) {\n const { missing, onWarn } = context;\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit('missing', {\n locale,\n key,\n type,\n groupId: `${type}:${key}`\n });\n }\n }\n if (missing !== null) {\n const ret = missing(context, locale, key, type);\n return isString(ret) ? ret : key;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\n }\n return key;\n }\n}\n/** @internal */\nfunction updateFallbackLocale(ctx, locale, fallback) {\n const context = ctx;\n context.__localeChainCache = new Map();\n ctx.localeFallbacker(ctx, fallback, locale);\n}\n/** @internal */\nfunction isAlmostSameLocale(locale, compareLocale) {\n if (locale === compareLocale)\n return false;\n return locale.split('-')[0] === compareLocale.split('-')[0];\n}\n/** @internal */\nfunction isImplicitFallback(targetLocale, locales) {\n const index = locales.indexOf(targetLocale);\n if (index === -1) {\n return false;\n }\n for (let i = index + 1; i < locales.length; i++) {\n if (isAlmostSameLocale(targetLocale, locales[i])) {\n return true;\n }\n }\n return false;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst intlDefined = typeof Intl !== 'undefined';\nconst Availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n};\n\n// implementation of `datetime` function\nfunction datetime(context, ...args) {\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n const { __datetimeFormatters } = context;\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\n return MISSING_RESOLVE_VALUE;\n }\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\n const missingWarn = isBoolean(options.missingWarn)\n ? options.missingWarn\n : context.missingWarn;\n const fallbackWarn = isBoolean(options.fallbackWarn)\n ? options.fallbackWarn\n : context.fallbackWarn;\n const part = !!options.part;\n const locale = getLocale(context, options);\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n fallbackLocale, locale);\n if (!isString(key) || key === '') {\n return new Intl.DateTimeFormat(locale, overrides).format(value);\n }\n // resolve format\n let datetimeFormat = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'datetime format';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ((process.env.NODE_ENV !== 'production') &&\n locale !== targetLocale &&\n isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit('fallback', {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n datetimeFormat =\n datetimeFormats[targetLocale] || {};\n format = datetimeFormat[key];\n if (isPlainObject(format))\n break;\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n from = to;\n }\n // checking format and target locale\n if (!isPlainObject(format) || !isString(targetLocale)) {\n return unresolving ? NOT_REOSLVED : key;\n }\n let id = `${targetLocale}__${key}`;\n if (!isEmptyObject(overrides)) {\n id = `${id}__${JSON.stringify(overrides)}`;\n }\n let formatter = __datetimeFormatters.get(id);\n if (!formatter) {\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\n __datetimeFormatters.set(id, formatter);\n }\n return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\n 'localeMatcher',\n 'weekday',\n 'era',\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'timeZoneName',\n 'formatMatcher',\n 'hour12',\n 'timeZone',\n 'dateStyle',\n 'timeStyle',\n 'calendar',\n 'dayPeriod',\n 'numberingSystem',\n 'hourCycle',\n 'fractionalSecondDigits'\n];\n/** @internal */\nfunction parseDateTimeArgs(...args) {\n const [arg1, arg2, arg3, arg4] = args;\n const options = create();\n let overrides = create();\n let value;\n if (isString(arg1)) {\n // Only allow ISO strings - other date formats are often supported,\n // but may cause different results in different browsers.\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\n if (!matches) {\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n }\n // Some browsers can not parse the iso datetime separated by space,\n // this is a compromise solution by replace the 'T'/' ' with 'T'\n const dateTime = matches[3]\n ? matches[3].trim().startsWith('T')\n ? `${matches[1].trim()}${matches[3].trim()}`\n : `${matches[1].trim()}T${matches[3].trim()}`\n : matches[1].trim();\n value = new Date(dateTime);\n try {\n // This will fail if the date is not valid\n value.toISOString();\n }\n catch {\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\n }\n }\n else if (isDate(arg1)) {\n if (isNaN(arg1.getTime())) {\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\n }\n value = arg1;\n }\n else if (isNumber(arg1)) {\n value = arg1;\n }\n else {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n if (isString(arg2)) {\n options.key = arg2;\n }\n else if (isPlainObject(arg2)) {\n Object.keys(arg2).forEach(key => {\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\n overrides[key] = arg2[key];\n }\n else {\n options[key] = arg2[key];\n }\n });\n }\n if (isString(arg3)) {\n options.locale = arg3;\n }\n else if (isPlainObject(arg3)) {\n overrides = arg3;\n }\n if (isPlainObject(arg4)) {\n overrides = arg4;\n }\n return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearDateTimeFormat(ctx, locale, format) {\n const context = ctx;\n for (const key in format) {\n const id = `${locale}__${key}`;\n if (!context.__datetimeFormatters.has(id)) {\n continue;\n }\n context.__datetimeFormatters.delete(id);\n }\n}\n\n// implementation of `number` function\nfunction number(context, ...args) {\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\n const { __numberFormatters } = context;\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\n return MISSING_RESOLVE_VALUE;\n }\n const [key, value, options, overrides] = parseNumberArgs(...args);\n const missingWarn = isBoolean(options.missingWarn)\n ? options.missingWarn\n : context.missingWarn;\n const fallbackWarn = isBoolean(options.fallbackWarn)\n ? options.fallbackWarn\n : context.fallbackWarn;\n const part = !!options.part;\n const locale = getLocale(context, options);\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n fallbackLocale, locale);\n if (!isString(key) || key === '') {\n return new Intl.NumberFormat(locale, overrides).format(value);\n }\n // resolve format\n let numberFormat = {};\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'number format';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ((process.env.NODE_ENV !== 'production') &&\n locale !== targetLocale &&\n isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit('fallback', {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n numberFormat =\n numberFormats[targetLocale] || {};\n format = numberFormat[key];\n if (isPlainObject(format))\n break;\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\n from = to;\n }\n // checking format and target locale\n if (!isPlainObject(format) || !isString(targetLocale)) {\n return unresolving ? NOT_REOSLVED : key;\n }\n let id = `${targetLocale}__${key}`;\n if (!isEmptyObject(overrides)) {\n id = `${id}__${JSON.stringify(overrides)}`;\n }\n let formatter = __numberFormatters.get(id);\n if (!formatter) {\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\n __numberFormatters.set(id, formatter);\n }\n return !part ? formatter.format(value) : formatter.formatToParts(value);\n}\n/** @internal */\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\n 'localeMatcher',\n 'style',\n 'currency',\n 'currencyDisplay',\n 'currencySign',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits',\n 'compactDisplay',\n 'notation',\n 'signDisplay',\n 'unit',\n 'unitDisplay',\n 'roundingMode',\n 'roundingPriority',\n 'roundingIncrement',\n 'trailingZeroDisplay'\n];\n/** @internal */\nfunction parseNumberArgs(...args) {\n const [arg1, arg2, arg3, arg4] = args;\n const options = create();\n let overrides = create();\n if (!isNumber(arg1)) {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n const value = arg1;\n if (isString(arg2)) {\n options.key = arg2;\n }\n else if (isPlainObject(arg2)) {\n Object.keys(arg2).forEach(key => {\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\n overrides[key] = arg2[key];\n }\n else {\n options[key] = arg2[key];\n }\n });\n }\n if (isString(arg3)) {\n options.locale = arg3;\n }\n else if (isPlainObject(arg3)) {\n overrides = arg3;\n }\n if (isPlainObject(arg4)) {\n overrides = arg4;\n }\n return [options.key || '', value, options, overrides];\n}\n/** @internal */\nfunction clearNumberFormat(ctx, locale, format) {\n const context = ctx;\n for (const key in format) {\n const id = `${locale}__${key}`;\n if (!context.__numberFormatters.has(id)) {\n continue;\n }\n context.__numberFormatters.delete(id);\n }\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : join(values);\nconst DEFAULT_INTERPOLATE = toDisplayString;\nfunction pluralDefault(choice, choicesLength) {\n choice = Math.abs(choice);\n if (choicesLength === 2) {\n // prettier-ignore\n return choice\n ? choice > 1\n ? 1\n : 0\n : 1;\n }\n return choice ? Math.min(choice, 2) : 0;\n}\nfunction getPluralIndex(options) {\n // prettier-ignore\n const index = isNumber(options.pluralIndex)\n ? options.pluralIndex\n : -1;\n // prettier-ignore\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\n ? isNumber(options.named.count)\n ? options.named.count\n : isNumber(options.named.n)\n ? options.named.n\n : index\n : index;\n}\nfunction normalizeNamed(pluralIndex, props) {\n if (!props.count) {\n props.count = pluralIndex;\n }\n if (!props.n) {\n props.n = pluralIndex;\n }\n}\nfunction createMessageContext(options = {}) {\n const locale = options.locale;\n const pluralIndex = getPluralIndex(options);\n const pluralRule = isObject(options.pluralRules) &&\n isString(locale) &&\n isFunction(options.pluralRules[locale])\n ? options.pluralRules[locale]\n : pluralDefault;\n const orgPluralRule = isObject(options.pluralRules) &&\n isString(locale) &&\n isFunction(options.pluralRules[locale])\n ? pluralDefault\n : undefined;\n const plural = (messages) => {\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\n };\n const _list = options.list || [];\n const list = (index) => _list[index];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _named = options.named || create();\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\n const named = (key) => _named[key];\n function message(key, useLinked) {\n // prettier-ignore\n const msg = isFunction(options.messages)\n ? options.messages(key, !!useLinked)\n : isObject(options.messages)\n ? options.messages[key]\n : false;\n return !msg\n ? options.parent\n ? options.parent.message(key) // resolve from parent messages\n : DEFAULT_MESSAGE\n : msg;\n }\n const _modifier = (name) => options.modifiers\n ? options.modifiers[name]\n : DEFAULT_MODIFIER;\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\n ? options.processor.normalize\n : DEFAULT_NORMALIZE;\n const interpolate = isPlainObject(options.processor) &&\n isFunction(options.processor.interpolate)\n ? options.processor.interpolate\n : DEFAULT_INTERPOLATE;\n const type = isPlainObject(options.processor) && isString(options.processor.type)\n ? options.processor.type\n : DEFAULT_MESSAGE_DATA_TYPE;\n const linked = (key, ...args) => {\n const [arg1, arg2] = args;\n let type = 'text';\n let modifier = '';\n if (args.length === 1) {\n if (isObject(arg1)) {\n modifier = arg1.modifier || modifier;\n type = arg1.type || type;\n }\n else if (isString(arg1)) {\n modifier = arg1 || modifier;\n }\n }\n else if (args.length === 2) {\n if (isString(arg1)) {\n modifier = arg1 || modifier;\n }\n if (isString(arg2)) {\n type = arg2 || type;\n }\n }\n const ret = message(key, true)(ctx);\n const msg = \n // The message in vnode resolved with linked are returned as an array by processor.nomalize\n type === 'vnode' && isArray(ret) && modifier\n ? ret[0]\n : ret;\n return modifier ? _modifier(modifier)(msg, type) : msg;\n };\n const ctx = {\n [\"list\" /* HelperNameMap.LIST */]: list,\n [\"named\" /* HelperNameMap.NAMED */]: named,\n [\"plural\" /* HelperNameMap.PLURAL */]: plural,\n [\"linked\" /* HelperNameMap.LINKED */]: linked,\n [\"message\" /* HelperNameMap.MESSAGE */]: message,\n [\"type\" /* HelperNameMap.TYPE */]: type,\n [\"interpolate\" /* HelperNameMap.INTERPOLATE */]: interpolate,\n [\"normalize\" /* HelperNameMap.NORMALIZE */]: normalize,\n [\"values\" /* HelperNameMap.VALUES */]: assign(create(), _list, _named)\n };\n return ctx;\n}\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\nconst isMessageFunction = (val) => isFunction(val);\n// implementation of `translate` function\nfunction translate(context, ...args) {\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\n const [key, options] = parseTranslateArgs(...args);\n const missingWarn = isBoolean(options.missingWarn)\n ? options.missingWarn\n : context.missingWarn;\n const fallbackWarn = isBoolean(options.fallbackWarn)\n ? options.fallbackWarn\n : context.fallbackWarn;\n const escapeParameter = isBoolean(options.escapeParameter)\n ? options.escapeParameter\n : context.escapeParameter;\n const resolvedMessage = !!options.resolvedMessage;\n // prettier-ignore\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\n ? !isBoolean(options.default)\n ? options.default\n : (!messageCompiler ? () => key : key)\n : fallbackFormat // default by `fallbackFormat` option\n ? (!messageCompiler ? () => key : key)\n : null;\n const enableDefaultMsg = fallbackFormat ||\n (defaultMsgOrKey != null &&\n (isString(defaultMsgOrKey) || isFunction(defaultMsgOrKey)));\n const locale = getLocale(context, options);\n // escape params\n escapeParameter && escapeParams(options);\n // resolve message format\n // eslint-disable-next-line prefer-const\n let [formatScope, targetLocale, message] = !resolvedMessage\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\n : [\n key,\n locale,\n messages[locale] || create()\n ];\n // NOTE:\n // Fix to work around `ssrTransfrom` bug in Vite.\n // https://github.com/vitejs/vite/issues/4306\n // To get around this, use temporary variables.\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\n let format = formatScope;\n // if you use default message, set it as message format!\n let cacheBaseKey = key;\n if (!resolvedMessage &&\n !(isString(format) ||\n isMessageAST(format) ||\n isMessageFunction(format))) {\n if (enableDefaultMsg) {\n format = defaultMsgOrKey;\n cacheBaseKey = format;\n }\n }\n // checking message format and target locale\n if (!resolvedMessage &&\n (!(isString(format) ||\n isMessageAST(format) ||\n isMessageFunction(format)) ||\n !isString(targetLocale))) {\n return unresolving ? NOT_REOSLVED : key;\n }\n // TODO: refactor\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\n warn(`The message format compilation is not supported in this build. ` +\n `Because message compiler isn't included. ` +\n `You need to pre-compilation all message format. ` +\n `So translate function return '${key}'.`);\n return key;\n }\n // setup compile error detecting\n let occurred = false;\n const onError = () => {\n occurred = true;\n };\n // compile message format\n const msg = !isMessageFunction(format)\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError)\n : format;\n // if occurred compile error, return the message format\n if (occurred) {\n return format;\n }\n // evaluate message with context\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\n const msgContext = createMessageContext(ctxOptions);\n const messaged = evaluateMessage(context, msg, msgContext);\n // if use post translation option, proceed it with handler\n const ret = postTranslation\n ? postTranslation(messaged, key)\n : messaged;\n // NOTE: experimental !!\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n // prettier-ignore\n const payloads = {\n timestamp: Date.now(),\n key: isString(key)\n ? key\n : isMessageFunction(format)\n ? format.key\n : '',\n locale: targetLocale || (isMessageFunction(format)\n ? format.locale\n : ''),\n format: isString(format)\n ? format\n : isMessageFunction(format)\n ? format.source\n : '',\n message: ret\n };\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\n translateDevTools(payloads);\n }\n return ret;\n}\nfunction escapeParams(options) {\n if (isArray(options.list)) {\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\n }\n else if (isObject(options.named)) {\n Object.keys(options.named).forEach(key => {\n if (isString(options.named[key])) {\n options.named[key] = escapeHtml(options.named[key]);\n }\n });\n }\n}\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\n let message = create();\n let targetLocale;\n let format = null;\n let from = locale;\n let to = null;\n const type = 'translate';\n for (let i = 0; i < locales.length; i++) {\n targetLocale = to = locales[i];\n if ((process.env.NODE_ENV !== 'production') &&\n locale !== targetLocale &&\n !isAlmostSameLocale(locale, targetLocale) &&\n isTranslateFallbackWarn(fallbackWarn, key)) {\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\n key,\n target: targetLocale\n }));\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\n const emitter = context.__v_emitter;\n if (emitter) {\n emitter.emit('fallback', {\n type,\n key,\n from,\n to,\n groupId: `${type}:${key}`\n });\n }\n }\n message =\n messages[targetLocale] || create();\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-resolve-start';\n endTag = 'intlify-message-resolve-end';\n mark && mark(startTag);\n }\n if ((format = resolveValue(message, key)) === null) {\n // if null, resolve with object key path\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start && format) {\n emitter.emit('message-resolve', {\n type: 'message-resolve',\n key,\n message: format,\n time: end - start,\n groupId: `${type}:${key}`\n });\n }\n if (startTag && endTag && mark && measure) {\n mark(endTag);\n measure('intlify message resolve', startTag, endTag);\n }\n }\n if (isString(format) || isMessageAST(format) || isMessageFunction(format)) {\n break;\n }\n if (!isImplicitFallback(targetLocale, locales)) {\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\n key, targetLocale, missingWarn, type);\n if (missingRet !== key) {\n format = missingRet;\n }\n }\n from = to;\n }\n return [format, targetLocale, message];\n}\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) {\n const { messageCompiler, warnHtmlMessage } = context;\n if (isMessageFunction(format)) {\n const msg = format;\n msg.locale = msg.locale || targetLocale;\n msg.key = msg.key || key;\n return msg;\n }\n if (messageCompiler == null) {\n const msg = (() => format);\n msg.locale = targetLocale;\n msg.key = key;\n return msg;\n }\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-compilation-start';\n endTag = 'intlify-message-compilation-end';\n mark && mark(startTag);\n }\n const msg = messageCompiler(format, getCompileContext(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, onError));\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start) {\n emitter.emit('message-compilation', {\n type: 'message-compilation',\n message: format,\n time: end - start,\n groupId: `${'translate'}:${key}`\n });\n }\n if (startTag && endTag && mark && measure) {\n mark(endTag);\n measure('intlify message compilation', startTag, endTag);\n }\n }\n msg.locale = targetLocale;\n msg.key = key;\n msg.source = format;\n return msg;\n}\nfunction evaluateMessage(context, msg, msgCtx) {\n // for vue-devtools timeline event\n let start = null;\n let startTag;\n let endTag;\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n start = window.performance.now();\n startTag = 'intlify-message-evaluation-start';\n endTag = 'intlify-message-evaluation-end';\n mark && mark(startTag);\n }\n const messaged = msg(msgCtx);\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\n const end = window.performance.now();\n const emitter = context.__v_emitter;\n if (emitter && start) {\n emitter.emit('message-evaluation', {\n type: 'message-evaluation',\n value: messaged,\n time: end - start,\n groupId: `${'translate'}:${msg.key}`\n });\n }\n if (startTag && endTag && mark && measure) {\n mark(endTag);\n measure('intlify message evaluation', startTag, endTag);\n }\n }\n return messaged;\n}\n/** @internal */\nfunction parseTranslateArgs(...args) {\n const [arg1, arg2, arg3] = args;\n const options = create();\n if (!isString(arg1) &&\n !isNumber(arg1) &&\n !isMessageFunction(arg1) &&\n !isMessageAST(arg1)) {\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\n }\n // prettier-ignore\n const key = isNumber(arg1)\n ? String(arg1)\n : isMessageFunction(arg1)\n ? arg1\n : arg1;\n if (isNumber(arg2)) {\n options.plural = arg2;\n }\n else if (isString(arg2)) {\n options.default = arg2;\n }\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\n options.named = arg2;\n }\n else if (isArray(arg2)) {\n options.list = arg2;\n }\n if (isNumber(arg3)) {\n options.plural = arg3;\n }\n else if (isString(arg3)) {\n options.default = arg3;\n }\n else if (isPlainObject(arg3)) {\n assign(options, arg3);\n }\n return [key, options];\n}\nfunction getCompileContext(context, locale, key, source, warnHtmlMessage, onError) {\n return {\n locale,\n key,\n warnHtmlMessage,\n onError: (err) => {\n onError && onError(err);\n if ((process.env.NODE_ENV !== 'production')) {\n const _source = getSourceForCodeFrame(source);\n const message = `Message compilation error: ${err.message}`;\n const codeFrame = err.location &&\n _source &&\n generateCodeFrame(_source, err.location.start.offset, err.location.end.offset);\n const emitter = context.__v_emitter;\n if (emitter && _source) {\n emitter.emit('compile-error', {\n message: _source,\n error: err.message,\n start: err.location && err.location.start.offset,\n end: err.location && err.location.end.offset,\n groupId: `${'translate'}:${key}`\n });\n }\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\n }\n else {\n throw err;\n }\n },\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\n };\n}\nfunction getSourceForCodeFrame(source) {\n if (isString(source)) {\n return source;\n }\n else {\n if (source.loc && source.loc.source) {\n return source.loc.source;\n }\n }\n}\nfunction getMessageContextOptions(context, locale, message, options) {\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\n const resolveMessage = (key, useLinked) => {\n let val = resolveValue(message, key);\n // fallback\n if (val == null && (fallbackContext || useLinked)) {\n const [, , message] = resolveMessageFormat(fallbackContext || context, // NOTE: if has fallbackContext, fallback to root, else if use linked, fallback to local context\n key, locale, fallbackLocale, fallbackWarn, missingWarn);\n val = resolveValue(message, key);\n }\n if (isString(val) || isMessageAST(val)) {\n let occurred = false;\n const onError = () => {\n occurred = true;\n };\n const msg = compileMessageFormat(context, key, locale, val, key, onError);\n return !occurred\n ? msg\n : NOOP_MESSAGE_FUNCTION;\n }\n else if (isMessageFunction(val)) {\n return val;\n }\n else {\n // TODO: should be implemented warning message\n return NOOP_MESSAGE_FUNCTION;\n }\n };\n const ctxOptions = {\n locale,\n modifiers,\n pluralRules,\n messages: resolveMessage\n };\n if (context.processor) {\n ctxOptions.processor = context.processor;\n }\n if (options.list) {\n ctxOptions.list = options.list;\n }\n if (options.named) {\n ctxOptions.named = options.named;\n }\n if (isNumber(options.plural)) {\n ctxOptions.pluralIndex = options.plural;\n }\n return ctxOptions;\n}\n\n{\n initFeatureFlags();\n}\n\nexport { CORE_ERROR_CODES_EXTEND_POINT, CORE_WARN_CODES_EXTEND_POINT, CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compile, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getLocale, getWarnMessage, handleMissing, initI18nDevTools, isAlmostSameLocale, isImplicitFallback, isMessageAST, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveLocale, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/*!\n * vue-i18n v11.1.2\n * (c) 2025 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { CORE_ERROR_CODES_EXTEND_POINT, createCompileError, CORE_WARN_CODES_EXTEND_POINT, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, isMessageAST, isMessageFunction, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageCompiler, compile, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { getGlobalThis, makeSymbol, format, isObject, create, isPlainObject, isArray, deepCopy, isString, hasOwn, warn, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, createEmitter, warnOnce, isEmptyObject } from '@intlify/shared';\nimport { createVNode, Text, computed, watch, getCurrentInstance, ref, shallowRef, Fragment, defineComponent, h, effectScope, inject, onMounted, onUnmounted, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * Vue I18n Version\n *\n * @remarks\n * Semver format. Same format as the package.json `version` field.\n *\n * @VueI18nGeneral\n */\nconst VERSION = '11.1.2';\n/**\n * This is only called in esm-bundler builds.\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\n getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\n }\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\n getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\n }\n if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {\n getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false;\n }\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\n }\n}\n\nconst I18nErrorCodes = {\n // composer module errors\n UNEXPECTED_RETURN_TYPE: CORE_ERROR_CODES_EXTEND_POINT, // 24\n // legacy module errors\n INVALID_ARGUMENT: 25,\n // i18n module errors\n MUST_BE_CALL_SETUP_TOP: 26,\n NOT_INSTALLED: 27,\n // directive module errors\n REQUIRED_VALUE: 28,\n INVALID_VALUE: 29,\n // vue-devtools errors\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: 30,\n NOT_INSTALLED_WITH_PROVIDE: 31,\n // unexpected error\n UNEXPECTED_ERROR: 32,\n // not compatible legacy vue-i18n constructor\n NOT_COMPATIBLE_LEGACY_VUE_I18N: 33,\n // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\n NOT_AVAILABLE_COMPOSITION_IN_LEGACY: 34\n};\nfunction createI18nError(code, ...args) {\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\n}\nconst errorMessages = {\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\n [I18nErrorCodes.NOT_INSTALLED]: 'Need to install with `app.use` function',\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\n [I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\n [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\n};\n\nconst TranslateVNodeSymbol = \n/* #__PURE__*/ makeSymbol('__translateVNode');\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\nmakeSymbol('__intlifyMeta');\nconst InejctWithOptionSymbol = \n/* #__PURE__*/ makeSymbol('__injectWithOption');\nconst DisposeSymbol = /* #__PURE__*/ makeSymbol('__dispose');\n\nconst I18nWarnCodes = {\n FALLBACK_TO_ROOT: CORE_WARN_CODES_EXTEND_POINT, // 8\n NOT_FOUND_PARENT_SCOPE: 9,\n IGNORE_OBJ_FLATTEN: 10,\n /**\n * @deprecated will be removed at vue-i18n v12\n */\n DEPRECATE_LEGACY_MODE: 11,\n /**\n * @deprecated will be removed at vue-i18n v12\n */\n DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE: 12\n};\nconst warnMessages = {\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`,\n [I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`,\n /**\n * @deprecated will be removed at vue-i18n v12\n */\n [I18nWarnCodes.DEPRECATE_LEGACY_MODE]: `Legacy API mode has been deprecated in v11. Use Composition API mode instead.\\nAbout how to use the Composition API mode, see https://vue-i18n.intlify.dev/guide/advanced/composition.html`,\n /**\n * @deprecated will be removed at vue-i18n v12\n */\n [I18nWarnCodes.DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE]: `'v-t' has been deprecated in v11. Use translate APIs ('t' or '$t') instead.`\n};\nfunction getWarnMessage(code, ...args) {\n return format(warnMessages[code], ...args);\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Transform flat json in obj to normal json in obj\n */\nfunction handleFlatJson(obj) {\n // check obj\n if (!isObject(obj)) {\n return obj;\n }\n for (const key in obj) {\n // check key\n if (!hasOwn(obj, key)) {\n continue;\n }\n // handle for normal json\n if (!key.includes('.')) {\n // recursive process value if value is also a object\n if (isObject(obj[key])) {\n handleFlatJson(obj[key]);\n }\n }\n // handle for flat json, transform to normal json\n else {\n // go to the last object\n const subKeys = key.split('.');\n const lastIndex = subKeys.length - 1;\n let currentObj = obj;\n let hasStringValue = false;\n for (let i = 0; i < lastIndex; i++) {\n if (subKeys[i] === '__proto__') {\n throw new Error(`unsafe key: ${subKeys[i]}`);\n }\n if (!(subKeys[i] in currentObj)) {\n currentObj[subKeys[i]] = create();\n }\n if (!isObject(currentObj[subKeys[i]])) {\n (process.env.NODE_ENV !== 'production') &&\n warn(getWarnMessage(I18nWarnCodes.IGNORE_OBJ_FLATTEN, {\n key: subKeys[i]\n }));\n hasStringValue = true;\n break;\n }\n currentObj = currentObj[subKeys[i]];\n }\n // update last object value, delete old property\n if (!hasStringValue) {\n currentObj[subKeys[lastIndex]] = obj[key];\n delete obj[key];\n }\n // recursive process value if value is also a object\n if (isObject(currentObj[subKeys[lastIndex]])) {\n handleFlatJson(currentObj[subKeys[lastIndex]]);\n }\n }\n }\n return obj;\n}\nfunction getLocaleMessages(locale, options) {\n const { messages, __i18n, messageResolver, flatJson } = options;\n // prettier-ignore\n const ret = (isPlainObject(messages)\n ? messages\n : isArray(__i18n)\n ? create()\n : { [locale]: create() });\n // merge locale messages of i18n custom block\n if (isArray(__i18n)) {\n __i18n.forEach(custom => {\n if ('locale' in custom && 'resource' in custom) {\n const { locale, resource } = custom;\n if (locale) {\n ret[locale] = ret[locale] || create();\n deepCopy(resource, ret[locale]);\n }\n else {\n deepCopy(resource, ret);\n }\n }\n else {\n isString(custom) && deepCopy(JSON.parse(custom), ret);\n }\n });\n }\n // handle messages for flat json\n if (messageResolver == null && flatJson) {\n for (const key in ret) {\n if (hasOwn(ret, key)) {\n handleFlatJson(ret[key]);\n }\n }\n }\n return ret;\n}\nfunction getComponentOptions(instance) {\n return instance.type;\n}\nfunction adjustI18nResources(gl, options, componentOptions) {\n // prettier-ignore\n let messages = isObject(options.messages)\n ? options.messages\n : create();\n if ('__i18nGlobal' in componentOptions) {\n messages = getLocaleMessages(gl.locale.value, {\n messages,\n __i18n: componentOptions.__i18nGlobal\n });\n }\n // merge locale messages\n const locales = Object.keys(messages);\n if (locales.length) {\n locales.forEach(locale => {\n gl.mergeLocaleMessage(locale, messages[locale]);\n });\n }\n {\n // merge datetime formats\n if (isObject(options.datetimeFormats)) {\n const locales = Object.keys(options.datetimeFormats);\n if (locales.length) {\n locales.forEach(locale => {\n gl.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\n });\n }\n }\n // merge number formats\n if (isObject(options.numberFormats)) {\n const locales = Object.keys(options.numberFormats);\n if (locales.length) {\n locales.forEach(locale => {\n gl.mergeNumberFormat(locale, options.numberFormats[locale]);\n });\n }\n }\n }\n}\nfunction createTextNode(key) {\n return createVNode(Text, null, key, 0);\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// extend VNode interface\nconst DEVTOOLS_META = '__INTLIFY_META__';\nconst NOOP_RETURN_ARRAY = () => [];\nconst NOOP_RETURN_FALSE = () => false;\nlet composerID = 0;\nfunction defineCoreMissingHandler(missing) {\n return ((ctx, locale, key, type) => {\n return missing(locale, key, getCurrentInstance() || undefined, type);\n });\n}\n// for Intlify DevTools\n/* #__NO_SIDE_EFFECTS__ */\nconst getMetaInfo = () => {\n const instance = getCurrentInstance();\n let meta = null;\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\n ? { [DEVTOOLS_META]: meta }\n : null;\n};\n/**\n * Create composer interface factory\n *\n * @internal\n */\nfunction createComposer(options = {}) {\n const { __root, __injectWithOption } = options;\n const _isGlobal = __root === undefined;\n const flatJson = options.flatJson;\n const _ref = inBrowser ? ref : shallowRef;\n let _inheritLocale = isBoolean(options.inheritLocale)\n ? options.inheritLocale\n : true;\n const _locale = _ref(\n // prettier-ignore\n __root && _inheritLocale\n ? __root.locale.value\n : isString(options.locale)\n ? options.locale\n : DEFAULT_LOCALE);\n const _fallbackLocale = _ref(\n // prettier-ignore\n __root && _inheritLocale\n ? __root.fallbackLocale.value\n : isString(options.fallbackLocale) ||\n isArray(options.fallbackLocale) ||\n isPlainObject(options.fallbackLocale) ||\n options.fallbackLocale === false\n ? options.fallbackLocale\n : _locale.value);\n const _messages = _ref(getLocaleMessages(_locale.value, options));\n // prettier-ignore\n const _datetimeFormats = _ref(isPlainObject(options.datetimeFormats)\n ? options.datetimeFormats\n : { [_locale.value]: {} })\n ;\n // prettier-ignore\n const _numberFormats = _ref(isPlainObject(options.numberFormats)\n ? options.numberFormats\n : { [_locale.value]: {} })\n ;\n // warning suppress options\n // prettier-ignore\n let _missingWarn = __root\n ? __root.missingWarn\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\n ? options.missingWarn\n : true;\n // prettier-ignore\n let _fallbackWarn = __root\n ? __root.fallbackWarn\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\n ? options.fallbackWarn\n : true;\n // prettier-ignore\n let _fallbackRoot = __root\n ? __root.fallbackRoot\n : isBoolean(options.fallbackRoot)\n ? options.fallbackRoot\n : true;\n // configure fall back to root\n let _fallbackFormat = !!options.fallbackFormat;\n // runtime missing\n let _missing = isFunction(options.missing) ? options.missing : null;\n let _runtimeMissing = isFunction(options.missing)\n ? defineCoreMissingHandler(options.missing)\n : null;\n // postTranslation handler\n let _postTranslation = isFunction(options.postTranslation)\n ? options.postTranslation\n : null;\n // prettier-ignore\n let _warnHtmlMessage = __root\n ? __root.warnHtmlMessage\n : isBoolean(options.warnHtmlMessage)\n ? options.warnHtmlMessage\n : true;\n let _escapeParameter = !!options.escapeParameter;\n // custom linked modifiers\n // prettier-ignore\n const _modifiers = __root\n ? __root.modifiers\n : isPlainObject(options.modifiers)\n ? options.modifiers\n : {};\n // pluralRules\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\n // runtime context\n // eslint-disable-next-line prefer-const\n let _context;\n const getCoreContext = () => {\n _isGlobal && setFallbackContext(null);\n const ctxOptions = {\n version: VERSION,\n locale: _locale.value,\n fallbackLocale: _fallbackLocale.value,\n messages: _messages.value,\n modifiers: _modifiers,\n pluralRules: _pluralRules,\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\n missingWarn: _missingWarn,\n fallbackWarn: _fallbackWarn,\n fallbackFormat: _fallbackFormat,\n unresolving: true,\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\n warnHtmlMessage: _warnHtmlMessage,\n escapeParameter: _escapeParameter,\n messageResolver: options.messageResolver,\n messageCompiler: options.messageCompiler,\n __meta: { framework: 'vue' }\n };\n {\n ctxOptions.datetimeFormats = _datetimeFormats.value;\n ctxOptions.numberFormats = _numberFormats.value;\n ctxOptions.__datetimeFormatters = isPlainObject(_context)\n ? _context.__datetimeFormatters\n : undefined;\n ctxOptions.__numberFormatters = isPlainObject(_context)\n ? _context.__numberFormatters\n : undefined;\n }\n if ((process.env.NODE_ENV !== 'production')) {\n ctxOptions.__v_emitter = isPlainObject(_context)\n ? _context.__v_emitter\n : undefined;\n }\n const ctx = createCoreContext(ctxOptions);\n _isGlobal && setFallbackContext(ctx);\n return ctx;\n };\n _context = getCoreContext();\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n // track reactivity\n function trackReactivityValues() {\n return [\n _locale.value,\n _fallbackLocale.value,\n _messages.value,\n _datetimeFormats.value,\n _numberFormats.value\n ]\n ;\n }\n // locale\n const locale = computed({\n get: () => _locale.value,\n set: val => {\n _context.locale = val;\n _locale.value = val;\n }\n });\n // fallbackLocale\n const fallbackLocale = computed({\n get: () => _fallbackLocale.value,\n set: val => {\n _context.fallbackLocale = val;\n _fallbackLocale.value = val;\n updateFallbackLocale(_context, _locale.value, val);\n }\n });\n // messages\n const messages = computed(() => _messages.value);\n // datetimeFormats\n const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\n // numberFormats\n const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\n // getPostTranslationHandler\n function getPostTranslationHandler() {\n return isFunction(_postTranslation) ? _postTranslation : null;\n }\n // setPostTranslationHandler\n function setPostTranslationHandler(handler) {\n _postTranslation = handler;\n _context.postTranslation = handler;\n }\n // getMissingHandler\n function getMissingHandler() {\n return _missing;\n }\n // setMissingHandler\n function setMissingHandler(handler) {\n if (handler !== null) {\n _runtimeMissing = defineCoreMissingHandler(handler);\n }\n _missing = handler;\n _context.missing = _runtimeMissing;\n }\n function isResolvedTranslateMessage(type, arg) {\n return type !== 'translate' || !arg.resolvedMessage;\n }\n const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\n trackReactivityValues(); // track reactive dependency\n // NOTE: experimental !!\n let ret;\n try {\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n setAdditionalMeta(getMetaInfo());\n }\n if (!_isGlobal) {\n _context.fallbackContext = __root\n ? getFallbackContext()\n : undefined;\n }\n ret = fn(_context);\n }\n finally {\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n setAdditionalMeta(null);\n }\n if (!_isGlobal) {\n _context.fallbackContext = undefined;\n }\n }\n if ((warnType !== 'translate exists' && // for not `te` (e.g `t`)\n isNumber(ret) &&\n ret === NOT_REOSLVED) ||\n (warnType === 'translate exists' && !ret) // for `te`\n ) {\n const [key, arg2] = argumentParser();\n if ((process.env.NODE_ENV !== 'production') &&\n __root &&\n isString(key) &&\n isResolvedTranslateMessage(warnType, arg2)) {\n if (_fallbackRoot &&\n (isTranslateFallbackWarn(_fallbackWarn, key) ||\n isTranslateMissingWarn(_missingWarn, key))) {\n warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\n key,\n type: warnType\n }));\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n const { __v_emitter: emitter } = _context;\n if (emitter && _fallbackRoot) {\n emitter.emit('fallback', {\n type: warnType,\n key,\n to: 'global',\n groupId: `${warnType}:${key}`\n });\n }\n }\n }\n return __root && _fallbackRoot\n ? fallbackSuccess(__root)\n : fallbackFail(key);\n }\n else if (successCondition(ret)) {\n return ret;\n }\n else {\n /* istanbul ignore next */\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\n }\n };\n // t\n function t(...args) {\n return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\n }\n // rt\n function rt(...args) {\n const [arg1, arg2, arg3] = args;\n if (arg3 && !isObject(arg3)) {\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\n }\n return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\n }\n // d\n function d(...args) {\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n }\n // n\n function n(...args) {\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\n }\n // for custom processor\n function normalize(values) {\n return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\n ? createTextNode(String(val))\n : val);\n }\n const interpolate = (val) => val;\n const processor = {\n normalize,\n interpolate,\n type: 'vnode'\n };\n // translateVNode, using for `i18n-t` component\n function translateVNode(...args) {\n return wrapWithDeps(context => {\n let ret;\n const _context = context;\n try {\n _context.processor = processor;\n ret = Reflect.apply(translate, null, [_context, ...args]);\n }\n finally {\n _context.processor = null;\n }\n return ret;\n }, () => parseTranslateArgs(...args), 'translate', root => root[TranslateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\n }\n // numberParts, using for `i18n-n` component\n function numberParts(...args) {\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => root[NumberPartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n }\n // datetimeParts, using for `i18n-d` component\n function datetimeParts(...args) {\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => root[DatetimePartsSymbol](...args), NOOP_RETURN_ARRAY, val => isString(val) || isArray(val));\n }\n function setPluralRules(rules) {\n _pluralRules = rules;\n _context.pluralRules = _pluralRules;\n }\n // te\n function te(key, locale) {\n return wrapWithDeps(() => {\n if (!key) {\n return false;\n }\n const targetLocale = isString(locale) ? locale : _locale.value;\n const message = getLocaleMessage(targetLocale);\n const resolved = _context.messageResolver(message, key);\n return (isMessageAST(resolved) ||\n isMessageFunction(resolved) ||\n isString(resolved));\n }, () => [key], 'translate exists', root => {\n return Reflect.apply(root.te, root, [key, locale]);\n }, NOOP_RETURN_FALSE, val => isBoolean(val));\n }\n function resolveMessages(key) {\n let messages = null;\n const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\n for (let i = 0; i < locales.length; i++) {\n const targetLocaleMessages = _messages.value[locales[i]] || {};\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\n if (messageValue != null) {\n messages = messageValue;\n break;\n }\n }\n return messages;\n }\n // tm\n function tm(key) {\n const messages = resolveMessages(key);\n // prettier-ignore\n return messages != null\n ? messages\n : __root\n ? __root.tm(key) || {}\n : {};\n }\n // getLocaleMessage\n function getLocaleMessage(locale) {\n return (_messages.value[locale] || {});\n }\n // setLocaleMessage\n function setLocaleMessage(locale, message) {\n if (flatJson) {\n const _message = { [locale]: message };\n for (const key in _message) {\n if (hasOwn(_message, key)) {\n handleFlatJson(_message[key]);\n }\n }\n message = _message[locale];\n }\n _messages.value[locale] = message;\n _context.messages = _messages.value;\n }\n // mergeLocaleMessage\n function mergeLocaleMessage(locale, message) {\n _messages.value[locale] = _messages.value[locale] || {};\n const _message = { [locale]: message };\n if (flatJson) {\n for (const key in _message) {\n if (hasOwn(_message, key)) {\n handleFlatJson(_message[key]);\n }\n }\n }\n message = _message[locale];\n deepCopy(message, _messages.value[locale]);\n _context.messages = _messages.value;\n }\n // getDateTimeFormat\n function getDateTimeFormat(locale) {\n return _datetimeFormats.value[locale] || {};\n }\n // setDateTimeFormat\n function setDateTimeFormat(locale, format) {\n _datetimeFormats.value[locale] = format;\n _context.datetimeFormats = _datetimeFormats.value;\n clearDateTimeFormat(_context, locale, format);\n }\n // mergeDateTimeFormat\n function mergeDateTimeFormat(locale, format) {\n _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\n _context.datetimeFormats = _datetimeFormats.value;\n clearDateTimeFormat(_context, locale, format);\n }\n // getNumberFormat\n function getNumberFormat(locale) {\n return _numberFormats.value[locale] || {};\n }\n // setNumberFormat\n function setNumberFormat(locale, format) {\n _numberFormats.value[locale] = format;\n _context.numberFormats = _numberFormats.value;\n clearNumberFormat(_context, locale, format);\n }\n // mergeNumberFormat\n function mergeNumberFormat(locale, format) {\n _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\n _context.numberFormats = _numberFormats.value;\n clearNumberFormat(_context, locale, format);\n }\n // for debug\n composerID++;\n // watch root locale & fallbackLocale\n if (__root && inBrowser) {\n watch(__root.locale, (val) => {\n if (_inheritLocale) {\n _locale.value = val;\n _context.locale = val;\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n }\n });\n watch(__root.fallbackLocale, (val) => {\n if (_inheritLocale) {\n _fallbackLocale.value = val;\n _context.fallbackLocale = val;\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n }\n });\n }\n // define basic composition API!\n const composer = {\n id: composerID,\n locale,\n fallbackLocale,\n get inheritLocale() {\n return _inheritLocale;\n },\n set inheritLocale(val) {\n _inheritLocale = val;\n if (val && __root) {\n _locale.value = __root.locale.value;\n _fallbackLocale.value = __root.fallbackLocale.value;\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\n }\n },\n get availableLocales() {\n return Object.keys(_messages.value).sort();\n },\n messages,\n get modifiers() {\n return _modifiers;\n },\n get pluralRules() {\n return _pluralRules || {};\n },\n get isGlobal() {\n return _isGlobal;\n },\n get missingWarn() {\n return _missingWarn;\n },\n set missingWarn(val) {\n _missingWarn = val;\n _context.missingWarn = _missingWarn;\n },\n get fallbackWarn() {\n return _fallbackWarn;\n },\n set fallbackWarn(val) {\n _fallbackWarn = val;\n _context.fallbackWarn = _fallbackWarn;\n },\n get fallbackRoot() {\n return _fallbackRoot;\n },\n set fallbackRoot(val) {\n _fallbackRoot = val;\n },\n get fallbackFormat() {\n return _fallbackFormat;\n },\n set fallbackFormat(val) {\n _fallbackFormat = val;\n _context.fallbackFormat = _fallbackFormat;\n },\n get warnHtmlMessage() {\n return _warnHtmlMessage;\n },\n set warnHtmlMessage(val) {\n _warnHtmlMessage = val;\n _context.warnHtmlMessage = val;\n },\n get escapeParameter() {\n return _escapeParameter;\n },\n set escapeParameter(val) {\n _escapeParameter = val;\n _context.escapeParameter = val;\n },\n t,\n getLocaleMessage,\n setLocaleMessage,\n mergeLocaleMessage,\n getPostTranslationHandler,\n setPostTranslationHandler,\n getMissingHandler,\n setMissingHandler,\n [SetPluralRulesSymbol]: setPluralRules\n };\n {\n composer.datetimeFormats = datetimeFormats;\n composer.numberFormats = numberFormats;\n composer.rt = rt;\n composer.te = te;\n composer.tm = tm;\n composer.d = d;\n composer.n = n;\n composer.getDateTimeFormat = getDateTimeFormat;\n composer.setDateTimeFormat = setDateTimeFormat;\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\n composer.getNumberFormat = getNumberFormat;\n composer.setNumberFormat = setNumberFormat;\n composer.mergeNumberFormat = mergeNumberFormat;\n composer[InejctWithOptionSymbol] = __injectWithOption;\n composer[TranslateVNodeSymbol] = translateVNode;\n composer[DatetimePartsSymbol] = datetimeParts;\n composer[NumberPartsSymbol] = numberParts;\n }\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n composer[EnableEmitter] = (emitter) => {\n _context.__v_emitter = emitter;\n };\n composer[DisableEmitter] = () => {\n _context.__v_emitter = undefined;\n };\n }\n return composer;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\nconst VueDevToolsLabels = {\n 'vue-devtools-plugin-vue-i18n': 'Vue I18n DevTools',\n 'vue-i18n-resource-inspector': 'Vue I18n DevTools',\n 'vue-i18n-timeline': 'Vue I18n'\n};\nconst VueDevToolsPlaceholders = {\n 'vue-i18n-resource-inspector': 'Search for scopes ...'\n};\nconst VueDevToolsTimelineColors = {\n 'vue-i18n-timeline': 0xffcd19\n};\nlet devtoolsApi;\nasync function enableDevTools(app, i18n) {\n return new Promise((resolve, reject) => {\n try {\n setupDevtoolsPlugin({\n id: 'vue-devtools-plugin-vue-i18n',\n label: VueDevToolsLabels['vue-devtools-plugin-vue-i18n'],\n packageName: 'vue-i18n',\n homepage: 'https://vue-i18n.intlify.dev',\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\n app: app // eslint-disable-line @typescript-eslint/no-explicit-any\n }, api => {\n devtoolsApi = api;\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\n updateComponentTreeTags(componentInstance, treeNode, i18n);\n });\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\n if (componentInstance.vnode.el &&\n componentInstance.vnode.el.__VUE_I18N__ &&\n instanceData) {\n if (i18n.mode === 'legacy') {\n // ignore global scope on legacy mode\n if (componentInstance.vnode.el.__VUE_I18N__ !==\n i18n.global.__composer) {\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n }\n }\n else {\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\n }\n }\n });\n api.addInspector({\n id: 'vue-i18n-resource-inspector',\n label: VueDevToolsLabels['vue-i18n-resource-inspector'],\n icon: 'language',\n treeFilterPlaceholder: VueDevToolsPlaceholders['vue-i18n-resource-inspector']\n });\n api.on.getInspectorTree(payload => {\n if (payload.app === app &&\n payload.inspectorId === 'vue-i18n-resource-inspector') {\n registerScope(payload, i18n);\n }\n });\n const roots = new Map();\n api.on.getInspectorState(async (payload) => {\n if (payload.app === app &&\n payload.inspectorId === 'vue-i18n-resource-inspector') {\n api.unhighlightElement();\n inspectScope(payload, i18n);\n if (payload.nodeId === 'global') {\n if (!roots.has(payload.app)) {\n const [root] = await api.getComponentInstances(payload.app);\n roots.set(payload.app, root);\n }\n api.highlightElement(roots.get(payload.app));\n }\n else {\n const instance = getComponentInstance(payload.nodeId, i18n);\n instance && api.highlightElement(instance);\n }\n }\n });\n api.on.editInspectorState(payload => {\n if (payload.app === app &&\n payload.inspectorId === 'vue-i18n-resource-inspector') {\n editScope(payload, i18n);\n }\n });\n api.addTimelineLayer({\n id: 'vue-i18n-timeline',\n label: VueDevToolsLabels['vue-i18n-timeline'],\n color: VueDevToolsTimelineColors['vue-i18n-timeline']\n });\n resolve(true);\n });\n }\n catch (e) {\n console.error(e);\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(false);\n }\n });\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getI18nScopeLable(instance) {\n return (instance.type.name ||\n instance.type.displayName ||\n instance.type.__file ||\n 'Anonymous');\n}\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\ntreeNode, i18n) {\n // prettier-ignore\n const global = i18n.mode === 'composition'\n ? i18n.global\n : i18n.global.__composer;\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\n // add custom tags local scope only\n if (instance.vnode.el.__VUE_I18N__ !== global) {\n const tag = {\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\n textColor: 0x000000,\n backgroundColor: 0xffcd19\n };\n treeNode.tags.push(tag);\n }\n }\n}\nfunction inspectComposer(instanceData, composer) {\n const type = VUE_I18N_COMPONENT_TYPES;\n instanceData.state.push({\n type,\n key: 'locale',\n editable: true,\n value: composer.locale.value\n });\n instanceData.state.push({\n type,\n key: 'availableLocales',\n editable: false,\n value: composer.availableLocales\n });\n instanceData.state.push({\n type,\n key: 'fallbackLocale',\n editable: true,\n value: composer.fallbackLocale.value\n });\n instanceData.state.push({\n type,\n key: 'inheritLocale',\n editable: true,\n value: composer.inheritLocale\n });\n instanceData.state.push({\n type,\n key: 'messages',\n editable: false,\n value: getLocaleMessageValue(composer.messages.value)\n });\n {\n instanceData.state.push({\n type,\n key: 'datetimeFormats',\n editable: false,\n value: composer.datetimeFormats.value\n });\n instanceData.state.push({\n type,\n key: 'numberFormats',\n editable: false,\n value: composer.numberFormats.value\n });\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getLocaleMessageValue(messages) {\n const value = {};\n Object.keys(messages).forEach((key) => {\n const v = messages[key];\n if (isFunction(v) && 'source' in v) {\n value[key] = getMessageFunctionDetails(v);\n }\n else if (isMessageAST(v) && v.loc && v.loc.source) {\n value[key] = v.loc.source;\n }\n else if (isObject(v)) {\n value[key] = getLocaleMessageValue(v);\n }\n else {\n value[key] = v;\n }\n });\n return value;\n}\nconst ESC = {\n '<': '<',\n '>': '>',\n '\"': '"',\n '&': '&'\n};\nfunction escape(s) {\n return s.replace(/[<>\"&]/g, escapeChar);\n}\nfunction escapeChar(a) {\n return ESC[a] || a;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMessageFunctionDetails(func) {\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\n return {\n _custom: {\n type: 'function',\n display: `<span>Æ’</span> ${argString}`\n }\n };\n}\nfunction registerScope(payload, i18n) {\n payload.rootNodes.push({\n id: 'global',\n label: 'Global Scope'\n });\n // prettier-ignore\n const global = i18n.mode === 'composition'\n ? i18n.global\n : i18n.global.__composer;\n for (const [keyInstance, instance] of i18n.__instances) {\n // prettier-ignore\n const composer = i18n.mode === 'composition'\n ? instance\n : instance.__composer;\n if (global === composer) {\n continue;\n }\n payload.rootNodes.push({\n id: composer.id.toString(),\n label: `${getI18nScopeLable(keyInstance)} Scope`\n });\n }\n}\nfunction getComponentInstance(nodeId, i18n) {\n let instance = null;\n if (nodeId !== 'global') {\n for (const [component, composer] of i18n.__instances.entries()) {\n if (composer.id.toString() === nodeId) {\n instance = component;\n break;\n }\n }\n }\n return instance;\n}\nfunction getComposer$2(nodeId, i18n) {\n if (nodeId === 'global') {\n return i18n.mode === 'composition'\n ? i18n.global\n : i18n.global.__composer;\n }\n else {\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\n if (instance) {\n return i18n.mode === 'composition'\n ? instance\n : instance.__composer;\n }\n else {\n return null;\n }\n }\n}\nfunction inspectScope(payload, i18n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n const composer = getComposer$2(payload.nodeId, i18n);\n if (composer) {\n // TODO:\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n payload.state = makeScopeInspectState(composer);\n }\n return null;\n}\nfunction makeScopeInspectState(composer) {\n const state = {};\n const localeType = 'Locale related info';\n const localeStates = [\n {\n type: localeType,\n key: 'locale',\n editable: true,\n value: composer.locale.value\n },\n {\n type: localeType,\n key: 'fallbackLocale',\n editable: true,\n value: composer.fallbackLocale.value\n },\n {\n type: localeType,\n key: 'availableLocales',\n editable: false,\n value: composer.availableLocales\n },\n {\n type: localeType,\n key: 'inheritLocale',\n editable: true,\n value: composer.inheritLocale\n }\n ];\n state[localeType] = localeStates;\n const localeMessagesType = 'Locale messages info';\n const localeMessagesStates = [\n {\n type: localeMessagesType,\n key: 'messages',\n editable: false,\n value: getLocaleMessageValue(composer.messages.value)\n }\n ];\n state[localeMessagesType] = localeMessagesStates;\n {\n const datetimeFormatsType = 'Datetime formats info';\n const datetimeFormatsStates = [\n {\n type: datetimeFormatsType,\n key: 'datetimeFormats',\n editable: false,\n value: composer.datetimeFormats.value\n }\n ];\n state[datetimeFormatsType] = datetimeFormatsStates;\n const numberFormatsType = 'Datetime formats info';\n const numberFormatsStates = [\n {\n type: numberFormatsType,\n key: 'numberFormats',\n editable: false,\n value: composer.numberFormats.value\n }\n ];\n state[numberFormatsType] = numberFormatsStates;\n }\n return state;\n}\nfunction addTimelineEvent(event, payload) {\n if (devtoolsApi) {\n let groupId;\n if (payload && 'groupId' in payload) {\n groupId = payload.groupId;\n delete payload.groupId;\n }\n devtoolsApi.addTimelineEvent({\n layerId: 'vue-i18n-timeline',\n event: {\n title: event,\n groupId,\n time: Date.now(),\n meta: {},\n data: payload || {},\n logType: event === 'compile-error'\n ? 'error'\n : event === 'fallback' || event === 'missing'\n ? 'warning'\n : 'default'\n }\n });\n }\n}\nfunction editScope(payload, i18n) {\n const composer = getComposer$2(payload.nodeId, i18n);\n if (composer) {\n const [field] = payload.path;\n if (field === 'locale' && isString(payload.state.value)) {\n composer.locale.value = payload.state.value;\n }\n else if (field === 'fallbackLocale' &&\n (isString(payload.state.value) ||\n isArray(payload.state.value) ||\n isObject(payload.state.value))) {\n composer.fallbackLocale.value = payload.state.value;\n }\n else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\n composer.inheritLocale = payload.state.value;\n }\n }\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Convert to I18n Composer Options from VueI18n Options\n *\n * @internal\n */\nfunction convertComposerOptions(options) {\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\n const fallbackLocale = isString(options.fallbackLocale) ||\n isArray(options.fallbackLocale) ||\n isPlainObject(options.fallbackLocale) ||\n options.fallbackLocale === false\n ? options.fallbackLocale\n : locale;\n const missing = isFunction(options.missing) ? options.missing : undefined;\n const missingWarn = isBoolean(options.silentTranslationWarn) ||\n isRegExp(options.silentTranslationWarn)\n ? !options.silentTranslationWarn\n : true;\n const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\n isRegExp(options.silentFallbackWarn)\n ? !options.silentFallbackWarn\n : true;\n const fallbackRoot = isBoolean(options.fallbackRoot)\n ? options.fallbackRoot\n : true;\n const fallbackFormat = !!options.formatFallbackMessages;\n const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\n const pluralizationRules = options.pluralizationRules;\n const postTranslation = isFunction(options.postTranslation)\n ? options.postTranslation\n : undefined;\n const warnHtmlMessage = isString(options.warnHtmlInMessage)\n ? options.warnHtmlInMessage !== 'off'\n : true;\n const escapeParameter = !!options.escapeParameterHtml;\n const inheritLocale = isBoolean(options.sync) ? options.sync : true;\n let messages = options.messages;\n if (isPlainObject(options.sharedMessages)) {\n const sharedMessages = options.sharedMessages;\n const locales = Object.keys(sharedMessages);\n messages = locales.reduce((messages, locale) => {\n const message = messages[locale] || (messages[locale] = {});\n assign(message, sharedMessages[locale]);\n return messages;\n }, (messages || {}));\n }\n const { __i18n, __root, __injectWithOption } = options;\n const datetimeFormats = options.datetimeFormats;\n const numberFormats = options.numberFormats;\n const flatJson = options.flatJson;\n return {\n locale,\n fallbackLocale,\n messages,\n flatJson,\n datetimeFormats,\n numberFormats,\n missing,\n missingWarn,\n fallbackWarn,\n fallbackRoot,\n fallbackFormat,\n modifiers,\n pluralRules: pluralizationRules,\n postTranslation,\n warnHtmlMessage,\n escapeParameter,\n messageResolver: options.messageResolver,\n inheritLocale,\n __i18n,\n __root,\n __injectWithOption\n };\n}\n/**\n * create VueI18n interface factory\n *\n * @internal\n *\n * @deprecated will be removed at vue-i18n v12\n */\nfunction createVueI18n(options = {}) {\n const composer = createComposer(convertComposerOptions(options));\n const { __extender } = options;\n // defines VueI18n\n const vueI18n = {\n // id\n id: composer.id,\n // locale\n get locale() {\n return composer.locale.value;\n },\n set locale(val) {\n composer.locale.value = val;\n },\n // fallbackLocale\n get fallbackLocale() {\n return composer.fallbackLocale.value;\n },\n set fallbackLocale(val) {\n composer.fallbackLocale.value = val;\n },\n // messages\n get messages() {\n return composer.messages.value;\n },\n // datetimeFormats\n get datetimeFormats() {\n return composer.datetimeFormats.value;\n },\n // numberFormats\n get numberFormats() {\n return composer.numberFormats.value;\n },\n // availableLocales\n get availableLocales() {\n return composer.availableLocales;\n },\n // missing\n get missing() {\n return composer.getMissingHandler();\n },\n set missing(handler) {\n composer.setMissingHandler(handler);\n },\n // silentTranslationWarn\n get silentTranslationWarn() {\n return isBoolean(composer.missingWarn)\n ? !composer.missingWarn\n : composer.missingWarn;\n },\n set silentTranslationWarn(val) {\n composer.missingWarn = isBoolean(val) ? !val : val;\n },\n // silentFallbackWarn\n get silentFallbackWarn() {\n return isBoolean(composer.fallbackWarn)\n ? !composer.fallbackWarn\n : composer.fallbackWarn;\n },\n set silentFallbackWarn(val) {\n composer.fallbackWarn = isBoolean(val) ? !val : val;\n },\n // modifiers\n get modifiers() {\n return composer.modifiers;\n },\n // formatFallbackMessages\n get formatFallbackMessages() {\n return composer.fallbackFormat;\n },\n set formatFallbackMessages(val) {\n composer.fallbackFormat = val;\n },\n // postTranslation\n get postTranslation() {\n return composer.getPostTranslationHandler();\n },\n set postTranslation(handler) {\n composer.setPostTranslationHandler(handler);\n },\n // sync\n get sync() {\n return composer.inheritLocale;\n },\n set sync(val) {\n composer.inheritLocale = val;\n },\n // warnInHtmlMessage\n get warnHtmlInMessage() {\n return composer.warnHtmlMessage ? 'warn' : 'off';\n },\n set warnHtmlInMessage(val) {\n composer.warnHtmlMessage = val !== 'off';\n },\n // escapeParameterHtml\n get escapeParameterHtml() {\n return composer.escapeParameter;\n },\n set escapeParameterHtml(val) {\n composer.escapeParameter = val;\n },\n // pluralizationRules\n get pluralizationRules() {\n return composer.pluralRules || {};\n },\n // for internal\n __composer: composer,\n // t\n t(...args) {\n return Reflect.apply(composer.t, composer, [...args]);\n },\n // rt\n rt(...args) {\n return Reflect.apply(composer.rt, composer, [...args]);\n },\n // te\n te(key, locale) {\n return composer.te(key, locale);\n },\n // tm\n tm(key) {\n return composer.tm(key);\n },\n // getLocaleMessage\n getLocaleMessage(locale) {\n return composer.getLocaleMessage(locale);\n },\n // setLocaleMessage\n setLocaleMessage(locale, message) {\n composer.setLocaleMessage(locale, message);\n },\n // mergeLocaleMessage\n mergeLocaleMessage(locale, message) {\n composer.mergeLocaleMessage(locale, message);\n },\n // d\n d(...args) {\n return Reflect.apply(composer.d, composer, [...args]);\n },\n // getDateTimeFormat\n getDateTimeFormat(locale) {\n return composer.getDateTimeFormat(locale);\n },\n // setDateTimeFormat\n setDateTimeFormat(locale, format) {\n composer.setDateTimeFormat(locale, format);\n },\n // mergeDateTimeFormat\n mergeDateTimeFormat(locale, format) {\n composer.mergeDateTimeFormat(locale, format);\n },\n // n\n n(...args) {\n return Reflect.apply(composer.n, composer, [...args]);\n },\n // getNumberFormat\n getNumberFormat(locale) {\n return composer.getNumberFormat(locale);\n },\n // setNumberFormat\n setNumberFormat(locale, format) {\n composer.setNumberFormat(locale, format);\n },\n // mergeNumberFormat\n mergeNumberFormat(locale, format) {\n composer.mergeNumberFormat(locale, format);\n }\n };\n vueI18n.__extender = __extender;\n // for vue-devtools timeline event\n if ((process.env.NODE_ENV !== 'production')) {\n vueI18n.__enableEmitter = (emitter) => {\n const __composer = composer;\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\n };\n vueI18n.__disableEmitter = () => {\n const __composer = composer;\n __composer[DisableEmitter] && __composer[DisableEmitter]();\n };\n }\n return vueI18n;\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Supports compatibility for legacy vue-i18n APIs\n * This mixin is used when we use vue-i18n@v9.x or later\n */\nfunction defineMixin(vuei18n, composer, i18n) {\n return {\n beforeCreate() {\n const instance = getCurrentInstance();\n /* istanbul ignore if */\n if (!instance) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n const options = this.$options;\n if (options.i18n) {\n const optionsI18n = options.i18n;\n if (options.__i18n) {\n optionsI18n.__i18n = options.__i18n;\n }\n optionsI18n.__root = composer;\n if (this === this.$root) {\n // merge option and gttach global\n this.$i18n = mergeToGlobal(vuei18n, optionsI18n);\n }\n else {\n optionsI18n.__injectWithOption = true;\n optionsI18n.__extender = i18n.__vueI18nExtend;\n // atttach local VueI18n instance\n this.$i18n = createVueI18n(optionsI18n);\n // extend VueI18n instance\n const _vueI18n = this.$i18n;\n if (_vueI18n.__extender) {\n _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n }\n }\n }\n else if (options.__i18n) {\n if (this === this.$root) {\n // merge option and gttach global\n this.$i18n = mergeToGlobal(vuei18n, options);\n }\n else {\n // atttach local VueI18n instance\n this.$i18n = createVueI18n({\n __i18n: options.__i18n,\n __injectWithOption: true,\n __extender: i18n.__vueI18nExtend,\n __root: composer\n });\n // extend VueI18n instance\n const _vueI18n = this.$i18n;\n if (_vueI18n.__extender) {\n _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);\n }\n }\n }\n else {\n // attach global VueI18n instance\n this.$i18n = vuei18n;\n }\n if (options.__i18nGlobal) {\n adjustI18nResources(composer, options, options);\n }\n // defines vue-i18n legacy APIs\n this.$t = (...args) => this.$i18n.t(...args);\n this.$rt = (...args) => this.$i18n.rt(...args);\n this.$te = (key, locale) => this.$i18n.te(key, locale);\n this.$d = (...args) => this.$i18n.d(...args);\n this.$n = (...args) => this.$i18n.n(...args);\n this.$tm = (key) => this.$i18n.tm(key);\n i18n.__setInstance(instance, this.$i18n);\n },\n mounted() {\n /* istanbul ignore if */\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false &&\n this.$el &&\n this.$i18n) {\n const _vueI18n = this.$i18n;\n this.$el.__VUE_I18N__ = _vueI18n.__composer;\n const emitter = (this.__v_emitter =\n createEmitter());\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n emitter.on('*', addTimelineEvent);\n }\n },\n unmounted() {\n const instance = getCurrentInstance();\n /* istanbul ignore if */\n if (!instance) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n const _vueI18n = this.$i18n;\n /* istanbul ignore if */\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false &&\n this.$el &&\n this.$el.__VUE_I18N__) {\n if (this.__v_emitter) {\n this.__v_emitter.off('*', addTimelineEvent);\n delete this.__v_emitter;\n }\n if (this.$i18n) {\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\n delete this.$el.__VUE_I18N__;\n }\n }\n delete this.$t;\n delete this.$rt;\n delete this.$te;\n delete this.$d;\n delete this.$n;\n delete this.$tm;\n if (_vueI18n.__disposer) {\n _vueI18n.__disposer();\n delete _vueI18n.__disposer;\n delete _vueI18n.__extender;\n }\n i18n.__deleteInstance(instance);\n delete this.$i18n;\n }\n };\n}\nfunction mergeToGlobal(g, options) {\n g.locale = options.locale || g.locale;\n g.fallbackLocale = options.fallbackLocale || g.fallbackLocale;\n g.missing = options.missing || g.missing;\n g.silentTranslationWarn =\n options.silentTranslationWarn || g.silentFallbackWarn;\n g.silentFallbackWarn = options.silentFallbackWarn || g.silentFallbackWarn;\n g.formatFallbackMessages =\n options.formatFallbackMessages || g.formatFallbackMessages;\n g.postTranslation = options.postTranslation || g.postTranslation;\n g.warnHtmlInMessage = options.warnHtmlInMessage || g.warnHtmlInMessage;\n g.escapeParameterHtml = options.escapeParameterHtml || g.escapeParameterHtml;\n g.sync = options.sync || g.sync;\n g.__composer[SetPluralRulesSymbol](options.pluralizationRules || g.pluralizationRules);\n const messages = getLocaleMessages(g.locale, {\n messages: options.messages,\n __i18n: options.__i18n\n });\n Object.keys(messages).forEach(locale => g.mergeLocaleMessage(locale, messages[locale]));\n if (options.datetimeFormats) {\n Object.keys(options.datetimeFormats).forEach(locale => g.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\n }\n if (options.numberFormats) {\n Object.keys(options.numberFormats).forEach(locale => g.mergeNumberFormat(locale, options.numberFormats[locale]));\n }\n return g;\n}\n\nconst baseFormatProps = {\n tag: {\n type: [String, Object]\n },\n locale: {\n type: String\n },\n scope: {\n type: String,\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n validator: (val /* ComponentI18nScope */) => val === 'parent' || val === 'global',\n default: 'parent' /* ComponentI18nScope */\n },\n i18n: {\n type: Object\n }\n};\n\nfunction getInterpolateArg(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n{ slots }, // SetupContext,\nkeys) {\n if (keys.length === 1 && keys[0] === 'default') {\n // default slot with list\n const ret = slots.default ? slots.default() : [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return ret.reduce((slot, current) => {\n return [\n ...slot,\n // prettier-ignore\n ...(current.type === Fragment ? current.children : [current])\n ];\n }, []);\n }\n else {\n // named slots\n return keys.reduce((arg, key) => {\n const slot = slots[key];\n if (slot) {\n arg[key] = slot();\n }\n return arg;\n }, create());\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getFragmentableTag() {\n return Fragment;\n}\n\nconst TranslationImpl = /*#__PURE__*/ defineComponent({\n /* eslint-disable */\n name: 'i18n-t',\n props: assign({\n keypath: {\n type: String,\n required: true\n },\n plural: {\n type: [Number, String],\n validator: (val) => isNumber(val) || !isNaN(val)\n }\n }, baseFormatProps),\n /* eslint-enable */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setup(props, context) {\n const { slots, attrs } = context;\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\n const i18n = props.i18n ||\n useI18n({\n useScope: props.scope,\n __useComponent: true\n });\n return () => {\n const keys = Object.keys(slots).filter(key => key !== '_');\n const options = create();\n if (props.locale) {\n options.locale = props.locale;\n }\n if (props.plural !== undefined) {\n options.plural = isString(props.plural) ? +props.plural : props.plural;\n }\n const arg = getInterpolateArg(context, keys);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const children = i18n[TranslateVNodeSymbol](props.keypath, arg, options);\n const assignedAttrs = assign(create(), attrs);\n const tag = isString(props.tag) || isObject(props.tag)\n ? props.tag\n : getFragmentableTag();\n return h(tag, assignedAttrs, children);\n };\n }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Translation Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [TranslationProps](component#translationprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\n *\n * @example\n * ```html\n * <div id=\"app\">\n * <!-- ... -->\n * <i18n keypath=\"term\" tag=\"label\" for=\"tos\">\n * <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\n * </i18n>\n * <!-- ... -->\n * </div>\n * ```\n * ```js\n * import { createApp } from 'vue'\n * import { createI18n } from 'vue-i18n'\n *\n * const messages = {\n * en: {\n * tos: 'Term of Service',\n * term: 'I accept xxx {0}.'\n * },\n * ja: {\n * tos: '利用è¦ç´„',\n * term: 'ç§ã¯ xxx ã®{0}ã«åŒæ„ã—ã¾ã™ã€‚'\n * }\n * }\n *\n * const i18n = createI18n({\n * locale: 'en',\n * messages\n * })\n *\n * const app = createApp({\n * data: {\n * url: '/term'\n * }\n * }).use(i18n).mount('#app')\n * ```\n *\n * @VueI18nComponent\n */\nconst Translation = TranslationImpl;\nconst I18nT = Translation;\n\nfunction isVNode(target) {\n return isArray(target) && !isString(target[0]);\n}\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\n const { slots, attrs } = context;\n return () => {\n const options = { part: true };\n let overrides = create();\n if (props.locale) {\n options.locale = props.locale;\n }\n if (isString(props.format)) {\n options.key = props.format;\n }\n else if (isObject(props.format)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isString(props.format.key)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options.key = props.format.key;\n }\n // Filter out number format options only\n overrides = Object.keys(props.format).reduce((options, prop) => {\n return slotKeys.includes(prop)\n ? assign(create(), options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\n : options;\n }, create());\n }\n const parts = partFormatter(...[props.value, options, overrides]);\n let children = [options.key];\n if (isArray(parts)) {\n children = parts.map((part, index) => {\n const slot = slots[part.type];\n const node = slot\n ? slot({ [part.type]: part.value, index, parts })\n : [part.value];\n if (isVNode(node)) {\n node[0].key = `${part.type}-${index}`;\n }\n return node;\n });\n }\n else if (isString(parts)) {\n children = [parts];\n }\n const assignedAttrs = assign(create(), attrs);\n const tag = isString(props.tag) || isObject(props.tag)\n ? props.tag\n : getFragmentableTag();\n return h(tag, assignedAttrs, children);\n };\n}\n\nconst NumberFormatImpl = /*#__PURE__*/ defineComponent({\n /* eslint-disable */\n name: 'i18n-n',\n props: assign({\n value: {\n type: Number,\n required: true\n },\n format: {\n type: [String, Object]\n }\n }, baseFormatProps),\n /* eslint-enable */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setup(props, context) {\n const i18n = props.i18n ||\n useI18n({\n useScope: props.scope,\n __useComponent: true\n });\n return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n i18n[NumberPartsSymbol](...args));\n }\n});\n/**\n * export the public type for h/tsx inference\n * also to avoid inline import() in generated d.ts files\n */\n/**\n * Number Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\n *\n * @VueI18nComponent\n */\nconst NumberFormat = NumberFormatImpl;\nconst I18nN = NumberFormat;\n\nfunction getComposer$1(i18n, instance) {\n const i18nInternal = i18n;\n if (i18n.mode === 'composition') {\n return (i18nInternal.__getInstance(instance) || i18n.global);\n }\n else {\n const vueI18n = i18nInternal.__getInstance(instance);\n return vueI18n != null\n ? vueI18n.__composer\n : i18n.global.__composer;\n }\n}\n/**\n * @deprecated will be removed at vue-i18n v12\n */\nfunction vTDirective(i18n) {\n const _process = (binding) => {\n if ((process.env.NODE_ENV !== 'production')) {\n warnOnce(getWarnMessage(I18nWarnCodes.DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE));\n }\n const { instance, value } = binding;\n /* istanbul ignore if */\n if (!instance || !instance.$) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n const composer = getComposer$1(i18n, instance.$);\n const parsedValue = parseValue(value);\n return [\n Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\n composer\n ];\n };\n const register = (el, binding) => {\n const [textContent, composer] = _process(binding);\n if (inBrowser && i18n.global === composer) {\n // global scope only\n el.__i18nWatcher = watch(composer.locale, () => {\n binding.instance && binding.instance.$forceUpdate();\n });\n }\n el.__composer = composer;\n el.textContent = textContent;\n };\n const unregister = (el) => {\n if (inBrowser && el.__i18nWatcher) {\n el.__i18nWatcher();\n el.__i18nWatcher = undefined;\n delete el.__i18nWatcher;\n }\n if (el.__composer) {\n el.__composer = undefined;\n delete el.__composer;\n }\n };\n const update = (el, { value }) => {\n if (el.__composer) {\n const composer = el.__composer;\n const parsedValue = parseValue(value);\n el.textContent = Reflect.apply(composer.t, composer, [\n ...makeParams(parsedValue)\n ]);\n }\n };\n const getSSRProps = (binding) => {\n const [textContent] = _process(binding);\n return { textContent };\n };\n return {\n created: register,\n unmounted: unregister,\n beforeUpdate: update,\n getSSRProps\n };\n}\nfunction parseValue(value) {\n if (isString(value)) {\n return { path: value };\n }\n else if (isPlainObject(value)) {\n if (!('path' in value)) {\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\n }\n return value;\n }\n else {\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\n }\n}\nfunction makeParams(value) {\n const { path, locale, args, choice, plural } = value;\n const options = {};\n const named = args || {};\n if (isString(locale)) {\n options.locale = locale;\n }\n if (isNumber(choice)) {\n options.plural = choice;\n }\n if (isNumber(plural)) {\n options.plural = plural;\n }\n return [path, named, options];\n}\n\nfunction apply(app, i18n, ...options) {\n const pluginOptions = isPlainObject(options[0])\n ? options[0]\n : {};\n const globalInstall = isBoolean(pluginOptions.globalInstall)\n ? pluginOptions.globalInstall\n : true;\n if (globalInstall) {\n [Translation.name, 'I18nT'].forEach(name => app.component(name, Translation));\n [NumberFormat.name, 'I18nN'].forEach(name => app.component(name, NumberFormat));\n [DatetimeFormat.name, 'I18nD'].forEach(name => app.component(name, DatetimeFormat));\n }\n // install directive\n {\n app.directive('t', vTDirective(i18n));\n }\n}\n\n/**\n * Injection key for {@link useI18n}\n *\n * @remarks\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\n *\n * @VueI18nGeneral\n */\nconst I18nInjectionKey = \n/* #__PURE__*/ makeSymbol('global-vue-i18n');\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction createI18n(options = {}) {\n // prettier-ignore\n const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\n ? options.legacy\n : __VUE_I18N_LEGACY_API__;\n if ((process.env.NODE_ENV !== 'production') && __legacyMode) {\n warnOnce(getWarnMessage(I18nWarnCodes.DEPRECATE_LEGACY_MODE));\n }\n // prettier-ignore\n const __globalInjection = isBoolean(options.globalInjection)\n ? options.globalInjection\n : true;\n const __instances = new Map();\n const [globalScope, __global] = createGlobal(options, __legacyMode);\n const symbol = /* #__PURE__*/ makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\n function __getInstance(component) {\n return __instances.get(component) || null;\n }\n function __setInstance(component, instance) {\n __instances.set(component, instance);\n }\n function __deleteInstance(component) {\n __instances.delete(component);\n }\n const i18n = {\n // mode\n get mode() {\n return __VUE_I18N_LEGACY_API__ && __legacyMode\n ? 'legacy'\n : 'composition';\n },\n // install plugin\n async install(app, ...options) {\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\n app.__VUE_I18N__ = i18n;\n }\n // setup global provider\n app.__VUE_I18N_SYMBOL__ = symbol;\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\n // set composer & vuei18n extend hook options from plugin options\n if (isPlainObject(options[0])) {\n const opts = options[0];\n i18n.__composerExtend =\n opts.__composerExtend;\n i18n.__vueI18nExtend =\n opts.__vueI18nExtend;\n }\n // global method and properties injection for Composition API\n let globalReleaseHandler = null;\n if (!__legacyMode && __globalInjection) {\n globalReleaseHandler = injectGlobalFields(app, i18n.global);\n }\n // install built-in components and directive\n if (__VUE_I18N_FULL_INSTALL__) {\n apply(app, i18n, ...options);\n }\n // setup mixin for Legacy API\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\n app.mixin(defineMixin(__global, __global.__composer, i18n));\n }\n // release global scope\n const unmountApp = app.unmount;\n app.unmount = () => {\n globalReleaseHandler && globalReleaseHandler();\n i18n.dispose();\n unmountApp();\n };\n // setup vue-devtools plugin\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\n const ret = await enableDevTools(app, i18n);\n if (!ret) {\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\n }\n const emitter = createEmitter();\n if (__legacyMode) {\n const _vueI18n = __global;\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _composer = __global;\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n }\n emitter.on('*', addTimelineEvent);\n }\n },\n // global accessor\n get global() {\n return __global;\n },\n dispose() {\n globalScope.stop();\n },\n // @internal\n __instances,\n // @internal\n __getInstance,\n // @internal\n __setInstance,\n // @internal\n __deleteInstance\n };\n return i18n;\n}\nfunction useI18n(options = {}) {\n const instance = getCurrentInstance();\n if (instance == null) {\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\n }\n if (!instance.isCE &&\n instance.appContext.app != null &&\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\n throw createI18nError(I18nErrorCodes.NOT_INSTALLED);\n }\n const i18n = getI18nInstance(instance);\n const gl = getGlobalComposer(i18n);\n const componentOptions = getComponentOptions(instance);\n const scope = getScope(options, componentOptions);\n if (scope === 'global') {\n adjustI18nResources(gl, options, componentOptions);\n return gl;\n }\n if (scope === 'parent') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let composer = getComposer(i18n, instance, options.__useComponent);\n if (composer == null) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\n }\n composer = gl;\n }\n return composer;\n }\n const i18nInternal = i18n;\n let composer = i18nInternal.__getInstance(instance);\n if (composer == null) {\n const composerOptions = assign({}, options);\n if ('__i18n' in componentOptions) {\n composerOptions.__i18n = componentOptions.__i18n;\n }\n if (gl) {\n composerOptions.__root = gl;\n }\n composer = createComposer(composerOptions);\n if (i18nInternal.__composerExtend) {\n composer[DisposeSymbol] =\n i18nInternal.__composerExtend(composer);\n }\n setupLifeCycle(i18nInternal, instance, composer);\n i18nInternal.__setInstance(instance, composer);\n }\n return composer;\n}\nfunction createGlobal(options, legacyMode) {\n const scope = effectScope();\n const obj = __VUE_I18N_LEGACY_API__ && legacyMode\n ? scope.run(() => createVueI18n(options))\n : scope.run(() => createComposer(options));\n if (obj == null) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n return [scope, obj];\n}\nfunction getI18nInstance(instance) {\n const i18n = inject(!instance.isCE\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\n : I18nInjectionKey);\n /* istanbul ignore if */\n if (!i18n) {\n throw createI18nError(!instance.isCE\n ? I18nErrorCodes.UNEXPECTED_ERROR\n : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE);\n }\n return i18n;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getScope(options, componentOptions) {\n // prettier-ignore\n return isEmptyObject(options)\n ? ('__i18n' in componentOptions)\n ? 'local'\n : 'global'\n : !options.useScope\n ? 'local'\n : options.useScope;\n}\nfunction getGlobalComposer(i18n) {\n // prettier-ignore\n return i18n.mode === 'composition'\n ? i18n.global\n : i18n.global.__composer;\n}\nfunction getComposer(i18n, target, useComponent = false) {\n let composer = null;\n const root = target.root;\n let current = getParentComponentInstance(target, useComponent);\n while (current != null) {\n const i18nInternal = i18n;\n if (i18n.mode === 'composition') {\n composer = i18nInternal.__getInstance(current);\n }\n else {\n if (__VUE_I18N_LEGACY_API__) {\n const vueI18n = i18nInternal.__getInstance(current);\n if (vueI18n != null) {\n composer = vueI18n\n .__composer;\n if (useComponent &&\n composer &&\n !composer[InejctWithOptionSymbol] // eslint-disable-line @typescript-eslint/no-explicit-any\n ) {\n composer = null;\n }\n }\n }\n }\n if (composer != null) {\n break;\n }\n if (root === current) {\n break;\n }\n current = current.parent;\n }\n return composer;\n}\nfunction getParentComponentInstance(target, useComponent = false) {\n if (target == null) {\n return null;\n }\n // if `useComponent: true` will be specified, we get lexical scope owner instance for use-case slots\n return !useComponent\n ? target.parent\n : target.vnode.ctx || target.parent; // eslint-disable-line @typescript-eslint/no-explicit-any\n}\nfunction setupLifeCycle(i18n, target, composer) {\n let emitter = null;\n onMounted(() => {\n // inject composer instance to DOM for intlify-devtools\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false &&\n target.vnode.el) {\n target.vnode.el.__VUE_I18N__ = composer;\n emitter = createEmitter();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _composer = composer;\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\n emitter.on('*', addTimelineEvent);\n }\n }, target);\n onUnmounted(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _composer = composer;\n // remove composer instance from DOM for intlify-devtools\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\n !false &&\n target.vnode.el &&\n target.vnode.el.__VUE_I18N__) {\n emitter && emitter.off('*', addTimelineEvent);\n _composer[DisableEmitter] && _composer[DisableEmitter]();\n delete target.vnode.el.__VUE_I18N__;\n }\n i18n.__deleteInstance(target);\n // dispose extended resources\n const dispose = _composer[DisposeSymbol];\n if (dispose) {\n dispose();\n delete _composer[DisposeSymbol];\n }\n }, target);\n}\nconst globalExportProps = [\n 'locale',\n 'fallbackLocale',\n 'availableLocales'\n];\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm', 'te']\n ;\nfunction injectGlobalFields(app, composer) {\n const i18n = Object.create(null);\n globalExportProps.forEach(prop => {\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\n if (!desc) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n const wrap = isRef(desc.value) // check computed props\n ? {\n get() {\n return desc.value.value;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(val) {\n desc.value.value = val;\n }\n }\n : {\n get() {\n return desc.get && desc.get();\n }\n };\n Object.defineProperty(i18n, prop, wrap);\n });\n app.config.globalProperties.$i18n = i18n;\n globalExportMethods.forEach(method => {\n const desc = Object.getOwnPropertyDescriptor(composer, method);\n if (!desc || !desc.value) {\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\n }\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\n });\n const dispose = () => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete app.config.globalProperties.$i18n;\n globalExportMethods.forEach(method => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delete app.config.globalProperties[`$${method}`];\n });\n };\n return dispose;\n}\n\nconst DatetimeFormatImpl = /* #__PURE__*/ defineComponent({\n /* eslint-disable */\n name: 'i18n-d',\n props: assign({\n value: {\n type: [Number, Date],\n required: true\n },\n format: {\n type: [String, Object]\n }\n }, baseFormatProps),\n /* eslint-enable */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setup(props, context) {\n const i18n = props.i18n ||\n useI18n({\n useScope: props.scope,\n __useComponent: true\n });\n return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n i18n[DatetimePartsSymbol](...args));\n }\n});\n/**\n * Datetime Format Component\n *\n * @remarks\n * See the following items for property about details\n *\n * @VueI18nSee [FormattableProps](component#formattableprops)\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\n *\n * @VueI18nDanger\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\n *\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\n *\n * @VueI18nComponent\n */\nconst DatetimeFormat = DatetimeFormatImpl;\nconst I18nD = DatetimeFormat;\n\n{\n initFeatureFlags();\n}\n// register message compiler for jit compilation\nregisterMessageCompiler(compile);\n// register message resolver at vue-i18n\nregisterMessageResolver(resolveValue);\n// register fallback locale at vue-i18n\nregisterLocaleFallbacker(fallbackWithLocaleChain);\n// NOTE: experimental !!\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\n const target = getGlobalThis();\n target.__INTLIFY__ = true;\n setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\n}\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nD, I18nInjectionKey, I18nN, I18nT, NumberFormat, Translation, VERSION, createI18n, useI18n, vTDirective };\n","import en from './en.json';\nimport ja from './ja.json';\n\nexport enum Locales {\n EN = 'en',\n JA = 'ja'\n}\n\nexport const messages = {\n [Locales.EN]: en,\n [Locales.JA]: ja,\n};\n\nconst setDateTimeFormats = {\n short: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n },\n};\n\nexport const datetimeFormats = {\n en: setDateTimeFormats,\n ja: setDateTimeFormats,\n};\n\nexport const defaultLocale = Locales.EN;\n","import { createI18n } from 'vue-i18n';\r\nimport { datetimeFormats, defaultLocale, messages } from '@/i18n/options';\r\n\r\nexport function appCreateI18n() {\r\n const currentLocale = window.location.pathname.substring(1, 3);\r\n\r\n return createI18n({\r\n messages,\r\n legacy: false,\r\n datetimeFormats,\r\n locale: currentLocale || defaultLocale,\r\n fallbackLocale: defaultLocale,\r\n missingWarn: false,\r\n fallbackWarn: false\r\n });\r\n}\r\n\r\n","/**\n * TODO(v7): Remove this enum and replace with SeverityLevel\n */\nexport var Severity;\n(function (Severity) {\n /** JSDoc */\n Severity[\"Fatal\"] = \"fatal\";\n /** JSDoc */\n Severity[\"Error\"] = \"error\";\n /** JSDoc */\n Severity[\"Warning\"] = \"warning\";\n /** JSDoc */\n Severity[\"Log\"] = \"log\";\n /** JSDoc */\n Severity[\"Info\"] = \"info\";\n /** JSDoc */\n Severity[\"Debug\"] = \"debug\";\n /** JSDoc */\n Severity[\"Critical\"] = \"critical\";\n})(Severity || (Severity = {}));\nexport var SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical'];\n//# sourceMappingURL=severity.js.map","/**\n * Consumes the promise and logs the error when it rejects.\n * @param promise A promise to forget.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function forget(promise) {\n void promise.then(null, function (e) {\n // TODO: Use a better logging mechanism\n // eslint-disable-next-line no-console\n console.error(e);\n });\n}\n//# sourceMappingURL=async.js.map","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);\n/**\n * setPrototypeOf polyfill using __proto__\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction setProtoOf(obj, proto) {\n // @ts-ignore __proto__ does not exist on obj\n obj.__proto__ = proto;\n return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction mixinProperties(obj, proto) {\n for (var prop in proto) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n // @ts-ignore typescript complains about indexing so we remove\n obj[prop] = proto[prop];\n }\n }\n return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import { __extends } from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n __extends(SentryError, _super);\n function SentryError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _newTarget.prototype.constructor.name;\n setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return SentryError;\n}(Error));\nexport { SentryError };\n//# sourceMappingURL=error.js.map","import { __read } from \"tslib\";\nimport { isDebugBuild } from './env';\nimport { SentryError } from './error';\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn, withPassword) {\n if (withPassword === void 0) { withPassword = false; }\n var host = dsn.host, path = dsn.path, pass = dsn.pass, port = dsn.port, projectId = dsn.projectId, protocol = dsn.protocol, publicKey = dsn.publicKey;\n return (protocol + \"://\" + publicKey + (withPassword && pass ? \":\" + pass : '') +\n (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId));\n}\nfunction dsnFromString(str) {\n var match = DSN_REGEX.exec(str);\n if (!match) {\n throw new SentryError(\"Invalid Sentry Dsn: \" + str);\n }\n var _a = __read(match.slice(1), 6), protocol = _a[0], publicKey = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];\n var path = '';\n var projectId = lastPath;\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop();\n }\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n return dsnFromComponents({ host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, publicKey: publicKey });\n}\nfunction dsnFromComponents(components) {\n // TODO this is for backwards compatibility, and can be removed in a future version\n if ('user' in components && !('publicKey' in components)) {\n components.publicKey = components.user;\n }\n return {\n user: components.publicKey || '',\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\nfunction validateDsn(dsn) {\n if (!isDebugBuild()) {\n return;\n }\n var port = dsn.port, projectId = dsn.projectId, protocol = dsn.protocol;\n var requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(function (component) {\n if (!dsn[component]) {\n throw new SentryError(\"Invalid Sentry Dsn: \" + component + \" missing\");\n }\n });\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(\"Invalid Sentry Dsn: Invalid projectId \" + projectId);\n }\n if (!isValidProtocol(protocol)) {\n throw new SentryError(\"Invalid Sentry Dsn: Invalid protocol \" + protocol);\n }\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(\"Invalid Sentry Dsn: Invalid port \" + port);\n }\n return true;\n}\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from) {\n var components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n//# sourceMappingURL=dsn.js.map","import { isDebugBuild } from './env';\nimport { getGlobalObject } from './global';\nimport { logger } from './logger';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n try {\n new DOMException('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n var global = getGlobalObject();\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n var result = false;\n var doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof doc.createElement === \"function\") {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n }\n catch (err) {\n if (isDebugBuild()) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n }\n return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n if (!supportsFetch()) {\n return false;\n }\n try {\n new Request('_', {\n referrerPolicy: 'origin',\n });\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var chrome = global.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","import { __assign, __values } from \"tslib\";\nimport { isDebugBuild } from './env';\nimport { getGlobalObject } from './global';\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nvar global = getGlobalObject();\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\nvar handlers = {};\nvar instrumented = {};\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n instrumented[type] = true;\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n handlers[type].push(callback);\n instrument(type);\n}\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n var e_1, _a;\n if (!type || !handlers[type]) {\n return;\n }\n try {\n for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n try {\n handler(data);\n }\n catch (e) {\n if (isDebugBuild()) {\n logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError: \" + e);\n }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleLevel) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('console', { args: args, level: level });\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n fill(global, 'fetch', function (originalFetch) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var handlerData = {\n args: args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n triggerHandlers('fetch', __assign({}, handlerData));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(function (response) {\n triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), response: response }));\n return response;\n }, function (error) {\n triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), error: error }));\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n });\n };\n });\n}\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function (originalOpen) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var url = args[1];\n var xhrInfo = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n }\n catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n args: args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: xhr,\n });\n }\n };\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function () {\n var readyStateArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n readyStateArgs[_i] = arguments[_i];\n }\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n }\n else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n return originalOpen.apply(xhr, args);\n };\n });\n fill(xhrproto, 'send', function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n triggerHandlers('xhr', {\n args: args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n return originalSend.apply(this, args);\n };\n });\n}\nvar lastHref;\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n }\n catch (_oO) {\n // no-empty\n }\n }\n };\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\nvar debounceDuration = 1000;\nvar debounceTimerID;\nvar lastCapturedEvent;\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n }\n catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n try {\n var target = event.target;\n if (!target || !target.tagName) {\n return true;\n }\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n }\n catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n return true;\n}\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener) {\n if (globalListener === void 0) { globalListener = false; }\n return function (event) {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n var name = event.type === 'keypress' ? 'input' : event.type;\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name: name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name: name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(function () {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n var triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n var globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach(function (target) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this;\n var handlers_1 = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n var handlerForType = (handlers_1[type] = handlers_1[type] || { refCount: 0 });\n if (!handlerForType.handler) {\n var handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n handlerForType.refCount += 1;\n }\n catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n return function (type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this;\n var handlers_2 = el.__sentry_instrumentation_handlers__ || {};\n var handlerForType = handlers_2[type];\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers_2[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers_2).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n }\n catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n });\n });\n}\nvar _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column: column,\n error: error,\n line: line,\n msg: msg,\n url: url,\n });\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n };\n}\nvar _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n };\n}\n//# sourceMappingURL=instrument.js.map","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit) {\n var buffer = [];\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike<T>\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike<T>; In previous versions this used to be `task:\n * PromiseLike<T>`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n // start the task and add its promise to the queue\n var task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(function () { return remove(task); })\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, function () {\n return remove(task).then(null, function () {\n // We have to add another catch here because `remove()` starts a new promise chain.\n });\n });\n return task;\n }\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new SyncPromise(function (resolve, reject) {\n var counter = buffer.length;\n if (!counter) {\n return resolve(true);\n }\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n var capturedSetTimeout = setTimeout(function () {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(function (item) {\n void resolvedSyncPromise(item).then(function () {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n return {\n $: buffer,\n add: add,\n drain: drain,\n };\n}\n//# sourceMappingURL=promisebuffer.js.map","import { Severity, SeverityLevels } from '@sentry/types';\nfunction isSupportedSeverity(level) {\n return SeverityLevels.indexOf(level) !== -1;\n}\n/**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level) {\n if (level === 'warn')\n return Severity.Warning;\n if (isSupportedSeverity(level)) {\n return level;\n }\n return Severity.Log;\n}\n//# sourceMappingURL=severity.js.map","/**\n * Converts an HTTP status code to sentry status {@link EventStatus}.\n *\n * @param code number HTTP status code\n * @returns EventStatus\n */\nexport function eventStatusFromHttpCode(code) {\n if (code >= 200 && code < 300) {\n return 'success';\n }\n if (code === 429) {\n return 'rate_limit';\n }\n if (code >= 400 && code < 500) {\n return 'invalid';\n }\n if (code >= 500) {\n return 'failed';\n }\n return 'unknown';\n}\n//# sourceMappingURL=status.js.map","import { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\nvar SENTRY_API_VERSION = '7';\n/**\n * Helper class to provide urls, headers and metadata that can be used to form\n * different types of requests to Sentry endpoints.\n * Supports both envelopes and regular event requests.\n *\n * @deprecated Please use APIDetails\n **/\nvar API = /** @class */ (function () {\n /** Create a new instance of API */\n function API(dsn, metadata, tunnel) {\n if (metadata === void 0) { metadata = {}; }\n this.dsn = dsn;\n this._dsnObject = makeDsn(dsn);\n this.metadata = metadata;\n this._tunnel = tunnel;\n }\n /** Returns the Dsn object. */\n API.prototype.getDsn = function () {\n return this._dsnObject;\n };\n /** Does this transport force envelopes? */\n API.prototype.forceEnvelope = function () {\n return !!this._tunnel;\n };\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n API.prototype.getBaseApiEndpoint = function () {\n return getBaseApiEndpoint(this._dsnObject);\n };\n /** Returns the store endpoint URL. */\n API.prototype.getStoreEndpoint = function () {\n return getStoreEndpoint(this._dsnObject);\n };\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n return getStoreEndpointWithUrlEncodedAuth(this._dsnObject);\n };\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getEnvelopeEndpointWithUrlEncodedAuth = function () {\n return getEnvelopeEndpointWithUrlEncodedAuth(this._dsnObject, this._tunnel);\n };\n return API;\n}());\nexport { API };\n/** Initializes API Details */\nexport function initAPIDetails(dsn, metadata, tunnel) {\n return {\n initDsn: dsn,\n metadata: metadata || {},\n dsn: makeDsn(dsn),\n tunnel: tunnel,\n };\n}\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n var protocol = dsn.protocol ? dsn.protocol + \":\" : '';\n var port = dsn.port ? \":\" + dsn.port : '';\n return protocol + \"//\" + dsn.host + port + (dsn.path ? \"/\" + dsn.path : '') + \"/api/\";\n}\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn, target) {\n return \"\" + getBaseApiEndpoint(dsn) + dsn.projectId + \"/\" + target + \"/\";\n}\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\n/** Returns the store endpoint URL. */\nfunction getStoreEndpoint(dsn) {\n return _getIngestEndpoint(dsn, 'store');\n}\n/**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getStoreEndpointWithUrlEncodedAuth(dsn) {\n return getStoreEndpoint(dsn) + \"?\" + _encodedAuth(dsn);\n}\n/** Returns the envelope endpoint URL. */\nfunction _getEnvelopeEndpoint(dsn) {\n return _getIngestEndpoint(dsn, 'envelope');\n}\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnel) {\n return tunnel ? tunnel : _getEnvelopeEndpoint(dsn) + \"?\" + _encodedAuth(dsn);\n}\n/**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\nexport function getRequestHeaders(dsn, clientName, clientVersion) {\n // CHANGE THIS to use metadata but keep clientName and clientVersion compatible\n var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n header.push(\"sentry_key=\" + dsn.publicKey);\n if (dsn.pass) {\n header.push(\"sentry_secret=\" + dsn.pass);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n}\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(dsnLike, dialogOptions) {\n var dsn = makeDsn(dsnLike);\n var endpoint = getBaseApiEndpoint(dsn) + \"embed/error-page/\";\n var encodedOptions = \"dsn=\" + dsnToString(dsn);\n for (var key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions += \"&name=\" + encodeURIComponent(dialogOptions.user.name);\n }\n if (dialogOptions.user.email) {\n encodedOptions += \"&email=\" + encodeURIComponent(dialogOptions.user.email);\n }\n }\n else {\n encodedOptions += \"&\" + encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]);\n }\n }\n return endpoint + \"?\" + encodedOptions;\n}\n//# sourceMappingURL=api.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { addNonEnumerableProperty, logger } from '@sentry/utils';\nexport var installedIntegrations = [];\n/**\n * @private\n */\nfunction filterDuplicates(integrations) {\n return integrations.reduce(function (acc, integrations) {\n if (acc.every(function (accIntegration) { return integrations.name !== accIntegration.name; })) {\n acc.push(integrations);\n }\n return acc;\n }, []);\n}\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && __spread(options.defaultIntegrations)) || [];\n var userIntegrations = options.integrations;\n var integrations = __spread(filterDuplicates(defaultIntegrations));\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = __spread(integrations.filter(function (integrations) {\n return userIntegrations.every(function (userIntegration) { return userIntegration.name !== integrations.name; });\n }), filterDuplicates(userIntegrations));\n }\n else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(function (i) { return i.name; });\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push.apply(integrations, __spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));\n }\n return integrations;\n}\n/** Setup given integration */\nexport function setupIntegration(integration) {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(\"Integration installed: \" + integration.name);\n}\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options) {\n var integrations = {};\n getIntegrationsToSetup(options).forEach(function (integration) {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n // set the `initialized` flag so we don't run through the process again unecessarily; use `Object.defineProperty`\n // because by default it creates a property which is nonenumerable, which we want since `initialized` shouldn't be\n // considered a member of the index the way the actual integrations are\n addNonEnumerableProperty(integrations, 'initialized', true);\n return integrations;\n}\n//# sourceMappingURL=integration.js.map","import { __assign, __read, __spread, __values } from \"tslib\";\n/* eslint-disable max-lines */\nimport { Scope } from '@sentry/hub';\nimport { checkOrSetAlreadyCaught, dateTimestampInSeconds, isDebugBuild, isPlainObject, isPrimitive, isThenable, logger, makeDsn, normalize, rejectedSyncPromise, resolvedSyncPromise, SentryError, SyncPromise, truncate, uuid4, } from '@sentry/utils';\nimport { setupIntegrations } from './integration';\nvar ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient<NodeBackend, NodeOptions> {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nvar BaseClient = /** @class */ (function () {\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n function BaseClient(backendClass, options) {\n /** Array of used integrations. */\n this._integrations = {};\n /** Number of calls being processed */\n this._numProcessing = 0;\n this._backend = new backendClass(options);\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n }\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseClient.prototype.captureException = function (exception, hint, scope) {\n var _this = this;\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n var eventId = hint && hint.event_id;\n this._process(this._getBackend()\n .eventFromException(exception, hint)\n .then(function (event) { return _this._captureEvent(event, hint, scope); })\n .then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n var promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(String(message), level, hint)\n : this._getBackend().eventFromException(message, hint);\n this._process(promisedEvent\n .then(function (event) { return _this._captureEvent(event, hint, scope); })\n .then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureEvent = function (event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n var eventId = hint && hint.event_id;\n this._process(this._captureEvent(event, hint, scope).then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureSession = function (session) {\n if (!this._isEnabled()) {\n if (isDebugBuild()) {\n logger.warn('SDK not enabled, will not capture session.');\n }\n return;\n }\n if (!(typeof session.release === 'string')) {\n if (isDebugBuild()) {\n logger.warn('Discarded session because of missing or non-string release');\n }\n }\n else {\n this._sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n session.update({ init: false });\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getDsn = function () {\n return this._dsn;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getOptions = function () {\n return this._options;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getTransport = function () {\n return this._getBackend().getTransport();\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.flush = function (timeout) {\n var _this = this;\n return this._isClientDoneProcessing(timeout).then(function (clientFinished) {\n return _this.getTransport()\n .close(timeout)\n .then(function (transportFlushed) { return clientFinished && transportFlushed; });\n });\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.close = function (timeout) {\n var _this = this;\n return this.flush(timeout).then(function (result) {\n _this.getOptions().enabled = false;\n return result;\n });\n };\n /**\n * Sets up the integrations\n */\n BaseClient.prototype.setupIntegrations = function () {\n if (this._isEnabled() && !this._integrations.initialized) {\n this._integrations = setupIntegrations(this._options);\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getIntegration = function (integration) {\n try {\n return this._integrations[integration.id] || null;\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n return null;\n }\n };\n /** Updates existing session based on the provided event */\n BaseClient.prototype._updateSessionFromEvent = function (session, event) {\n var e_1, _a;\n var crashed = false;\n var errored = false;\n var exceptions = event.exception && event.exception.values;\n if (exceptions) {\n errored = true;\n try {\n for (var exceptions_1 = __values(exceptions), exceptions_1_1 = exceptions_1.next(); !exceptions_1_1.done; exceptions_1_1 = exceptions_1.next()) {\n var ex = exceptions_1_1.value;\n var mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (exceptions_1_1 && !exceptions_1_1.done && (_a = exceptions_1.return)) _a.call(exceptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n var sessionNonTerminal = session.status === 'ok';\n var shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n if (shouldUpdateAndSend) {\n session.update(__assign(__assign({}, (crashed && { status: 'crashed' })), { errors: session.errors || Number(errored || crashed) }));\n this.captureSession(session);\n }\n };\n /** Deliver captured session to Sentry */\n BaseClient.prototype._sendSession = function (session) {\n this._getBackend().sendSession(session);\n };\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n BaseClient.prototype._isClientDoneProcessing = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var ticked = 0;\n var tick = 1;\n var interval = setInterval(function () {\n if (_this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n }\n else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n };\n /** Returns the current backend. */\n BaseClient.prototype._getBackend = function () {\n return this._backend;\n };\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n BaseClient.prototype._isEnabled = function () {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n };\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n var _this = this;\n var _a = this.getOptions().normalizeDepth, normalizeDepth = _a === void 0 ? 3 : _a;\n var prepared = __assign(__assign({}, event), { event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()), timestamp: event.timestamp || dateTimestampInSeconds() });\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n var finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n // We prepare the result here with a resolved Event.\n var result = resolvedSyncPromise(prepared);\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n return result.then(function (evt) {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return _this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n };\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n BaseClient.prototype._normalizeEvent = function (event, depth) {\n if (!event) {\n return null;\n }\n var normalized = __assign(__assign(__assign(__assign(__assign({}, event), (event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(function (b) { return (__assign(__assign({}, b), (b.data && {\n data: normalize(b.data, depth),\n }))); }),\n })), (event.user && {\n user: normalize(event.user, depth),\n })), (event.contexts && {\n contexts: normalize(event.contexts, depth),\n })), (event.extra && {\n extra: normalize(event.extra, depth),\n }));\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n event.sdkProcessingMetadata = __assign(__assign({}, event.sdkProcessingMetadata), { baseClientNormalized: true });\n return normalized;\n };\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n BaseClient.prototype._applyClientOptions = function (event) {\n var options = this.getOptions();\n var environment = options.environment, release = options.release, dist = options.dist, _a = options.maxValueLength, maxValueLength = _a === void 0 ? 250 : _a;\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n var exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n var request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n };\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n BaseClient.prototype._applyIntegrationsMetadata = function (event) {\n var integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = __spread((event.sdk.integrations || []), integrationsArray);\n }\n };\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n BaseClient.prototype._sendEvent = function (event) {\n this._getBackend().sendEvent(event);\n };\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n BaseClient.prototype._captureEvent = function (event, hint, scope) {\n return this._processEvent(event, hint, scope).then(function (finalEvent) {\n return finalEvent.event_id;\n }, function (reason) {\n logger.error(reason);\n return undefined;\n });\n };\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n BaseClient.prototype._processEvent = function (event, hint, scope) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n var transport = this.getTransport();\n function recordLostEvent(outcome, category) {\n if (transport.recordLostEvent) {\n transport.recordLostEvent(outcome, category);\n }\n }\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n var isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n recordLostEvent('sample_rate', 'event');\n return rejectedSyncPromise(new SentryError(\"Discarding event because it's not included in the random sample (sampling rate = \" + sampleRate + \")\"));\n }\n return this._prepareEvent(event, scope, hint)\n .then(function (prepared) {\n if (prepared === null) {\n recordLostEvent('event_processor', event.type || 'event');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n var beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(function (processedEvent) {\n if (processedEvent === null) {\n recordLostEvent('before_send', event.type || 'event');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n var session = scope && scope.getSession && scope.getSession();\n if (!isTransaction && session) {\n _this._updateSessionFromEvent(session, processedEvent);\n }\n _this._sendEvent(processedEvent);\n return processedEvent;\n })\n .then(null, function (reason) {\n if (reason instanceof SentryError) {\n throw reason;\n }\n _this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\"Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: \" + reason);\n });\n };\n /**\n * Occupies the client with processing and event\n */\n BaseClient.prototype._process = function (promise) {\n var _this = this;\n this._numProcessing += 1;\n void promise.then(function (value) {\n _this._numProcessing -= 1;\n return value;\n }, function (reason) {\n _this._numProcessing -= 1;\n return reason;\n });\n };\n return BaseClient;\n}());\nexport { BaseClient };\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv) {\n var nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(function (event) {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n }, function (e) {\n throw new SentryError(\"beforeSend rejected with \" + e);\n });\n }\n else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n//# sourceMappingURL=baseclient.js.map","import { resolvedSyncPromise } from '@sentry/utils';\n/** Noop transport */\nvar NoopTransport = /** @class */ (function () {\n function NoopTransport() {\n }\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.sendEvent = function (_) {\n return resolvedSyncPromise({\n reason: \"NoopTransport: Event has been skipped because no Dsn is configured.\",\n status: 'skipped',\n });\n };\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.close = function (_) {\n return resolvedSyncPromise(true);\n };\n return NoopTransport;\n}());\nexport { NoopTransport };\n//# sourceMappingURL=noop.js.map","import { isDebugBuild, logger, SentryError } from '@sentry/utils';\nimport { NoopTransport } from './transports/noop';\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nvar BaseBackend = /** @class */ (function () {\n /** Creates a new backend instance. */\n function BaseBackend(options) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n throw new SentryError('Backend has to implement `eventFromException` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendEvent = function (event) {\n void this._transport.sendEvent(event).then(null, function (reason) {\n if (isDebugBuild()) {\n logger.error(\"Error while sending event: \" + reason);\n }\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendSession = function (session) {\n if (!this._transport.sendSession) {\n if (isDebugBuild()) {\n logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n }\n return;\n }\n void this._transport.sendSession(session).then(null, function (reason) {\n if (isDebugBuild()) {\n logger.error(\"Error while sending session: \" + reason);\n }\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.getTransport = function () {\n return this._transport;\n };\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n BaseBackend.prototype._setupTransport = function () {\n return new NoopTransport();\n };\n return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { dsnToString, normalize } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth, getStoreEndpointWithUrlEncodedAuth } from './api';\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(api) {\n if (!api.metadata || !api.metadata.sdk) {\n return;\n }\n var _a = api.metadata.sdk, name = _a.name, version = _a.version;\n return { name: name, version: version };\n}\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = __spread((event.sdk.integrations || []), (sdkInfo.integrations || []));\n event.sdk.packages = __spread((event.sdk.packages || []), (sdkInfo.packages || []));\n return event;\n}\n/** Creates a SentryRequest from a Session. */\nexport function sessionToSentryRequest(session, api) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n var envelopeHeaders = JSON.stringify(__assign(__assign({ sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })), (!!api.tunnel && { dsn: dsnToString(api.dsn) })));\n // I know this is hacky but we don't want to add `session` to request type since it's never rate limited\n var type = 'aggregates' in session ? 'sessions' : 'session';\n var itemHeaders = JSON.stringify({\n type: type,\n });\n return {\n body: envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + JSON.stringify(session),\n type: type,\n url: getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel),\n };\n}\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event, api) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n var eventType = event.type || 'event';\n var useEnvelope = eventType === 'transaction' || !!api.tunnel;\n var transactionSampling = (event.sdkProcessingMetadata || {}).transactionSampling;\n var _a = transactionSampling || {}, samplingMethod = _a.method, sampleRate = _a.rate;\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809 and\n // https://github.com/getsentry/sentry-javascript/pull/4425. TL;DR: even though we normalize all events (which should\n // prevent this), something is causing `JSON.stringify` to throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for `skippedNormalization` and pull out the companion hack in the browser playwright tests\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n }\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n var body;\n try {\n // 99.9% of events should get through just fine - no change in behavior for them\n body = JSON.stringify(event);\n }\n catch (err) {\n // Record data about the error without replacing original event data, then force renormalization\n event.tags.JSONStringifyError = true;\n event.extra.JSONStringifyError = err;\n try {\n body = JSON.stringify(normalize(event));\n }\n catch (newErr) {\n // At this point even renormalization hasn't worked, meaning something about the event data has gone very wrong.\n // Time to cut our losses and record only the new error. With luck, even in the problematic cases we're trying to\n // debug with this hack, we won't ever land here.\n var innerErr = newErr;\n body = JSON.stringify({\n message: 'JSON.stringify error after renormalization',\n // setting `extra: { innerErr }` here for some reason results in an empty object, so unpack manually\n extra: { message: innerErr.message, stack: innerErr.stack },\n });\n }\n }\n var req = {\n // this is the relevant line of code before the hack was added, to make it easy to undo said hack once we've solved\n // the mystery\n // body: JSON.stringify(sdkInfo ? enhanceEventWithSdkInfo(event, api.metadata.sdk) : event),\n body: body,\n type: eventType,\n url: useEnvelope\n ? getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel)\n : getStoreEndpointWithUrlEncodedAuth(api.dsn),\n };\n // https://develop.sentry.dev/sdk/envelopes/\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n var envelopeHeaders = JSON.stringify(__assign(__assign({ event_id: event.event_id, sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })), (!!api.tunnel && { dsn: dsnToString(api.dsn) })));\n var itemHeaders = JSON.stringify({\n type: eventType,\n // TODO: Right now, sampleRate may or may not be defined (it won't be in the cases of inheritance and\n // explicitly-set sampling decisions). Are we good with that?\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n });\n // The trailing newline is optional. We intentionally don't send it to avoid\n // sending unnecessary bytes.\n //\n // const envelope = `${envelopeHeaders}\\n${itemHeaders}\\n${req.body}\\n`;\n var envelope = envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + req.body;\n req.body = envelope;\n }\n return req;\n}\n//# sourceMappingURL=request.js.map","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass, options) {\n if (options.debug === true) {\n logger.enable();\n }\n var hub = getCurrentHub();\n var scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n//# sourceMappingURL=sdk.js.map","export var SDK_VERSION = '6.17.4';\n//# sourceMappingURL=version.js.map","import { getOriginalFunction } from '@sentry/utils';\nvar originalFunctionToString;\n/** Patch toString calls to return proper name for wrapped functions */\nvar FunctionToString = /** @class */ (function () {\n function FunctionToString() {\n /**\n * @inheritDoc\n */\n this.name = FunctionToString.id;\n }\n /**\n * @inheritDoc\n */\n FunctionToString.prototype.setupOnce = function () {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n };\n /**\n * @inheritDoc\n */\n FunctionToString.id = 'FunctionToString';\n return FunctionToString;\n}());\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { getEventDescription, isDebugBuild, isMatchingPattern, logger } from '@sentry/utils';\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n/** Inbound filters configurable by the user */\nvar InboundFilters = /** @class */ (function () {\n function InboundFilters(_options) {\n if (_options === void 0) { _options = {}; }\n this._options = _options;\n /**\n * @inheritDoc\n */\n this.name = InboundFilters.id;\n }\n /**\n * @inheritDoc\n */\n InboundFilters.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n var hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n // This checks prevents most of the occurrences of the bug linked below:\n // https://github.com/getsentry/sentry-javascript/issues/2622\n // The bug is caused by multiple SDK instances, where one is minified and one is using non-mangled code.\n // Unfortunatelly we cannot fix it reliably (thus reserved property in rollup's terser config),\n // as we cannot force people using multiple instances in their apps to sync SDK versions.\n var options = typeof self._mergeOptions === 'function' ? self._mergeOptions(clientOptions) : {};\n if (typeof self._shouldDropEvent !== 'function') {\n return event;\n }\n return self._shouldDropEvent(event, options) ? null : event;\n }\n return event;\n });\n };\n /** JSDoc */\n InboundFilters.prototype._shouldDropEvent = function (event, options) {\n if (this._isSentryError(event, options)) {\n if (isDebugBuild()) {\n logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n }\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n if (isDebugBuild()) {\n logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n }\n return true;\n }\n if (this._isDeniedUrl(event, options)) {\n if (isDebugBuild()) {\n logger.warn(\"Event dropped due to being matched by `denyUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n }\n return true;\n }\n if (!this._isAllowedUrl(event, options)) {\n if (isDebugBuild()) {\n logger.warn(\"Event dropped due to not being matched by `allowUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n }\n return true;\n }\n return false;\n };\n /** JSDoc */\n InboundFilters.prototype._isSentryError = function (event, options) {\n if (!options.ignoreInternal) {\n return false;\n }\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n }\n catch (e) {\n // ignore\n }\n return false;\n };\n /** JSDoc */\n InboundFilters.prototype._isIgnoredError = function (event, options) {\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n return this._getPossibleEventMessages(event).some(function (message) {\n // Not sure why TypeScript complains here...\n return options.ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });\n });\n };\n /** JSDoc */\n InboundFilters.prototype._isDeniedUrl = function (event, options) {\n // TODO: Use Glob instead?\n if (!options.denyUrls || !options.denyUrls.length) {\n return false;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? false : options.denyUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._isAllowedUrl = function (event, options) {\n // TODO: Use Glob instead?\n if (!options.allowUrls || !options.allowUrls.length) {\n return true;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? true : options.allowUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._mergeOptions = function (clientOptions) {\n if (clientOptions === void 0) { clientOptions = {}; }\n return {\n allowUrls: __spread((this._options.whitelistUrls || []), (this._options.allowUrls || []), (clientOptions.whitelistUrls || []), (clientOptions.allowUrls || [])),\n denyUrls: __spread((this._options.blacklistUrls || []), (this._options.denyUrls || []), (clientOptions.blacklistUrls || []), (clientOptions.denyUrls || [])),\n ignoreErrors: __spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n };\n };\n /** JSDoc */\n InboundFilters.prototype._getPossibleEventMessages = function (event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n var _a = (event.exception.values && event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;\n return [\"\" + value, type + \": \" + value];\n }\n catch (oO) {\n if (isDebugBuild()) {\n logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n }\n return [];\n }\n }\n return [];\n };\n /** JSDoc */\n InboundFilters.prototype._getLastValidUrl = function (frames) {\n if (frames === void 0) { frames = []; }\n for (var i = frames.length - 1; i >= 0; i--) {\n var frame = frames[i];\n if (frame && frame.filename !== '<anonymous>' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n return null;\n };\n /** JSDoc */\n InboundFilters.prototype._getEventFilterUrl = function (event) {\n try {\n if (event.stacktrace) {\n return this._getLastValidUrl(event.stacktrace.frames);\n }\n var frames_1;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames_1 = event.exception.values[0].stacktrace.frames;\n }\n catch (e) {\n // ignore\n }\n return frames_1 ? this._getLastValidUrl(frames_1) : null;\n }\n catch (oO) {\n if (isDebugBuild()) {\n logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n }\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n InboundFilters.id = 'InboundFilters';\n return InboundFilters;\n}());\nexport { InboundFilters };\n//# sourceMappingURL=inboundfilters.js.map","/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\nimport { __assign, __read } from \"tslib\";\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nvar geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nvar chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nvar reactMinifiedRegexp = /Minified React error #\\d+;/i;\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function computeStackTrace(ex) {\n var stack = null;\n var popSize = 0;\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n popSize = ex.framesToPop;\n }\n else if (reactMinifiedRegexp.test(ex.message)) {\n popSize = 1;\n }\n }\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nfunction computeStackTraceFromStackProp(ex) {\n var _a, _b;\n if (!ex || !ex.stack) {\n return null;\n }\n var stack = [];\n var lines = ex.stack.split('\\n');\n var isEval;\n var submatch;\n var parts;\n var element;\n for (var i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n // Arpad: Working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n var url = parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2];\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n var func = parts[1] || UNKNOWN_FUNCTION;\n _a = __read(extractSafariExtensionDetails(func, url), 2), func = _a[0], url = _a[1];\n element = {\n url: url,\n func: func,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || \"eval\";\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n }\n else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n var url = parts[3];\n var func = parts[1] || UNKNOWN_FUNCTION;\n _b = __read(extractSafariExtensionDetails(func, url), 2), func = _b[0], url = _b[1];\n element = {\n url: url,\n func: func,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n }\n else {\n continue;\n }\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction computeStackTraceFromStacktraceProp(ex) {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n var opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\\((.*)\\))? in (.*):\\s*$/i;\n var lines = stacktrace.split('\\n');\n var stack = [];\n var parts;\n for (var line = 0; line < lines.length; line += 2) {\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n }\n else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunatelly \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nvar extractSafariExtensionDetails = function (func, url) {\n var isSafariExtension = func.indexOf('safari-extension') !== -1;\n var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? \"safari-extension:\" + url : \"safari-web-extension:\" + url,\n ]\n : [func, url];\n};\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace, popSize) {\n try {\n return __assign(__assign({}, stacktrace), { stack: stacktrace.stack.slice(popSize) });\n }\n catch (e) {\n return stacktrace;\n }\n}\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractMessage(ex) {\n var message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n//# sourceMappingURL=tracekit.js.map","import { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\nimport { computeStackTrace } from './tracekit';\nvar STACKTRACE_LIMIT = 50;\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace) {\n var frames = prepareFramesForEvent(stacktrace.stack);\n var exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n if (frames && frames.length) {\n exception.stacktrace = { frames: frames };\n }\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n return exception;\n}\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception, syntheticException, rejection) {\n var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: \"Non-Error \" + (rejection ? 'promise rejection' : 'exception') + \" captured with keys: \" + extractExceptionKeysForMessage(exception),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n if (syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace) {\n var exception = exceptionFromStacktrace(stacktrace);\n return {\n exception: {\n values: [exception],\n },\n };\n}\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack) {\n if (!stack || !stack.length) {\n return [];\n }\n var localStack = stack;\n var firstFrameFunction = localStack[0].func || '';\n var lastFrameFunction = localStack[localStack.length - 1].func || '';\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(function (frame) { return ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }); })\n .reverse();\n}\n//# sourceMappingURL=parsers.js.map","import { __assign } from \"tslib\";\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, resolvedSyncPromise, } from '@sentry/utils';\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(options, exception, hint) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(options, message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(message, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(exception, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event;\n if (isErrorEvent(exception) && exception.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception;\n // eslint-disable-next-line no-param-reassign\n exception = errorEvent.error;\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception)) {\n var domException = exception;\n if ('stack' in exception) {\n event = eventFromStacktrace(computeStackTrace(exception));\n }\n else {\n var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? name_1 + \": \" + domException.message : name_1;\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = __assign(__assign({}, event.tags), { 'DOMException.code': \"\" + domException.code });\n }\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n var objectException = exception;\n event = eventFromPlainObject(objectException, syntheticException, options.isRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception, syntheticException, options);\n addExceptionTypeValue(event, \"\" + exception, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromString(input, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event = {\n message: input,\n };\n if (options.attachStacktrace && syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n//# sourceMappingURL=eventbuilder.js.map","import { forget, getGlobalObject, isDebugBuild, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\nvar global = getGlobalObject();\nvar cachedFetchImpl;\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation() {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n /* eslint-disable @typescript-eslint/unbound-method */\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n var document = global.document;\n var fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === \"function\") {\n try {\n var sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n var contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n }\n catch (e) {\n if (isDebugBuild()) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n }\n return (cachedFetchImpl = fetchImpl.bind(global));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nexport function sendReport(url, body) {\n var isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n var hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n var sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n return sendBeacon(url, body);\n }\n if (supportsFetch()) {\n var fetch_1 = getNativeFetchImplementation();\n return forget(fetch_1(url, {\n body: body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }));\n }\n}\n//# sourceMappingURL=utils.js.map","import { __assign, __read, __values } from \"tslib\";\nimport { eventToSentryRequest, getEnvelopeEndpointWithUrlEncodedAuth, getStoreEndpointWithUrlEncodedAuth, initAPIDetails, sessionToSentryRequest, } from '@sentry/core';\nimport { dateTimestampInSeconds, dsnToString, eventStatusFromHttpCode, getGlobalObject, isDebugBuild, logger, makePromiseBuffer, parseRetryAfterHeader, } from '@sentry/utils';\nimport { sendReport } from './utils';\nfunction requestTypeToCategory(ty) {\n var tyStr = ty;\n return tyStr === 'event' ? 'error' : tyStr;\n}\nvar global = getGlobalObject();\n/** Base Transport class implementation */\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport(options) {\n var _this = this;\n this.options = options;\n /** A simple buffer holding all requests. */\n this._buffer = makePromiseBuffer(30);\n /** Locks transport after receiving rate limits in a response */\n this._rateLimits = {};\n this._outcomes = {};\n this._api = initAPIDetails(options.dsn, options._metadata, options.tunnel);\n // eslint-disable-next-line deprecation/deprecation\n this.url = getStoreEndpointWithUrlEncodedAuth(this._api.dsn);\n if (this.options.sendClientReports && global.document) {\n global.document.addEventListener('visibilitychange', function () {\n if (global.document.visibilityState === 'hidden') {\n _this._flushOutcomes();\n }\n });\n }\n }\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendEvent = function (event) {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendSession = function (session) {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.close = function (timeout) {\n return this._buffer.drain(timeout);\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.recordLostEvent = function (reason, category) {\n var _a;\n if (!this.options.sendClientReports) {\n return;\n }\n // We want to track each category (event, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial<Record<SentryRequestType, Partial<Record<Outcome, number>>>>`\n var key = requestTypeToCategory(category) + \":\" + reason;\n logger.log(\"Adding outcome: \" + key);\n this._outcomes[key] = (_a = this._outcomes[key], (_a !== null && _a !== void 0 ? _a : 0)) + 1;\n };\n /**\n * Send outcomes as an envelope\n */\n BaseTransport.prototype._flushOutcomes = function () {\n if (!this.options.sendClientReports) {\n return;\n }\n var outcomes = this._outcomes;\n this._outcomes = {};\n // Nothing to send\n if (!Object.keys(outcomes).length) {\n logger.log('No outcomes to flush');\n return;\n }\n logger.log(\"Flushing outcomes:\\n\" + JSON.stringify(outcomes, null, 2));\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._api.dsn, this._api.tunnel);\n // Envelope header is required to be at least an empty object\n var envelopeHeader = JSON.stringify(__assign({}, (this._api.tunnel && { dsn: dsnToString(this._api.dsn) })));\n var itemHeaders = JSON.stringify({\n type: 'client_report',\n });\n var item = JSON.stringify({\n timestamp: dateTimestampInSeconds(),\n discarded_events: Object.keys(outcomes).map(function (key) {\n var _a = __read(key.split(':'), 2), category = _a[0], reason = _a[1];\n return {\n reason: reason,\n category: category,\n quantity: outcomes[key],\n };\n }),\n });\n var envelope = envelopeHeader + \"\\n\" + itemHeaders + \"\\n\" + item;\n try {\n sendReport(url, envelope);\n }\n catch (e) {\n logger.error(e);\n }\n };\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n BaseTransport.prototype._handleResponse = function (_a) {\n var requestType = _a.requestType, response = _a.response, headers = _a.headers, resolve = _a.resolve, reject = _a.reject;\n var status = eventStatusFromHttpCode(response.status);\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n var limited = this._handleRateLimit(headers);\n if (limited && isDebugBuild()) {\n logger.warn(\"Too many \" + requestType + \" requests, backing off until: \" + this._disabledUntil(requestType));\n }\n if (status === 'success') {\n resolve({ status: status });\n return;\n }\n reject(response);\n };\n /**\n * Gets the time that given category is disabled until for rate limiting\n */\n BaseTransport.prototype._disabledUntil = function (requestType) {\n var category = requestTypeToCategory(requestType);\n return this._rateLimits[category] || this._rateLimits.all;\n };\n /**\n * Checks if a category is rate limited\n */\n BaseTransport.prototype._isRateLimited = function (requestType) {\n return this._disabledUntil(requestType) > new Date(Date.now());\n };\n /**\n * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n */\n BaseTransport.prototype._handleRateLimit = function (headers) {\n var e_1, _a, e_2, _b;\n var now = Date.now();\n var rlHeader = headers['x-sentry-rate-limits'];\n var raHeader = headers['retry-after'];\n if (rlHeader) {\n try {\n // rate limit headers are of the form\n // <header>,<header>,..\n // where each <header> is of the form\n // <retry_after>: <categories>: <scope>: <reason_code>\n // where\n // <retry_after> is a delay in ms\n // <categories> is the event type(s) (error, transaction, etc) being rate limited and is of the form\n // <category>;<category>;...\n // <scope> is what's being limited (org, project, or key) - ignored by SDK\n // <reason_code> is an arbitrary string like \"org_quota\" - ignored by SDK\n for (var _c = __values(rlHeader.trim().split(',')), _d = _c.next(); !_d.done; _d = _c.next()) {\n var limit = _d.value;\n var parameters = limit.split(':', 2);\n var headerDelay = parseInt(parameters[0], 10);\n var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n try {\n for (var _e = (e_2 = void 0, __values(parameters[1].split(';'))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var category = _f.value;\n this._rateLimits[category || 'all'] = new Date(now + delay);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n }\n else if (raHeader) {\n this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n return true;\n }\n return false;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { __extends } from \"tslib\";\nimport { SentryError, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\nimport { getNativeFetchImplementation } from './utils';\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport(options, fetchImpl) {\n if (fetchImpl === void 0) { fetchImpl = getNativeFetchImplementation(); }\n var _this = _super.call(this, options) || this;\n _this._fetch = fetchImpl;\n return _this;\n }\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n FetchTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n var _this = this;\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: \"Transport for \" + sentryRequest.type + \" requests locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n status: 429,\n });\n }\n var options = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : ''),\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n return this._buffer\n .add(function () {\n return new SyncPromise(function (resolve, reject) {\n void _this._fetch(sentryRequest.url, options)\n .then(function (response) {\n var headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n _this._handleResponse({\n requestType: sentryRequest.type,\n response: response,\n headers: headers,\n resolve: resolve,\n reject: reject,\n });\n })\n .catch(reject);\n });\n })\n .then(undefined, function (reason) {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n _this.recordLostEvent('queue_overflow', sentryRequest.type);\n }\n else {\n _this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import { __extends } from \"tslib\";\nimport { SentryError, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n __extends(XHRTransport, _super);\n function XHRTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n XHRTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n var _this = this;\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: \"Transport for \" + sentryRequest.type + \" requests locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n status: 429,\n });\n }\n return this._buffer\n .add(function () {\n return new SyncPromise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n var headers = {\n 'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': request.getResponseHeader('Retry-After'),\n };\n _this._handleResponse({ requestType: sentryRequest.type, response: request, headers: headers, resolve: resolve, reject: reject });\n }\n };\n request.open('POST', sentryRequest.url);\n for (var header in _this.options.headers) {\n if (Object.prototype.hasOwnProperty.call(_this.options.headers, header)) {\n request.setRequestHeader(header, _this.options.headers[header]);\n }\n }\n request.send(sentryRequest.body);\n });\n })\n .then(undefined, function (reason) {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n _this.recordLostEvent('queue_overflow', sentryRequest.type);\n }\n else {\n _this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseBackend } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n __extends(BrowserBackend, _super);\n function BrowserBackend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromException = function (exception, hint) {\n return eventFromException(this._options, exception, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n return eventFromMessage(this._options, message, level, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype._setupTransport = function () {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return _super.prototype._setupTransport.call(this);\n }\n var transportOptions = __assign(__assign({}, this._options.transportOptions), { dsn: this._options.dsn, tunnel: this._options.tunnel, sendClientReports: this._options.sendClientReports, _metadata: this._options._metadata });\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n };\n return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","import { __assign } from \"tslib\";\nimport { captureException, getReportDialogEndpoint, withScope } from '@sentry/core';\nimport { addExceptionMechanism, addExceptionTypeValue, addNonEnumerableProperty, getGlobalObject, getOriginalFunction, isDebugBuild, logger, markFunctionWrapped, } from '@sentry/utils';\nvar global = getGlobalObject();\nvar ignoreOnError = 0;\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n/**\n * @hidden\n */\nexport function ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(function () {\n ignoreOnError -= 1;\n });\n}\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(fn, options, before) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n if (options === void 0) { options = {}; }\n if (typeof fn !== 'function') {\n return fn;\n }\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n var wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n }\n catch (ex) {\n ignoreNextOnError();\n withScope(function (scope) {\n scope.addEventProcessor(function (event) {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n event.extra = __assign(__assign({}, event.extra), { arguments: args });\n return event;\n });\n captureException(ex);\n });\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n }\n catch (_oO) { } // eslint-disable-line no-empty\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get: function () {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n }\n catch (_oO) { }\n return sentryWrapped;\n}\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!global.document) {\n return;\n }\n if (!options.eventId) {\n if (isDebugBuild()) {\n logger.error(\"Missing eventId option in showReportDialog call\");\n }\n return;\n }\n if (!options.dsn) {\n if (isDebugBuild()) {\n logger.error(\"Missing dsn option in showReportDialog call\");\n }\n return;\n }\n var script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(options.dsn, options);\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n var injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n }\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __read } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addInstrumentationHandler, getLocationHref, isDebugBuild, isErrorEvent, isPrimitive, isString, logger, } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n/** Global handlers */\nvar GlobalHandlers = /** @class */ (function () {\n /** JSDoc */\n function GlobalHandlers(options) {\n /**\n * @inheritDoc\n */\n this.name = GlobalHandlers.id;\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n this._options = __assign({ onerror: true, onunhandledrejection: true }, options);\n }\n /**\n * @inheritDoc\n */\n GlobalHandlers.prototype.setupOnce = function () {\n Error.stackTraceLimit = 50;\n var options = this._options;\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (var key in options) {\n var installFunc = this._installFunc[key];\n if (installFunc && options[key]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key] = undefined;\n }\n }\n };\n /**\n * @inheritDoc\n */\n GlobalHandlers.id = 'GlobalHandlers';\n return GlobalHandlers;\n}());\nexport { GlobalHandlers };\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler('error', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function (data) {\n var _a = __read(getHubAndAttachStacktrace(), 2), hub = _a[0], attachStacktrace = _a[1];\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n var msg = data.msg, url = data.url, line = data.line, column = data.column, error = data.error;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n var event = error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(eventFromUnknownInput(error || msg, undefined, {\n attachStacktrace: attachStacktrace,\n isRejection: false,\n }), url, line, column);\n event.level = Severity.Error;\n addMechanismAndCapture(hub, error, event, 'onerror');\n });\n}\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler('unhandledrejection', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function (e) {\n var _a = __read(getHubAndAttachStacktrace(), 2), hub = _a[0], attachStacktrace = _a[1];\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n var error = e;\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n }\n catch (_oO) {\n // no-empty\n }\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n var event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: attachStacktrace,\n isRejection: true,\n });\n event.level = Severity.Error;\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n });\n}\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: \"Non-Error promise rejection captured with value: \" + String(reason),\n },\n ],\n },\n };\n}\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n // If 'message' is ErrorEvent, get real message from inside\n var message = isErrorEvent(msg) ? msg.message : msg;\n var name = 'Error';\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n var event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n // event.exception\n var e = (event.exception = event.exception || {});\n // event.exception.values\n var ev = (e.values = e.values || []);\n // event.exception.values[0]\n var ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n var ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n var ev0sf = (ev0s.frames = ev0s.frames || []);\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno: colno,\n filename: filename,\n function: '?',\n in_app: true,\n lineno: lineno,\n });\n }\n return event;\n}\nfunction globalHandlerLog(type) {\n if (isDebugBuild()) {\n logger.log(\"Global Handler attached: \" + type);\n }\n}\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type: type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\nfunction getHubAndAttachStacktrace() {\n var hub = getCurrentHub();\n var client = hub.getClient();\n var attachStacktrace = client && client.getOptions().attachStacktrace;\n return [hub, attachStacktrace];\n}\n//# sourceMappingURL=globalhandlers.js.map","import { __assign } from \"tslib\";\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\nimport { wrap } from '../helpers';\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function TryCatch(options) {\n /**\n * @inheritDoc\n */\n this.name = TryCatch.id;\n this._options = __assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options);\n }\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n TryCatch.prototype.setupOnce = function () {\n var global = getGlobalObject();\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n var eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n var eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n };\n /**\n * @inheritDoc\n */\n TryCatch.id = 'TryCatch';\n return TryCatch;\n}());\nexport { TryCatch };\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (callback) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.call(this, wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }));\n };\n}\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n xmlHttpRequestProps.forEach(function (prop) {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n // If Instrument integration has been called before TryCatch, get the name of original function\n var originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n return originalSend.apply(this, args);\n };\n}\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var global = getGlobalObject();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n }\n catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n return original.call(this, eventName, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n }), options);\n };\n });\n fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n return function (eventName, fn, options) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n var wrappedEventHandler = fn;\n try {\n var originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n });\n}\n//# sourceMappingURL=trycatch.js.map","import { __assign } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getEventDescription, getGlobalObject, htmlTreeAsString, parseUrl, safeJoin, severityFromString, } from '@sentry/utils';\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nvar Breadcrumbs = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Breadcrumbs(options) {\n /**\n * @inheritDoc\n */\n this.name = Breadcrumbs.id;\n this._options = __assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n }\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n Breadcrumbs.prototype.addSentryBreadcrumb = function (event) {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"sentry.\" + (event.type === 'transaction' ? 'transaction' : 'event'),\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n }, {\n event: event,\n });\n };\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n Breadcrumbs.prototype.setupOnce = function () {\n if (this._options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this._options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this._options.dom));\n }\n if (this._options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this._options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this._options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n };\n /**\n * @inheritDoc\n */\n Breadcrumbs.id = 'Breadcrumbs';\n return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData) {\n var target;\n var keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target, keyAttrs)\n : htmlTreeAsString(handlerData.event, keyAttrs);\n }\n catch (e) {\n target = '<unknown>';\n }\n if (target.length === 0) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"ui.\" + handlerData.name,\n message: target,\n }, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n }\n return _innerDomBreadcrumb;\n}\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = \"Assertion failed: \" + (safeJoin(handlerData.args.slice(1), ' ') || 'console.assert');\n breadcrumb.data.arguments = handlerData.args.slice(1);\n }\n else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n var _a = handlerData.xhr.__sentry_xhr__ || {}, method = _a.method, url = _a.url, status_code = _a.status_code, body = _a.body;\n getCurrentHub().addBreadcrumb({\n category: 'xhr',\n data: {\n method: method,\n url: url,\n status_code: status_code,\n },\n type: 'http',\n }, {\n xhr: handlerData.xhr,\n input: body,\n });\n return;\n }\n}\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n }, {\n data: handlerData.error,\n input: handlerData.args,\n });\n }\n else {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: __assign(__assign({}, handlerData.fetchData), { status_code: handlerData.response.status }),\n type: 'http',\n }, {\n input: handlerData.args,\n response: handlerData.response,\n });\n }\n}\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData) {\n var global = getGlobalObject();\n var from = handlerData.from;\n var to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n var parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from: from,\n to: to,\n },\n });\n}\n//# sourceMappingURL=breadcrumbs.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n/** Adds SDK info to an event. */\nvar LinkedErrors = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function LinkedErrors(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event, hint) {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(self._key, self._limit, event, hint) : event;\n });\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.id = 'LinkedErrors';\n return LinkedErrors;\n}());\nexport { LinkedErrors };\n/**\n * @inheritDoc\n */\nexport function _handler(key, limit, event, hint) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = _walkErrorTree(limit, hint.originalException, key);\n event.exception.values = __spread(linkedErrors, event.exception.values);\n return event;\n}\n/**\n * JSDOC\n */\nexport function _walkErrorTree(limit, error, key, stack) {\n if (stack === void 0) { stack = []; }\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n var stacktrace = computeStackTrace(error[key]);\n var exception = exceptionFromStacktrace(stacktrace);\n return _walkErrorTree(limit, error[key], key, __spread([exception], stack));\n}\n//# sourceMappingURL=linkederrors.js.map","import { __assign } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nvar global = getGlobalObject();\n/** UserAgent */\nvar UserAgent = /** @class */ (function () {\n function UserAgent() {\n /**\n * @inheritDoc\n */\n this.name = UserAgent.id;\n }\n /**\n * @inheritDoc\n */\n UserAgent.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n if (getCurrentHub().getIntegration(UserAgent)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n // grab as much info as exists and add it to the event\n var url = (event.request && event.request.url) || (global.location && global.location.href);\n var referrer = (global.document || {}).referrer;\n var userAgent = (global.navigator || {}).userAgent;\n var headers = __assign(__assign(__assign({}, (event.request && event.request.headers)), (referrer && { Referer: referrer })), (userAgent && { 'User-Agent': userAgent }));\n var request = __assign(__assign({}, (url && { url: url })), { headers: headers });\n return __assign(__assign({}, event), { request: request });\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n UserAgent.id = 'UserAgent';\n return UserAgent;\n}());\nexport { UserAgent };\n//# sourceMappingURL=useragent.js.map","import { logger } from '@sentry/utils';\n/** Deduplication filter */\nvar Dedupe = /** @class */ (function () {\n function Dedupe() {\n /**\n * @inheritDoc\n */\n this.name = Dedupe.id;\n }\n /**\n * @inheritDoc\n */\n Dedupe.prototype.setupOnce = function (addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor(function (currentEvent) {\n var self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n logger.warn(\"Event dropped due to being a duplicate of previously captured event.\");\n return null;\n }\n }\n catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n };\n /**\n * @inheritDoc\n */\n Dedupe.id = 'Dedupe';\n return Dedupe;\n}());\nexport { Dedupe };\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n return false;\n}\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n var currentMessage = currentEvent.message;\n var previousMessage = previousEvent.message;\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n if (currentMessage !== previousMessage) {\n return false;\n }\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n return true;\n}\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n var previousException = _getExceptionFromEvent(previousEvent);\n var currentException = _getExceptionFromEvent(currentEvent);\n if (!previousException || !currentException) {\n return false;\n }\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n return true;\n}\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n var currentFrames = _getFramesFromEvent(currentEvent);\n var previousFrames = _getFramesFromEvent(previousEvent);\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n currentFrames = currentFrames;\n previousFrames = previousFrames;\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n // Otherwise, compare the two\n for (var i = 0; i < previousFrames.length; i++) {\n var frameA = previousFrames[i];\n var frameB = currentFrames[i];\n if (frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function) {\n return false;\n }\n }\n return true;\n}\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n var currentFingerprint = currentEvent.fingerprint;\n var previousFingerprint = previousEvent.fingerprint;\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n currentFingerprint = currentFingerprint;\n previousFingerprint = previousFingerprint;\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n }\n catch (_oO) {\n return false;\n }\n}\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n var exception = event.exception;\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n }\n catch (_oO) {\n return undefined;\n }\n }\n else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n}\n//# sourceMappingURL=dedupe.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { injectReportDialog } from './helpers';\nimport { Breadcrumbs } from './integrations';\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nvar BrowserClient = /** @class */ (function (_super) {\n __extends(BrowserClient, _super);\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n function BrowserClient(options) {\n if (options === void 0) { options = {}; }\n var _this = this;\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n _this = _super.call(this, BrowserBackend, options) || this;\n return _this;\n }\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n BrowserClient.prototype.showReportDialog = function (options) {\n if (options === void 0) { options = {}; }\n // doesn't work without a document (React Native)\n var document = getGlobalObject().document;\n if (!document) {\n return;\n }\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n injectReportDialog(__assign(__assign({}, options), { dsn: options.dsn || this.getDsn() }));\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n event.platform = event.platform || 'javascript';\n return _super.prototype._prepareEvent.call(this, event, scope, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._sendEvent = function (event) {\n var integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n _super.prototype._sendEvent.call(this, event);\n };\n return BrowserClient;\n}(BaseClient));\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map","import { __assign } from \"tslib\";\nimport { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { addInstrumentationHandler, getGlobalObject, isDebugBuild, logger, resolvedSyncPromise } from '@sentry/utils';\nimport { BrowserClient } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\nexport var defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new UserAgent(),\n];\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options) {\n if (options === void 0) { options = {}; }\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window_1 = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n options.release = window_1.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n initAndBind(BrowserClient, options);\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options) {\n if (options === void 0) { options = {}; }\n var hub = getCurrentHub();\n var scope = hub.getScope();\n if (scope) {\n options.user = __assign(__assign({}, scope.getUser()), options.user);\n }\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n var client = hub.getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId() {\n return getCurrentHub().lastEventId();\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad() {\n // Noop\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback) {\n callback();\n}\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n if (isDebugBuild()) {\n logger.warn('Cannot flush events. No client defined.');\n }\n return resolvedSyncPromise(false);\n}\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n if (isDebugBuild()) {\n logger.warn('Cannot flush events and disable SDK. No client defined.');\n }\n return resolvedSyncPromise(false);\n}\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn) {\n return internalWrap(fn)();\n}\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n var window = getGlobalObject();\n var document = window.document;\n if (typeof document === 'undefined') {\n if (isDebugBuild()) {\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n }\n return;\n }\n var hub = getCurrentHub();\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', function (_a) {\n var from = _a.from, to = _a.to;\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n//# sourceMappingURL=sdk.js.map","export var DEFAULT_HOOKS = ['activate', 'mount', 'update'];\n//# sourceMappingURL=constants.js.map","// Vendored directly from https://github.com/vuejs/vue/blob/master/src/core/util/debug.js with types only changes.\nvar classifyRE = /(?:^|[-_])(\\w)/g;\nvar classify = function (str) { return str.replace(classifyRE, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, ''); };\nvar ROOT_COMPONENT_NAME = '<Root>';\nvar ANONYMOUS_COMPONENT_NAME = '<Anonymous>';\nvar repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) {\n res += str;\n }\n if (n > 1) {\n str += str; // eslint-disable-line no-param-reassign\n }\n n >>= 1; // eslint-disable-line no-bitwise, no-param-reassign\n }\n return res;\n};\nexport var formatComponentName = function (vm, includeFile) {\n if (!vm) {\n return ANONYMOUS_COMPONENT_NAME;\n }\n if (vm.$root === vm) {\n return ROOT_COMPONENT_NAME;\n }\n var options = vm.$options;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n if (match) {\n name = match[1];\n }\n }\n return ((name ? \"<\" + classify(name) + \">\" : ANONYMOUS_COMPONENT_NAME) + (file && includeFile !== false ? \" at \" + file : \"\"));\n};\nexport var generateComponentTrace = function (vm) {\n var _a, _b, _c;\n if ((((_a = vm) === null || _a === void 0 ? void 0 : _a._isVue) || ((_b = vm) === null || _b === void 0 ? void 0 : _b.__isVue)) && ((_c = vm) === null || _c === void 0 ? void 0 : _c.$parent)) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var last = tree[tree.length - 1];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence += 1;\n vm = vm.$parent; // eslint-disable-line no-param-reassign\n continue;\n }\n else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent; // eslint-disable-line no-param-reassign\n }\n var formattedTree = tree\n .map(function (vm, i) {\n return \"\" + ((i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) +\n (Array.isArray(vm)\n ? formatComponentName(vm[0]) + \"... (\" + vm[1] + \" recursive calls)\"\n : formatComponentName(vm)));\n })\n .join('\\n');\n return \"\\n\\nfound in\\n\\n\" + formattedTree;\n }\n return \"\\n\\n(found in \" + formatComponentName(vm) + \")\";\n};\n//# sourceMappingURL=components.js.map","import { getCurrentHub } from '@sentry/browser';\nimport { formatComponentName, generateComponentTrace } from './components';\nexport var attachErrorHandler = function (app, options) {\n var _a = app.config, errorHandler = _a.errorHandler, warnHandler = _a.warnHandler, silent = _a.silent;\n app.config.errorHandler = function (error, vm, lifecycleHook) {\n var componentName = formatComponentName(vm, false);\n var trace = vm ? generateComponentTrace(vm) : '';\n var metadata = {\n componentName: componentName,\n lifecycleHook: lifecycleHook,\n trace: trace,\n };\n if (vm && options.attachProps) {\n // Vue2 - $options.propsData\n // Vue3 - $props\n metadata.propsData = vm.$options.propsData || vm.$props;\n }\n // Capture exception in the next event loop, to make sure that all breadcrumbs are recorded in time.\n setTimeout(function () {\n getCurrentHub().withScope(function (scope) {\n scope.setContext('vue', metadata);\n getCurrentHub().captureException(error);\n });\n });\n if (typeof errorHandler === 'function') {\n errorHandler.call(app, error, vm, lifecycleHook);\n }\n if (options.logErrors) {\n var hasConsole = typeof console !== 'undefined';\n var message = \"Error in \" + lifecycleHook + \": \\\"\" + (error && error.toString()) + \"\\\"\";\n if (warnHandler) {\n warnHandler.call(null, message, vm, trace);\n }\n else if (hasConsole && !silent) {\n // eslint-disable-next-line no-console\n console.error(\"[Vue warn]: \" + message + trace);\n }\n }\n };\n};\n//# sourceMappingURL=errorhandler.js.map","import { __values } from \"tslib\";\nimport { getCurrentHub } from '@sentry/browser';\nimport { logger, timestampInSeconds } from '@sentry/utils';\nimport { formatComponentName } from './components';\nimport { DEFAULT_HOOKS } from './constants';\nvar VUE_OP = 'ui.vue';\n// Mappings from operation to corresponding lifecycle hook.\nvar HOOKS = {\n activate: ['activated', 'deactivated'],\n create: ['beforeCreate', 'created'],\n destroy: ['beforeDestroy', 'destroyed'],\n mount: ['beforeMount', 'mounted'],\n update: ['beforeUpdate', 'updated'],\n};\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction() {\n var _a;\n return (_a = getCurrentHub().getScope()) === null || _a === void 0 ? void 0 : _a.getTransaction();\n}\n/** Finish top-level span and activity with a debounce configured using `timeout` option */\nfunction finishRootSpan(vm, timestamp, timeout) {\n if (vm.$_sentryRootSpanTimer) {\n clearTimeout(vm.$_sentryRootSpanTimer);\n }\n vm.$_sentryRootSpanTimer = setTimeout(function () {\n var _a;\n if ((_a = vm.$root) === null || _a === void 0 ? void 0 : _a.$_sentryRootSpan) {\n vm.$root.$_sentryRootSpan.finish(timestamp);\n vm.$root.$_sentryRootSpan = undefined;\n }\n }, timeout);\n}\nexport var createTracingMixins = function (options) {\n var e_1, _a;\n var hooks = (options.hooks || [])\n .concat(DEFAULT_HOOKS)\n // Removing potential duplicates\n .filter(function (value, index, self) { return self.indexOf(value) === index; });\n var mixins = {};\n var _loop_1 = function (operation) {\n var e_2, _a;\n // Retrieve corresponding hooks from Vue lifecycle.\n // eg. mount => ['beforeMount', 'mounted']\n var internalHooks = HOOKS[operation];\n if (!internalHooks) {\n logger.warn(\"Unknown hook: \" + operation);\n return \"continue\";\n }\n var _loop_2 = function (internalHook) {\n mixins[internalHook] = function () {\n var _a;\n var isRoot = this.$root === this;\n if (isRoot) {\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n this.$_sentryRootSpan =\n this.$_sentryRootSpan ||\n activeTransaction.startChild({\n description: 'Application Render',\n op: VUE_OP,\n });\n }\n }\n // Skip components that we don't want to track to minimize the noise and give a more granular control to the user\n var name = formatComponentName(this, false);\n var shouldTrack = Array.isArray(options.trackComponents)\n ? options.trackComponents.includes(name)\n : options.trackComponents;\n // We always want to track root component\n if (!isRoot && !shouldTrack) {\n return;\n }\n this.$_sentrySpans = this.$_sentrySpans || {};\n // Start a new span if current hook is a 'before' hook.\n // Otherwise, retrieve the current span and finish it.\n if (internalHook == internalHooks[0]) {\n var activeTransaction = ((_a = this.$root) === null || _a === void 0 ? void 0 : _a.$_sentryRootSpan) || getActiveTransaction();\n if (activeTransaction) {\n this.$_sentrySpans[operation] = activeTransaction.startChild({\n description: \"Vue <\" + name + \">\",\n op: VUE_OP + \".\" + operation,\n });\n }\n }\n else {\n // The span should already be added via the first handler call (in the 'before' hook)\n var span = this.$_sentrySpans[operation];\n // The before hook did not start the tracking span, so the span was not added.\n // This is probably because it happened before there is an active transaction\n if (!span)\n return;\n span.finish();\n finishRootSpan(this, timestampInSeconds(), options.timeout);\n }\n };\n };\n try {\n for (var internalHooks_1 = (e_2 = void 0, __values(internalHooks)), internalHooks_1_1 = internalHooks_1.next(); !internalHooks_1_1.done; internalHooks_1_1 = internalHooks_1.next()) {\n var internalHook = internalHooks_1_1.value;\n _loop_2(internalHook);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (internalHooks_1_1 && !internalHooks_1_1.done && (_a = internalHooks_1.return)) _a.call(internalHooks_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n };\n try {\n for (var hooks_1 = __values(hooks), hooks_1_1 = hooks_1.next(); !hooks_1_1.done; hooks_1_1 = hooks_1.next()) {\n var operation = hooks_1_1.value;\n _loop_1(operation);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (hooks_1_1 && !hooks_1_1.done && (_a = hooks_1.return)) _a.call(hooks_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return mixins;\n};\n//# sourceMappingURL=tracing.js.map","import { __assign } from \"tslib\";\nimport { init as browserInit, SDK_VERSION } from '@sentry/browser';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { DEFAULT_HOOKS } from './constants';\nimport { attachErrorHandler } from './errorhandler';\nimport { createTracingMixins } from './tracing';\nvar DEFAULT_CONFIG = {\n Vue: getGlobalObject().Vue,\n attachProps: true,\n logErrors: false,\n hooks: DEFAULT_HOOKS,\n timeout: 2000,\n trackComponents: false,\n _metadata: {\n sdk: {\n name: 'sentry.javascript.vue',\n packages: [\n {\n name: 'npm:@sentry/vue',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n },\n },\n};\n/**\n * Inits the Vue SDK\n */\nexport function init(config) {\n if (config === void 0) { config = {}; }\n var options = __assign(__assign({}, DEFAULT_CONFIG), config);\n browserInit(options);\n if (!options.Vue && !options.app) {\n logger.warn('Misconfigured SDK. Vue specific errors will not be captured.\\n' +\n 'Update your `Sentry.init` call with an appropriate config option:\\n' +\n '`app` (Application Instance - Vue 3) or `Vue` (Vue Constructor - Vue 2).');\n return;\n }\n if (options.app) {\n var apps = Array.isArray(options.app) ? options.app : [options.app];\n apps.forEach(function (app) { return vueInit(app, options); });\n }\n else if (options.Vue) {\n vueInit(options.Vue, options);\n }\n}\nvar vueInit = function (app, options) {\n attachErrorHandler(app, options);\n if ('tracesSampleRate' in options || 'tracesSampler' in options) {\n app.mixin(createTracingMixins(__assign(__assign({}, options), options.tracingOptions)));\n }\n};\n//# sourceMappingURL=sdk.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { captureException } from '@sentry/browser';\n/**\n * Creates routing instrumentation for Vue Router v2\n *\n * @param router The Vue Router instance that is used\n */\nexport function vueRouterInstrumentation(router) {\n return function (startTransaction, startTransactionOnPageLoad, startTransactionOnLocationChange) {\n if (startTransactionOnPageLoad === void 0) { startTransactionOnPageLoad = true; }\n if (startTransactionOnLocationChange === void 0) { startTransactionOnLocationChange = true; }\n router.onError(function (error) { return captureException(error); });\n router.beforeEach(function (to, from, next) {\n // According to docs we could use `from === VueRouter.START_LOCATION` but I couldnt get it working for Vue 2\n // https://router.vuejs.org/api/#router-start-location\n // https://next.router.vuejs.org/api/#start-location\n // Vue2 - null\n // Vue3 - undefined\n var isPageLoadNavigation = from.name == null && from.matched.length === 0;\n var tags = {\n 'routing.instrumentation': 'vue-router',\n };\n var data = {\n params: to.params,\n query: to.query,\n };\n if (startTransactionOnPageLoad && isPageLoadNavigation) {\n startTransaction({\n name: to.name || to.path,\n op: 'pageload',\n tags: tags,\n data: data,\n });\n }\n if (startTransactionOnLocationChange && !isPageLoadNavigation) {\n startTransaction({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n name: to.name || (to.matched[0] && to.matched[0].path) || to.path,\n op: 'navigation',\n tags: tags,\n data: data,\n });\n }\n next();\n });\n };\n}\n//# sourceMappingURL=router.js.map","import { getCurrentHub } from '@sentry/hub';\nexport var TRACEPARENT_REGEXP = new RegExp('^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$');\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(maybeOptions) {\n var client = getCurrentHub().getClient();\n var options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n var parentSampled = void 0;\n if (matches[3] === '1') {\n parentSampled = true;\n }\n else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled: parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub) {\n var hub = maybeHub || getCurrentHub();\n var scope = hub.getScope();\n return scope && scope.getTransaction();\n}\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time) {\n return time / 1000;\n}\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time) {\n return time * 1000;\n}\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n//# sourceMappingURL=utils.js.map","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils';\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation() {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var status_1 = 'internal_error';\n logger.log(\"[Tracing] Transaction: \" + status_1 + \" -> Global error occured\");\n activeTransaction.setStatus(status_1);\n }\n}\n//# sourceMappingURL=errors.js.map","// Store finish reasons in tuple to save on bundle size\n// Readonly type should enforce that this is not mutated.\nexport var FINISH_REASON_TAG = 'finishReason';\nexport var IDLE_TRANSACTION_FINISH_REASONS = ['heartbeatFailed', 'idleTimeout', 'documentHidden'];\n//# sourceMappingURL=constants.js.map","import { __assign } from \"tslib\";\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nvar SpanRecorder = /** @class */ (function () {\n function SpanRecorder(maxlen) {\n if (maxlen === void 0) { maxlen = 1000; }\n this.spans = [];\n this._maxlen = maxlen;\n }\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n SpanRecorder.prototype.add = function (span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n }\n else {\n this.spans.push(span);\n }\n };\n return SpanRecorder;\n}());\nexport { SpanRecorder };\n/**\n * Span contains all data about a span\n */\nvar Span = /** @class */ (function () {\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n function Span(spanContext) {\n /**\n * @inheritDoc\n */\n this.traceId = uuid4();\n /**\n * @inheritDoc\n */\n this.spanId = uuid4().substring(16);\n /**\n * Timestamp in seconds when the span was created.\n */\n this.startTimestamp = timestampWithMs();\n /**\n * @inheritDoc\n */\n this.tags = {};\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.data = {};\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n /**\n * @inheritDoc\n * @deprecated\n */\n Span.prototype.child = function (spanContext) {\n return this.startChild(spanContext);\n };\n /**\n * @inheritDoc\n */\n Span.prototype.startChild = function (spanContext) {\n var childSpan = new Span(__assign(__assign({}, spanContext), { parentSpanId: this.spanId, sampled: this.sampled, traceId: this.traceId }));\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n childSpan.transaction = this.transaction;\n return childSpan;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setTag = function (key, value) {\n var _a;\n this.tags = __assign(__assign({}, this.tags), (_a = {}, _a[key] = value, _a));\n return this;\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n Span.prototype.setData = function (key, value) {\n var _a;\n this.data = __assign(__assign({}, this.data), (_a = {}, _a[key] = value, _a));\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setStatus = function (value) {\n this.status = value;\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.setHttpStatus = function (httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n var spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.isSuccess = function () {\n return this.status === 'ok';\n };\n /**\n * @inheritDoc\n */\n Span.prototype.finish = function (endTimestamp) {\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toTraceparent = function () {\n var sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return this.traceId + \"-\" + this.spanId + sampledString;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toContext = function () {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n };\n /**\n * @inheritDoc\n */\n Span.prototype.updateWithContext = function (spanContext) {\n var _a, _b, _c, _d, _e;\n this.data = (_a = spanContext.data, (_a !== null && _a !== void 0 ? _a : {}));\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = (_b = spanContext.spanId, (_b !== null && _b !== void 0 ? _b : this.spanId));\n this.startTimestamp = (_c = spanContext.startTimestamp, (_c !== null && _c !== void 0 ? _c : this.startTimestamp));\n this.status = spanContext.status;\n this.tags = (_d = spanContext.tags, (_d !== null && _d !== void 0 ? _d : {}));\n this.traceId = (_e = spanContext.traceId, (_e !== null && _e !== void 0 ? _e : this.traceId));\n return this;\n };\n /**\n * @inheritDoc\n */\n Span.prototype.getTraceContext = function () {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n };\n /**\n * @inheritDoc\n */\n Span.prototype.toJSON = function () {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n };\n return Span;\n}());\nexport { Span };\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n return 'unknown_error';\n}\n//# sourceMappingURL=span.js.map","import { __assign, __extends } from \"tslib\";\nimport { getCurrentHub, Hub } from '@sentry/hub';\nimport { dropUndefinedKeys, isInstanceOf, logger } from '@sentry/utils';\nimport { Span as SpanClass, SpanRecorder } from './span';\n/** JSDoc */\nvar Transaction = /** @class */ (function (_super) {\n __extends(Transaction, _super);\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n function Transaction(transactionContext, hub) {\n var _this = _super.call(this, transactionContext) || this;\n _this._measurements = {};\n /**\n * The reference to the current hub.\n */\n _this._hub = getCurrentHub();\n if (isInstanceOf(hub, Hub)) {\n _this._hub = hub;\n }\n _this.name = transactionContext.name || '';\n _this.metadata = transactionContext.metadata || {};\n _this._trimEnd = transactionContext.trimEnd;\n // this is because transactions are also spans, and spans have a transaction pointer\n _this.transaction = _this;\n return _this;\n }\n /**\n * JSDoc\n */\n Transaction.prototype.setName = function (name) {\n this.name = name;\n };\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n Transaction.prototype.initSpanRecorder = function (maxlen) {\n if (maxlen === void 0) { maxlen = 1000; }\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n };\n /**\n * Set observed measurements for this transaction.\n * @hidden\n */\n Transaction.prototype.setMeasurements = function (measurements) {\n this._measurements = __assign({}, measurements);\n };\n /**\n * Set metadata for this transaction.\n * @hidden\n */\n Transaction.prototype.setMetadata = function (newMetadata) {\n this.metadata = __assign(__assign({}, this.metadata), newMetadata);\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.finish = function (endTimestamp) {\n var _this = this;\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n if (!this.name) {\n logger.warn('Transaction has no name, falling back to `<unlabeled transaction>`.');\n this.name = '<unlabeled transaction>';\n }\n // just sets the end timestamp\n _super.prototype.finish.call(this, endTimestamp);\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n var client = this._hub.getClient();\n var transport = client && client.getTransport && client.getTransport();\n if (transport && transport.recordLostEvent) {\n transport.recordLostEvent('sample_rate', 'transaction');\n }\n return undefined;\n }\n var finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(function (s) { return s !== _this && s.endTimestamp; }) : [];\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce(function (prev, current) {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n var transaction = {\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: this.metadata,\n };\n var hasMeasurements = Object.keys(this._measurements).length > 0;\n if (hasMeasurements) {\n logger.log('[Measurements] Adding measurements to transaction', JSON.stringify(this._measurements, undefined, 2));\n transaction.measurements = this._measurements;\n }\n logger.log(\"[Tracing] Finishing \" + this.op + \" transaction: \" + this.name + \".\");\n return this._hub.captureEvent(transaction);\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.toContext = function () {\n var spanContext = _super.prototype.toContext.call(this);\n return dropUndefinedKeys(__assign(__assign({}, spanContext), { name: this.name, trimEnd: this._trimEnd }));\n };\n /**\n * @inheritDoc\n */\n Transaction.prototype.updateWithContext = function (transactionContext) {\n var _a;\n _super.prototype.updateWithContext.call(this, transactionContext);\n this.name = (_a = transactionContext.name, (_a !== null && _a !== void 0 ? _a : ''));\n this._trimEnd = transactionContext.trimEnd;\n return this;\n };\n return Transaction;\n}(SpanClass));\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map","import { __extends, __values } from \"tslib\";\nimport { logger, timestampWithMs } from '@sentry/utils';\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from './constants';\nimport { SpanRecorder } from './span';\nimport { Transaction } from './transaction';\nexport var DEFAULT_IDLE_TIMEOUT = 1000;\nexport var HEARTBEAT_INTERVAL = 5000;\n/**\n * @inheritDoc\n */\nvar IdleTransactionSpanRecorder = /** @class */ (function (_super) {\n __extends(IdleTransactionSpanRecorder, _super);\n function IdleTransactionSpanRecorder(_pushActivity, _popActivity, transactionSpanId, maxlen) {\n if (transactionSpanId === void 0) { transactionSpanId = ''; }\n var _this = _super.call(this, maxlen) || this;\n _this._pushActivity = _pushActivity;\n _this._popActivity = _popActivity;\n _this.transactionSpanId = transactionSpanId;\n return _this;\n }\n /**\n * @inheritDoc\n */\n IdleTransactionSpanRecorder.prototype.add = function (span) {\n var _this = this;\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = function (endTimestamp) {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n _this._popActivity(span.spanId);\n };\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n _super.prototype.add.call(this, span);\n };\n return IdleTransactionSpanRecorder;\n}(SpanRecorder));\nexport { IdleTransactionSpanRecorder };\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nvar IdleTransaction = /** @class */ (function (_super) {\n __extends(IdleTransaction, _super);\n function IdleTransaction(transactionContext, _idleHub, \n /**\n * The time to wait in ms until the idle transaction will be finished.\n * @default 1000\n */\n _idleTimeout, \n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope) {\n if (_idleTimeout === void 0) { _idleTimeout = DEFAULT_IDLE_TIMEOUT; }\n if (_onScope === void 0) { _onScope = false; }\n var _this = _super.call(this, transactionContext, _idleHub) || this;\n _this._idleHub = _idleHub;\n _this._idleTimeout = _idleTimeout;\n _this._onScope = _onScope;\n // Activities store a list of active spans\n _this.activities = {};\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n _this._heartbeatCounter = 0;\n // We should not use heartbeat if we finished a transaction\n _this._finished = false;\n _this._beforeFinishCallbacks = [];\n if (_idleHub && _onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n logger.log(\"Setting idle transaction on scope. Span ID: \" + _this.spanId);\n _idleHub.configureScope(function (scope) { return scope.setSpan(_this); });\n }\n _this._initTimeout = setTimeout(function () {\n if (!_this._finished) {\n _this.finish();\n }\n }, _this._idleTimeout);\n return _this;\n }\n /** {@inheritDoc} */\n IdleTransaction.prototype.finish = function (endTimestamp) {\n var e_1, _a;\n var _this = this;\n if (endTimestamp === void 0) { endTimestamp = timestampWithMs(); }\n this._finished = true;\n this.activities = {};\n if (this.spanRecorder) {\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n try {\n for (var _b = __values(this._beforeFinishCallbacks), _c = _b.next(); !_c.done; _c = _b.next()) {\n var callback = _c.value;\n callback(this, endTimestamp);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this.spanRecorder.spans = this.spanRecorder.spans.filter(function (span) {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === _this.spanId) {\n return true;\n }\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n var keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', JSON.stringify(span, undefined, 2));\n }\n return keepSpan;\n });\n logger.log('[Tracing] flushing IdleTransaction');\n }\n else {\n logger.log('[Tracing] No active IdleTransaction');\n }\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n return _super.prototype.finish.call(this, endTimestamp);\n };\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n IdleTransaction.prototype.registerBeforeFinishCallback = function (callback) {\n this._beforeFinishCallbacks.push(callback);\n };\n /**\n * @inheritDoc\n */\n IdleTransaction.prototype.initSpanRecorder = function (maxlen) {\n var _this = this;\n if (!this.spanRecorder) {\n var pushActivity = function (id) {\n if (_this._finished) {\n return;\n }\n _this._pushActivity(id);\n };\n var popActivity = function (id) {\n if (_this._finished) {\n return;\n }\n _this._popActivity(id);\n };\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n // Start heartbeat so that transactions do not run forever.\n logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n };\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n IdleTransaction.prototype._pushActivity = function (spanId) {\n if (this._initTimeout) {\n clearTimeout(this._initTimeout);\n this._initTimeout = undefined;\n }\n logger.log(\"[Tracing] pushActivity: \" + spanId);\n this.activities[spanId] = true;\n logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n };\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n IdleTransaction.prototype._popActivity = function (spanId) {\n var _this = this;\n if (this.activities[spanId]) {\n logger.log(\"[Tracing] popActivity \" + spanId);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n if (Object.keys(this.activities).length === 0) {\n var timeout = this._idleTimeout;\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n var end_1 = timestampWithMs() + timeout / 1000;\n setTimeout(function () {\n if (!_this._finished) {\n _this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[1]);\n _this.finish(end_1);\n }\n }, timeout);\n }\n };\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n IdleTransaction.prototype._beat = function () {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n var heartbeatString = Object.keys(this.activities).join('');\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n }\n else {\n this._heartbeatCounter = 1;\n }\n this._prevHeartbeatString = heartbeatString;\n if (this._heartbeatCounter >= 3) {\n logger.log(\"[Tracing] Transaction finished because of no change for 3 heart beats\");\n this.setStatus('deadline_exceeded');\n this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[0]);\n this.finish();\n }\n else {\n this._pingHeartbeat();\n }\n };\n /**\n * Pings the heartbeat\n */\n IdleTransaction.prototype._pingHeartbeat = function () {\n var _this = this;\n logger.log(\"pinging Heartbeat -> current counter: \" + this._heartbeatCounter);\n setTimeout(function () {\n _this._beat();\n }, HEARTBEAT_INTERVAL);\n };\n return IdleTransaction;\n}(Transaction));\nexport { IdleTransaction };\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub) {\n if (hub) {\n var scope = hub.getScope();\n if (scope) {\n var transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n }\n}\n//# sourceMappingURL=idletransaction.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { getMainCarrier } from '@sentry/hub';\nimport { dynamicRequire, isNodeEnv, loadModule, logger } from '@sentry/utils';\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n var scope = this.getScope();\n if (scope) {\n var span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(transaction, options, samplingContext) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n var sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n }\n else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n logger.warn(\"[Tracing] Discarding transaction because of invalid sample rate.\");\n transaction.sampled = false;\n return transaction;\n }\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n logger.log(\"[Tracing] Discarding transaction because \" + (typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'));\n transaction.sampled = false;\n return transaction;\n }\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < sampleRate;\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n logger.log(\"[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = \" + Number(sampleRate) + \")\");\n return transaction;\n }\n logger.log(\"[Tracing] starting \" + transaction.op + \" transaction - \" + transaction.name);\n return transaction;\n}\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n logger.warn(\"[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got \" + JSON.stringify(rate) + \" of type \" + JSON.stringify(typeof rate) + \".\");\n return false;\n }\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n logger.warn(\"[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got \" + rate + \".\");\n return false;\n }\n return true;\n}\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(transactionContext, customSamplingContext) {\n var client = this.getClient();\n var options = (client && client.getOptions()) || {};\n var transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, __assign({ parentSampled: transactionContext.parentSampled, transactionContext: transactionContext }, customSamplingContext));\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && options._experiments.maxSpans);\n }\n return transaction;\n}\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(hub, transactionContext, idleTimeout, onScope, customSamplingContext) {\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {};\n var transaction = new IdleTransaction(transactionContext, hub, idleTimeout, onScope);\n transaction = sample(transaction, options, __assign({ parentSampled: transactionContext.parentSampled, transactionContext: transactionContext }, customSamplingContext));\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && options._experiments.maxSpans);\n }\n return transaction;\n}\n/**\n * @private\n */\nexport function _addTracingExtensions() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n var packageToIntegrationMapping = {\n mongodb: function () {\n var integration = dynamicRequire(module, './integrations/node/mongo');\n return new integration.Mongo();\n },\n mongoose: function () {\n var integration = dynamicRequire(module, './integrations/node/mongo');\n return new integration.Mongo({ mongoose: true });\n },\n mysql: function () {\n var integration = dynamicRequire(module, './integrations/node/mysql');\n return new integration.Mysql();\n },\n pg: function () {\n var integration = dynamicRequire(module, './integrations/node/postgres');\n return new integration.Postgres();\n },\n };\n var mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(function (moduleName) { return !!loadModule(moduleName); })\n .map(function (pkg) {\n try {\n return packageToIntegrationMapping[pkg]();\n }\n catch (e) {\n return undefined;\n }\n })\n .filter(function (p) { return p; });\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = __spread((carrier.__SENTRY__.integrations || []), mappedPackages);\n }\n}\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods() {\n _addTracingExtensions();\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n//# sourceMappingURL=hubextensions.js.map","import { getGlobalObject, logger } from '@sentry/utils';\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from '../constants';\nimport { getActiveTransaction } from '../utils';\nvar global = getGlobalObject();\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection() {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', function () {\n var activeTransaction = getActiveTransaction();\n if (global.document.hidden && activeTransaction) {\n var statusType = 'cancelled';\n logger.log(\"[Tracing] Transaction: \" + statusType + \" -> since tab moved to the background, op: \" + activeTransaction.op);\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[2]);\n activeTransaction.finish();\n }\n });\n }\n else {\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n//# sourceMappingURL=backgroundtab.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var bindReporter = function (callback, metric, reportAllChanges) {\n var prevValue;\n return function (forceReport) {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n//# sourceMappingURL=bindReporter.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport var generateUniqueID = function () {\n return \"v2-\" + Date.now() + \"-\" + (Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n};\n//# sourceMappingURL=generateUniqueID.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { generateUniqueID } from './generateUniqueID';\nexport var initMetric = function (name, value) {\n return {\n name: name,\n value: (value !== null && value !== void 0 ? value : -1),\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n };\n};\n//# sourceMappingURL=initMetric.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport var observe = function (type, callback) {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n var po = new PerformanceObserver(function (l) { return l.getEntries().map(callback); });\n po.observe({ type: type, buffered: true });\n return po;\n }\n }\n catch (e) {\n // Do nothing.\n }\n return;\n};\n//# sourceMappingURL=observe.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getGlobalObject } from '@sentry/utils';\nexport var onHidden = function (cb, once) {\n var onHiddenOrPageHide = function (event) {\n if (event.type === 'pagehide' || getGlobalObject().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n//# sourceMappingURL=onHidden.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nexport var getCLS = function (onReport, reportAllChanges) {\n var metric = initMetric('CLS', 0);\n var report;\n var sessionValue = 0;\n var sessionEntries = [];\n var entryHandler = function (entry) {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n var firstSessionEntry = sessionEntries[0];\n var lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n }\n else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n };\n var po = observe('layout-shift', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(function () {\n po.takeRecords().map(entryHandler);\n report(true);\n });\n }\n};\n//# sourceMappingURL=getCLS.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getGlobalObject } from '@sentry/utils';\nimport { onHidden } from './onHidden';\nvar firstHiddenTime = -1;\nvar initHiddenTime = function () {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\nvar trackChanges = function () {\n // Update the time if/when the document becomes hidden.\n onHidden(function (_a) {\n var timeStamp = _a.timeStamp;\n firstHiddenTime = timeStamp;\n }, true);\n};\nexport var getVisibilityWatcher = function () {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n//# sourceMappingURL=getVisibilityWatcher.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nexport var getFID = function (onReport, reportAllChanges) {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('FID');\n var report;\n var entryHandler = function (entry) {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n var po = observe('first-input', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(function () {\n po.takeRecords().map(entryHandler);\n po.disconnect();\n }, true);\n }\n};\n//# sourceMappingURL=getFID.js.map","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nvar reportedMetricIDs = {};\nexport var getLCP = function (onReport, reportAllChanges) {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('LCP');\n var report;\n var entryHandler = function (entry) {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n var value = entry.startTime;\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n if (report) {\n report();\n }\n };\n var po = observe('largest-contentful-paint', entryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n var stopListening_1 = function () {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(function (type) {\n addEventListener(type, stopListening_1, { once: true, capture: true });\n });\n onHidden(stopListening_1, true);\n }\n};\n//# sourceMappingURL=getLCP.js.map","import { __assign, __rest } from \"tslib\";\nimport { browserPerformanceTimeOrigin, getGlobalObject, htmlTreeAsString, isNodeEnv, logger } from '@sentry/utils';\nimport { msToSec } from '../utils';\nimport { getCLS } from './web-vitals/getCLS';\nimport { getFID } from './web-vitals/getFID';\nimport { getLCP } from './web-vitals/getLCP';\nimport { getVisibilityWatcher } from './web-vitals/lib/getVisibilityWatcher';\nvar global = getGlobalObject();\n/** Class tracking metrics */\nvar MetricsInstrumentation = /** @class */ (function () {\n function MetricsInstrumentation(_reportAllChanges) {\n if (_reportAllChanges === void 0) { _reportAllChanges = false; }\n this._reportAllChanges = _reportAllChanges;\n this._measurements = {};\n this._performanceCursor = 0;\n if (!isNodeEnv() && global && global.performance && global.document) {\n if (global.performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n this._trackCLS();\n this._trackLCP();\n this._trackFID();\n }\n }\n /** Add performance related spans to a transaction */\n MetricsInstrumentation.prototype.addPerformanceEntries = function (transaction) {\n var _this = this;\n if (!global || !global.performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n logger.log('[Tracing] Adding & adjusting spans using Performance API');\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var responseStartTimestamp;\n var requestStartTimestamp;\n global.performance\n .getEntries()\n .slice(this._performanceCursor)\n .forEach(function (entry) {\n var startTime = msToSec(entry.startTime);\n var duration = msToSec(entry.duration);\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n switch (entry.entryType) {\n case 'navigation': {\n addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n var startTimestamp = addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n // capture web vitals\n var firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n var shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n if (entry.name === 'first-paint' && shouldRecord) {\n logger.log('[Measurements] Adding FP');\n _this._measurements['fp'] = { value: entry.startTime };\n _this._measurements['mark.fp'] = { value: startTimestamp };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n logger.log('[Measurements] Adding FCP');\n _this._measurements['fcp'] = { value: entry.startTime };\n _this._measurements['mark.fcp'] = { value: startTimestamp };\n }\n break;\n }\n case 'resource': {\n var resourceName = entry.name.replace(global.location.origin, '');\n addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n this._performanceCursor = Math.max(performance.getEntries().length - 1, 0);\n this._trackNavigator(transaction);\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // normalize applicable web vital values to be relative to transaction.startTimestamp\n var timeOrigin_1 = msToSec(browserPerformanceTimeOrigin);\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n logger.log('[Measurements] Adding TTFB');\n this._measurements['ttfb'] = { value: (responseStartTimestamp - transaction.startTimestamp) * 1000 };\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n this._measurements['ttfb.requestTime'] = { value: (responseStartTimestamp - requestStartTimestamp) * 1000 };\n }\n }\n ['fcp', 'fp', 'lcp'].forEach(function (name) {\n if (!_this._measurements[name] || timeOrigin_1 >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n var oldValue = _this._measurements[name].value;\n var measurementTimestamp = timeOrigin_1 + msToSec(oldValue);\n // normalizedValue should be in milliseconds\n var normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n var delta = normalizedValue - oldValue;\n logger.log(\"[Measurements] Normalized \" + name + \" from \" + oldValue + \" to \" + normalizedValue + \" (\" + delta + \")\");\n _this._measurements[name].value = normalizedValue;\n });\n if (this._measurements['mark.fid'] && this._measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: this._measurements['mark.fid'].value + msToSec(this._measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: this._measurements['mark.fid'].value,\n });\n }\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in this._measurements)) {\n delete this._measurements.cls;\n }\n transaction.setMeasurements(this._measurements);\n tagMetricInfo(transaction, this._lcpEntry, this._clsEntry);\n transaction.setTag('sentry_reportAllChanges', this._reportAllChanges);\n }\n };\n /**\n * Capture the information of the user agent.\n */\n MetricsInstrumentation.prototype._trackNavigator = function (transaction) {\n var navigator = global.navigator;\n if (!navigator) {\n return;\n }\n // track network connectivity\n var connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n if (isMeasurementValue(connection.rtt)) {\n this._measurements['connection.rtt'] = { value: connection.rtt };\n }\n if (isMeasurementValue(connection.downlink)) {\n this._measurements['connection.downlink'] = { value: connection.downlink };\n }\n }\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', String(navigator.deviceMemory));\n }\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n };\n /** Starts tracking the Cumulative Layout Shift on the current page. */\n MetricsInstrumentation.prototype._trackCLS = function () {\n var _this = this;\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n logger.log('[Measurements] Adding CLS');\n _this._measurements['cls'] = { value: metric.value };\n _this._clsEntry = entry;\n });\n };\n /** Starts tracking the Largest Contentful Paint on the current page. */\n MetricsInstrumentation.prototype._trackLCP = function () {\n var _this = this;\n getLCP(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var startTime = msToSec(entry.startTime);\n logger.log('[Measurements] Adding LCP');\n _this._measurements['lcp'] = { value: metric.value };\n _this._measurements['mark.lcp'] = { value: timeOrigin + startTime };\n _this._lcpEntry = entry;\n }, this._reportAllChanges);\n };\n /** Starts tracking the First Input Delay on the current page. */\n MetricsInstrumentation.prototype._trackFID = function () {\n var _this = this;\n getFID(function (metric) {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n var startTime = msToSec(entry.startTime);\n logger.log('[Measurements] Adding FID');\n _this._measurements['fid'] = { value: metric.value };\n _this._measurements['mark.fid'] = { value: timeOrigin + startTime };\n });\n };\n return MetricsInstrumentation;\n}());\nexport { MetricsInstrumentation };\n/** Instrument navigation entries */\nfunction addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(function (event) {\n addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n addRequest(transaction, entry, timeOrigin);\n}\n/** Create measure related spans */\nfunction addMeasureSpans(transaction, entry, startTime, duration, timeOrigin) {\n var measureStartTimestamp = timeOrigin + startTime;\n var measureEndTimestamp = measureStartTimestamp + duration;\n _startChild(transaction, {\n description: entry.name,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType,\n startTimestamp: measureStartTimestamp,\n });\n return measureStartTimestamp;\n}\n/** Create resource-related spans */\nexport function addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n var data = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n var startTimestamp = timeOrigin + startTime;\n var endTimestamp = startTimestamp + duration;\n _startChild(transaction, {\n description: resourceName,\n endTimestamp: endTimestamp,\n op: entry.initiatorType ? \"resource.\" + entry.initiatorType : 'resource',\n startTimestamp: startTimestamp,\n data: data,\n });\n}\n/** Create performance navigation related spans */\nfunction addPerformanceNavigationTiming(transaction, entry, event, timeOrigin, description, eventEnd) {\n var end = eventEnd ? entry[eventEnd] : entry[event + \"End\"];\n var start = entry[event + \"Start\"];\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: (description !== null && description !== void 0 ? description : event),\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n/** Create request and response related spans */\nfunction addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd),\n });\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd),\n });\n}\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(transaction, _a) {\n var startTimestamp = _a.startTimestamp, ctx = __rest(_a, [\"startTimestamp\"]);\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n return transaction.startChild(__assign({ startTimestamp: startTimestamp }, ctx));\n}\n/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction tagMetricInfo(transaction, lcpEntry, clsEntry) {\n if (lcpEntry) {\n logger.log('[Measurements] Adding LCP Data');\n // Capture Properties of the LCP element that contributes to the LCP.\n if (lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(lcpEntry.element));\n }\n if (lcpEntry.id) {\n transaction.setTag('lcp.id', lcpEntry.id);\n }\n if (lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', lcpEntry.url.trim().slice(0, 200));\n }\n transaction.setTag('lcp.size', lcpEntry.size);\n }\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (clsEntry && clsEntry.sources) {\n logger.log('[Measurements] Adding CLS Data');\n clsEntry.sources.forEach(function (source, index) {\n return transaction.setTag(\"cls.source.\" + (index + 1), htmlTreeAsString(source.node));\n });\n }\n}\n//# sourceMappingURL=metrics.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { addInstrumentationHandler, isInstanceOf, isMatchingPattern } from '@sentry/utils';\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\nexport var DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\nexport var defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = __assign(__assign({}, defaultRequestInstrumentationOptions), _options), traceFetch = _a.traceFetch, traceXHR = _a.traceXHR, tracingOrigins = _a.tracingOrigins, shouldCreateSpanForRequest = _a.shouldCreateSpanForRequest;\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n var urlMap = {};\n var defaultShouldCreateSpan = function (url) {\n if (urlMap[url]) {\n return urlMap[url];\n }\n var origins = tracingOrigins;\n urlMap[url] =\n origins.some(function (origin) { return isMatchingPattern(url, origin); }) &&\n !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\n };\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n var shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = function (url) {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n var spans = {};\n if (traceFetch) {\n addInstrumentationHandler('fetch', function (handlerData) {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n if (traceXHR) {\n addInstrumentationHandler('xhr', function (handlerData) {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(handlerData, shouldCreateSpan, spans) {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n if (handlerData.endTimestamp) {\n var spanId = handlerData.fetchData.__span;\n if (!spanId)\n return;\n var span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n }\n else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: __assign(__assign({}, handlerData.fetchData), { type: 'fetch' }),\n description: handlerData.fetchData.method + \" \" + handlerData.fetchData.url,\n op: 'http.client',\n });\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n var request = (handlerData.args[0] = handlerData.args[0]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var options = (handlerData.args[1] = handlerData.args[1] || {});\n var headers = options.headers;\n if (isInstanceOf(request, Request)) {\n headers = request.headers;\n }\n if (headers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof headers.append === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n headers.append('sentry-trace', span.toTraceparent());\n }\n else if (Array.isArray(headers)) {\n headers = __spread(headers, [['sentry-trace', span.toTraceparent()]]);\n }\n else {\n headers = __assign(__assign({}, headers), { 'sentry-trace': span.toTraceparent() });\n }\n }\n else {\n headers = { 'sentry-trace': span.toTraceparent() };\n }\n options.headers = headers;\n }\n}\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(handlerData, shouldCreateSpan, spans) {\n if (!hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))) {\n return;\n }\n var xhr = handlerData.xhr.__sentry_xhr__;\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n var spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId)\n return;\n var span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n // if not, create a new span to track it\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: __assign(__assign({}, xhr.data), { type: 'xhr', method: xhr.method, url: xhr.url }),\n description: xhr.method + \" \" + xhr.url,\n op: 'http.client',\n });\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n }\n catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n//# sourceMappingURL=request.js.map","import { addInstrumentationHandler, getGlobalObject, logger } from '@sentry/utils';\nvar global = getGlobalObject();\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(customStartTransaction, startTransactionOnPageLoad, startTransactionOnLocationChange) {\n if (startTransactionOnPageLoad === void 0) { startTransactionOnPageLoad = true; }\n if (startTransactionOnLocationChange === void 0) { startTransactionOnLocationChange = true; }\n if (!global || !global.location) {\n logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n var startingUrl = global.location.href;\n var activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'pageload' });\n }\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', function (_a) {\n var to = _a.to, from = _a.from;\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n logger.log(\"[Tracing] Finishing current transaction with op: \" + activeTransaction.op);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'navigation' });\n }\n });\n }\n}\n//# sourceMappingURL=router.js.map","import { __assign } from \"tslib\";\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_IDLE_TIMEOUT } from '../idletransaction';\nimport { extractTraceparentData, secToMs } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { MetricsInstrumentation } from './metrics';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests, } from './request';\nimport { instrumentRoutingWithDefaults } from './router';\nexport var DEFAULT_MAX_TRANSACTION_DURATION_SECONDS = 600;\nvar DEFAULT_BROWSER_TRACING_OPTIONS = __assign({ idleTimeout: DEFAULT_IDLE_TIMEOUT, markBackgroundTransactions: true, maxTransactionDuration: DEFAULT_MAX_TRANSACTION_DURATION_SECONDS, routingInstrumentation: instrumentRoutingWithDefaults, startTransactionOnLocationChange: true, startTransactionOnPageLoad: true }, defaultRequestInstrumentationOptions);\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nvar BrowserTracing = /** @class */ (function () {\n function BrowserTracing(_options) {\n /**\n * @inheritDoc\n */\n this.name = BrowserTracing.id;\n this._emitOptionsWarning = false;\n /** Store configured idle timeout so that it can be added as a tag to transactions */\n this._configuredIdleTimeout = undefined;\n var tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n this._configuredIdleTimeout = _options.idleTimeout;\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {\n tracingOrigins = _options.tracingOrigins;\n }\n else {\n this._emitOptionsWarning = true;\n }\n }\n this.options = __assign(__assign(__assign({}, DEFAULT_BROWSER_TRACING_OPTIONS), _options), { tracingOrigins: tracingOrigins });\n var _metricOptions = this.options._metricOptions;\n this._metrics = new MetricsInstrumentation(_metricOptions && _metricOptions._reportAllChanges);\n }\n /**\n * @inheritDoc\n */\n BrowserTracing.prototype.setupOnce = function (_, getCurrentHub) {\n var _this = this;\n this._getCurrentHub = getCurrentHub;\n if (this._emitOptionsWarning) {\n logger.warn('[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.');\n logger.warn(\"[Tracing] We added a reasonable default for you: \" + defaultRequestInstrumentationOptions.tracingOrigins);\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.options, instrumentRouting = _a.routingInstrumentation, startTransactionOnLocationChange = _a.startTransactionOnLocationChange, startTransactionOnPageLoad = _a.startTransactionOnPageLoad, markBackgroundTransactions = _a.markBackgroundTransactions, traceFetch = _a.traceFetch, traceXHR = _a.traceXHR, tracingOrigins = _a.tracingOrigins, shouldCreateSpanForRequest = _a.shouldCreateSpanForRequest;\n instrumentRouting(function (context) { return _this._createRouteTransaction(context); }, startTransactionOnPageLoad, startTransactionOnLocationChange);\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n instrumentOutgoingRequests({ traceFetch: traceFetch, traceXHR: traceXHR, tracingOrigins: tracingOrigins, shouldCreateSpanForRequest: shouldCreateSpanForRequest });\n };\n /** Create routing idle transaction. */\n BrowserTracing.prototype._createRouteTransaction = function (context) {\n var _this = this;\n if (!this._getCurrentHub) {\n logger.warn(\"[Tracing] Did not create \" + context.op + \" transaction because _getCurrentHub is invalid.\");\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.options, beforeNavigate = _a.beforeNavigate, idleTimeout = _a.idleTimeout, maxTransactionDuration = _a.maxTransactionDuration;\n var parentContextFromHeader = context.op === 'pageload' ? getHeaderContext() : undefined;\n var expandedContext = __assign(__assign(__assign({}, context), parentContextFromHeader), { trimEnd: true });\n var modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n var finalContext = modifiedContext === undefined ? __assign(__assign({}, expandedContext), { sampled: false }) : modifiedContext;\n if (finalContext.sampled === false) {\n logger.log(\"[Tracing] Will not send \" + finalContext.op + \" transaction because of beforeNavigate.\");\n }\n logger.log(\"[Tracing] Starting \" + finalContext.op + \" transaction on scope\");\n var hub = this._getCurrentHub();\n var location = getGlobalObject().location;\n var idleTransaction = startIdleTransaction(hub, finalContext, idleTimeout, true, { location: location });\n idleTransaction.registerBeforeFinishCallback(function (transaction, endTimestamp) {\n _this._metrics.addPerformanceEntries(transaction);\n adjustTransactionDuration(secToMs(maxTransactionDuration), transaction, endTimestamp);\n });\n idleTransaction.setTag('idleTimeout', this._configuredIdleTimeout);\n return idleTransaction;\n };\n /**\n * @inheritDoc\n */\n BrowserTracing.id = 'BrowserTracing';\n return BrowserTracing;\n}());\nexport { BrowserTracing };\n/**\n * Gets transaction context from a sentry-trace meta.\n *\n * @returns Transaction context data from the header or undefined if there's no header or the header is malformed\n */\nexport function getHeaderContext() {\n var header = getMetaContent('sentry-trace');\n if (header) {\n return extractTraceparentData(header);\n }\n return undefined;\n}\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName) {\n var el = getGlobalObject().document.querySelector(\"meta[name=\" + metaName + \"]\");\n return el ? el.getAttribute('content') : null;\n}\n/** Adjusts transaction value based on max transaction duration */\nfunction adjustTransactionDuration(maxDuration, transaction, endTimestamp) {\n var diff = endTimestamp - transaction.startTimestamp;\n var isOutdatedTransaction = endTimestamp && (diff > maxDuration || diff < 0);\n if (isOutdatedTransaction) {\n transaction.setStatus('deadline_exceeded');\n transaction.setTag('maxTransactionDurationExceeded', 'true');\n }\n}\n//# sourceMappingURL=browsertracing.js.map","import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\nexport { Integrations };\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing } from './browser';\nexport { Span, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport { \n// TODO deprecate old name in v7\ninstrumentOutgoingRequests as registerRequestInstrumentation, defaultRequestInstrumentationOptions, } from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n// We are patching the global object with our hub extension methods\naddExtensionMethods();\nexport { addExtensionMethods };\nexport { extractTraceparentData, getActiveTransaction, hasTracingEnabled, stripUrlQueryAndFragment, TRACEPARENT_REGEXP, } from './utils';\n//# sourceMappingURL=index.js.map","import * as Sentry from \"@sentry/vue\";\nimport { Integrations } from \"@sentry/tracing\";\nimport { metaTagContent } from \"@/helpers/documentHelpers.js\";\n\nfunction initSentry(app, router = null, user = null) {\n const dsn = metaTagContent('dsn');\n\n if (!dsn) {\n console.warn(\"DSN not found\");\n return null;\n }\n\n const traceOptions = {};\n traceOptions.tracePropagationTargets = ['localhost', 'tourhero.com', 'staging.tourhero.com', /^\\//];\n if (router) traceOptions.routingInstrumentation = Sentry.vueRouterInstrumentation(router);\n if (user) Sentry.setUser(user);\n\n return Sentry.init({\n app,\n dsn,\n debug: false,\n integrations: [new Integrations.BrowserTracing(traceOptions)],\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n // We recommend adjusting this value in production\n tracesSampleRate: 1.0,\n });\n}\n\nexport { initSentry };\n","import { unpackToString, unpackToArray, packArray } from 'packrup';\n\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\nconst SelfClosingTags = /* @__PURE__ */ new Set([\"meta\", \"link\", \"base\"]);\nconst TagsWithInnerContent = /* @__PURE__ */ new Set([\"title\", \"titleTemplate\", \"script\", \"style\", \"noscript\"]);\nconst HasElementTags = /* @__PURE__ */ new Set([\n \"base\",\n \"meta\",\n \"link\",\n \"style\",\n \"script\",\n \"noscript\"\n]);\nconst ValidHeadTags = /* @__PURE__ */ new Set([\n \"title\",\n \"titleTemplate\",\n \"templateParams\",\n \"base\",\n \"htmlAttrs\",\n \"bodyAttrs\",\n \"meta\",\n \"link\",\n \"style\",\n \"script\",\n \"noscript\"\n]);\nconst UniqueTags = /* @__PURE__ */ new Set([\"base\", \"title\", \"titleTemplate\", \"bodyAttrs\", \"htmlAttrs\", \"templateParams\"]);\nconst TagConfigKeys = /* @__PURE__ */ new Set([\"tagPosition\", \"tagPriority\", \"tagDuplicateStrategy\", \"children\", \"innerHTML\", \"textContent\", \"processTemplateParams\"]);\nconst IsBrowser = typeof window !== \"undefined\";\nconst composableNames = [\n \"getActiveHead\",\n \"useHead\",\n \"useSeoMeta\",\n \"useHeadSafe\",\n \"useServerHead\",\n \"useServerSeoMeta\",\n \"useServerHeadSafe\"\n];\n\nfunction defineHeadPlugin(plugin) {\n return plugin;\n}\n\nfunction hashCode(s) {\n let h = 9;\n for (let i = 0; i < s.length; )\n h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9);\n return ((h ^ h >>> 9) + 65536).toString(16).substring(1, 8).toLowerCase();\n}\nfunction hashTag(tag) {\n if (tag._h) {\n return tag._h;\n }\n if (tag._d) {\n return hashCode(tag._d);\n }\n let content = `${tag.tag}:${tag.textContent || tag.innerHTML || \"\"}:`;\n for (const key in tag.props) {\n content += `${key}:${String(tag.props[key])},`;\n }\n return hashCode(content);\n}\n\nconst p = (p2) => ({ keyValue: p2, metaKey: \"property\" });\nconst k = (p2) => ({ keyValue: p2 });\nconst MetaPackingSchema = {\n appleItunesApp: {\n unpack: {\n entrySeparator: \", \",\n resolve({ key, value }) {\n return `${fixKeyCase(key)}=${value}`;\n }\n }\n },\n articleExpirationTime: p(\"article:expiration_time\"),\n articleModifiedTime: p(\"article:modified_time\"),\n articlePublishedTime: p(\"article:published_time\"),\n bookReleaseDate: p(\"book:release_date\"),\n charset: {\n metaKey: \"charset\"\n },\n contentSecurityPolicy: {\n unpack: {\n entrySeparator: \"; \",\n resolve({ key, value }) {\n return `${fixKeyCase(key)} ${value}`;\n }\n },\n metaKey: \"http-equiv\"\n },\n contentType: {\n metaKey: \"http-equiv\"\n },\n defaultStyle: {\n metaKey: \"http-equiv\"\n },\n fbAppId: p(\"fb:app_id\"),\n msapplicationConfig: k(\"msapplication-Config\"),\n msapplicationTileColor: k(\"msapplication-TileColor\"),\n msapplicationTileImage: k(\"msapplication-TileImage\"),\n ogAudioSecureUrl: p(\"og:audio:secure_url\"),\n ogAudioUrl: p(\"og:audio\"),\n ogImageSecureUrl: p(\"og:image:secure_url\"),\n ogImageUrl: p(\"og:image\"),\n ogSiteName: p(\"og:site_name\"),\n ogVideoSecureUrl: p(\"og:video:secure_url\"),\n ogVideoUrl: p(\"og:video\"),\n profileFirstName: p(\"profile:first_name\"),\n profileLastName: p(\"profile:last_name\"),\n profileUsername: p(\"profile:username\"),\n refresh: {\n metaKey: \"http-equiv\",\n unpack: {\n entrySeparator: \";\",\n resolve({ key, value }) {\n if (key === \"seconds\")\n return `${value}`;\n }\n }\n },\n robots: {\n unpack: {\n entrySeparator: \", \",\n resolve({ key, value }) {\n if (typeof value === \"boolean\")\n return `${fixKeyCase(key)}`;\n else\n return `${fixKeyCase(key)}:${value}`;\n }\n }\n },\n xUaCompatible: {\n metaKey: \"http-equiv\"\n }\n};\nconst openGraphNamespaces = /* @__PURE__ */ new Set([\n \"og\",\n \"book\",\n \"article\",\n \"profile\"\n]);\nfunction resolveMetaKeyType(key) {\n const fKey = fixKeyCase(key);\n const prefixIndex = fKey.indexOf(\":\");\n if (openGraphNamespaces.has(fKey.substring(0, prefixIndex)))\n return \"property\";\n return MetaPackingSchema[key]?.metaKey || \"name\";\n}\nfunction resolveMetaKeyValue(key) {\n return MetaPackingSchema[key]?.keyValue || fixKeyCase(key);\n}\nfunction fixKeyCase(key) {\n const updated = key.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n const prefixIndex = updated.indexOf(\"-\");\n const fKey = updated.substring(0, prefixIndex);\n if (fKey === \"twitter\" || openGraphNamespaces.has(fKey))\n return key.replace(/([A-Z])/g, \":$1\").toLowerCase();\n return updated;\n}\nfunction changeKeyCasingDeep(input) {\n if (Array.isArray(input)) {\n return input.map((entry) => changeKeyCasingDeep(entry));\n }\n if (typeof input !== \"object\" || Array.isArray(input))\n return input;\n const output = {};\n for (const key in input) {\n if (!Object.prototype.hasOwnProperty.call(input, key)) {\n continue;\n }\n output[fixKeyCase(key)] = changeKeyCasingDeep(input[key]);\n }\n return output;\n}\nfunction resolvePackedMetaObjectValue(value, key) {\n const definition = MetaPackingSchema[key];\n if (key === \"refresh\")\n return `${value.seconds};url=${value.url}`;\n return unpackToString(\n changeKeyCasingDeep(value),\n {\n keyValueSeparator: \"=\",\n entrySeparator: \", \",\n resolve({ value: value2, key: key2 }) {\n if (value2 === null)\n return \"\";\n if (typeof value2 === \"boolean\")\n return `${key2}`;\n },\n ...definition?.unpack\n }\n );\n}\nconst ObjectArrayEntries = /* @__PURE__ */ new Set([\"og:image\", \"og:video\", \"og:audio\", \"twitter:image\"]);\nfunction sanitize(input) {\n const out = {};\n for (const k2 in input) {\n if (!Object.prototype.hasOwnProperty.call(input, k2)) {\n continue;\n }\n const v = input[k2];\n if (String(v) !== \"false\" && k2)\n out[k2] = v;\n }\n return out;\n}\nfunction handleObjectEntry(key, v) {\n const value = sanitize(v);\n const fKey = fixKeyCase(key);\n const attr = resolveMetaKeyType(fKey);\n if (ObjectArrayEntries.has(fKey)) {\n const input = {};\n for (const k2 in value) {\n if (!Object.prototype.hasOwnProperty.call(value, k2)) {\n continue;\n }\n input[`${key}${k2 === \"url\" ? \"\" : `${k2[0].toUpperCase()}${k2.slice(1)}`}`] = value[k2];\n }\n return unpackMeta(input).sort((a, b) => (a[attr]?.length || 0) - (b[attr]?.length || 0));\n }\n return [{ [attr]: fKey, ...value }];\n}\nfunction unpackMeta(input) {\n const extras = [];\n const primitives = {};\n for (const key in input) {\n if (!Object.prototype.hasOwnProperty.call(input, key)) {\n continue;\n }\n const value = input[key];\n if (!Array.isArray(value)) {\n if (typeof value === \"object\" && value) {\n if (ObjectArrayEntries.has(fixKeyCase(key))) {\n extras.push(...handleObjectEntry(key, value));\n continue;\n }\n primitives[key] = sanitize(value);\n } else {\n primitives[key] = value;\n }\n continue;\n }\n for (const v of value) {\n extras.push(...typeof v === \"string\" ? unpackMeta({ [key]: v }) : handleObjectEntry(key, v));\n }\n }\n const meta = unpackToArray(primitives, {\n key({ key }) {\n return resolveMetaKeyType(key);\n },\n value({ key }) {\n return key === \"charset\" ? \"charset\" : \"content\";\n },\n resolveKeyData({ key }) {\n return resolveMetaKeyValue(key);\n },\n resolveValueData({ value, key }) {\n if (value === null)\n return \"_null\";\n if (typeof value === \"object\")\n return resolvePackedMetaObjectValue(value, key);\n return typeof value === \"number\" ? value.toString() : value;\n }\n });\n return [...extras, ...meta].map((m) => {\n if (m.content === \"_null\")\n m.content = null;\n return m;\n });\n}\nfunction packMeta(inputs) {\n const mappedPackingSchema = Object.entries(MetaPackingSchema).map(([key, value]) => [key, value.keyValue]);\n return packArray(inputs, {\n key: [\"name\", \"property\", \"httpEquiv\", \"http-equiv\", \"charset\"],\n value: [\"content\", \"charset\"],\n resolveKey(k2) {\n let key = mappedPackingSchema.filter((sk) => sk[1] === k2)?.[0]?.[0] || k2;\n const replacer = (_, letter) => letter?.toUpperCase();\n key = key.replace(/:([a-z])/g, replacer).replace(/-([a-z])/g, replacer);\n return key;\n }\n });\n}\n\nfunction thenable(val, thenFn) {\n if (val instanceof Promise) {\n return val.then(thenFn);\n }\n return thenFn(val);\n}\n\nfunction normaliseTag(tagName, input, e, normalizedProps) {\n const props = normalizedProps || normaliseProps(\n // explicitly check for an object\n // @ts-expect-error untyped\n typeof input === \"object\" && typeof input !== \"function\" && !(input instanceof Promise) ? { ...input } : { [tagName === \"script\" || tagName === \"noscript\" || tagName === \"style\" ? \"innerHTML\" : \"textContent\"]: input },\n tagName === \"templateParams\" || tagName === \"titleTemplate\"\n );\n if (props instanceof Promise) {\n return props.then((val) => normaliseTag(tagName, input, e, val));\n }\n const tag = {\n tag: tagName,\n props\n };\n for (const k of TagConfigKeys) {\n const val = tag.props[k] !== void 0 ? tag.props[k] : e[k];\n if (val !== void 0) {\n if (!(k === \"innerHTML\" || k === \"textContent\" || k === \"children\") || TagsWithInnerContent.has(tag.tag)) {\n tag[k === \"children\" ? \"innerHTML\" : k] = val;\n }\n delete tag.props[k];\n }\n }\n if (tag.props.body) {\n tag.tagPosition = \"bodyClose\";\n delete tag.props.body;\n }\n if (tag.tag === \"script\") {\n if (typeof tag.innerHTML === \"object\") {\n tag.innerHTML = JSON.stringify(tag.innerHTML);\n tag.props.type = tag.props.type || \"application/json\";\n }\n }\n return Array.isArray(tag.props.content) ? tag.props.content.map((v) => ({ ...tag, props: { ...tag.props, content: v } })) : tag;\n}\nfunction normaliseStyleClassProps(key, v) {\n const sep = key === \"class\" ? \" \" : \";\";\n if (v && typeof v === \"object\" && !Array.isArray(v)) {\n v = Object.entries(v).filter(([, v2]) => v2).map(([k, v2]) => key === \"style\" ? `${k}:${v2}` : k);\n }\n return String(Array.isArray(v) ? v.join(sep) : v)?.split(sep).filter((c) => Boolean(c.trim())).join(sep);\n}\nfunction nestedNormaliseProps(props, virtual, keys, startIndex) {\n for (let i = startIndex; i < keys.length; i += 1) {\n const k = keys[i];\n if (k === \"class\" || k === \"style\") {\n props[k] = normaliseStyleClassProps(k, props[k]);\n continue;\n }\n if (props[k] instanceof Promise) {\n return props[k].then((val) => {\n props[k] = val;\n return nestedNormaliseProps(props, virtual, keys, i);\n });\n }\n if (!virtual && !TagConfigKeys.has(k)) {\n const v = String(props[k]);\n const isDataKey = k.startsWith(\"data-\");\n if (v === \"true\" || v === \"\") {\n props[k] = isDataKey ? \"true\" : true;\n } else if (!props[k]) {\n if (isDataKey && v === \"false\")\n props[k] = \"false\";\n else\n delete props[k];\n }\n }\n }\n}\nfunction normaliseProps(props, virtual = false) {\n const resolvedProps = nestedNormaliseProps(props, virtual, Object.keys(props), 0);\n if (resolvedProps instanceof Promise) {\n return resolvedProps.then(() => props);\n }\n return props;\n}\nconst TagEntityBits = 10;\nfunction nestedNormaliseEntryTags(headTags, tagPromises, startIndex) {\n for (let i = startIndex; i < tagPromises.length; i += 1) {\n const tags = tagPromises[i];\n if (tags instanceof Promise) {\n return tags.then((val) => {\n tagPromises[i] = val;\n return nestedNormaliseEntryTags(headTags, tagPromises, i);\n });\n }\n if (Array.isArray(tags)) {\n headTags.push(...tags);\n } else {\n headTags.push(tags);\n }\n }\n}\nfunction normaliseEntryTags(e) {\n const tagPromises = [];\n const input = e.resolvedInput;\n for (const k in input) {\n if (!Object.prototype.hasOwnProperty.call(input, k)) {\n continue;\n }\n const v = input[k];\n if (v === void 0 || !ValidHeadTags.has(k)) {\n continue;\n }\n if (Array.isArray(v)) {\n for (const props of v) {\n tagPromises.push(normaliseTag(k, props, e));\n }\n continue;\n }\n tagPromises.push(normaliseTag(k, v, e));\n }\n if (tagPromises.length === 0) {\n return [];\n }\n const headTags = [];\n return thenable(nestedNormaliseEntryTags(headTags, tagPromises, 0), () => headTags.map((t, i) => {\n t._e = e._i;\n e.mode && (t._m = e.mode);\n t._p = (e._i << TagEntityBits) + i;\n return t;\n }));\n}\n\nconst WhitelistAttributes = {\n htmlAttrs: [\"id\", \"class\", \"lang\", \"dir\"],\n bodyAttrs: [\"id\", \"class\"],\n meta: [\"id\", \"name\", \"property\", \"charset\", \"content\"],\n noscript: [\"id\", \"textContent\"],\n script: [\"id\", \"type\", \"textContent\"],\n link: [\"id\", \"color\", \"crossorigin\", \"fetchpriority\", \"href\", \"hreflang\", \"imagesrcset\", \"imagesizes\", \"integrity\", \"media\", \"referrerpolicy\", \"rel\", \"sizes\", \"type\"]\n};\nfunction acceptDataAttrs(value) {\n const filtered = {};\n Object.keys(value || {}).filter((a) => a.startsWith(\"data-\")).forEach((a) => {\n filtered[a] = value[a];\n });\n return filtered;\n}\nfunction whitelistSafeInput(input) {\n const filtered = {};\n Object.keys(input).forEach((key) => {\n const tagValue = input[key];\n if (!tagValue)\n return;\n switch (key) {\n // always safe\n case \"title\":\n case \"titleTemplate\":\n case \"templateParams\":\n filtered[key] = tagValue;\n break;\n case \"htmlAttrs\":\n case \"bodyAttrs\":\n filtered[key] = acceptDataAttrs(tagValue);\n WhitelistAttributes[key].forEach((a) => {\n if (tagValue[a])\n filtered[key][a] = tagValue[a];\n });\n break;\n // meta is safe, except for http-equiv\n case \"meta\":\n if (Array.isArray(tagValue)) {\n filtered[key] = tagValue.map((meta) => {\n const safeMeta = acceptDataAttrs(meta);\n WhitelistAttributes.meta.forEach((key2) => {\n if (meta[key2])\n safeMeta[key2] = meta[key2];\n });\n return safeMeta;\n }).filter((meta) => Object.keys(meta).length > 0);\n }\n break;\n // link tags we don't allow stylesheets, scripts, preloading, prerendering, prefetching, etc\n case \"link\":\n if (Array.isArray(tagValue)) {\n filtered[key] = tagValue.map((meta) => {\n const link = acceptDataAttrs(meta);\n WhitelistAttributes.link.forEach((key2) => {\n const val = meta[key2];\n if (key2 === \"rel\" && (val === \"stylesheet\" || val === \"canonical\" || val === \"modulepreload\" || val === \"prerender\" || val === \"preload\" || val === \"prefetch\"))\n return;\n if (key2 === \"href\") {\n if (val.includes(\"javascript:\") || val.includes(\"data:\"))\n return;\n link[key2] = val;\n } else if (val) {\n link[key2] = val;\n }\n });\n return link;\n }).filter((link) => Object.keys(link).length > 1 && !!link.rel);\n }\n break;\n case \"noscript\":\n if (Array.isArray(tagValue)) {\n filtered[key] = tagValue.map((meta) => {\n const noscript = acceptDataAttrs(meta);\n WhitelistAttributes.noscript.forEach((key2) => {\n if (meta[key2])\n noscript[key2] = meta[key2];\n });\n return noscript;\n }).filter((meta) => Object.keys(meta).length > 0);\n }\n break;\n // we only allow JSON in scripts\n case \"script\":\n if (Array.isArray(tagValue)) {\n filtered[key] = tagValue.map((script) => {\n const safeScript = acceptDataAttrs(script);\n WhitelistAttributes.script.forEach((s) => {\n if (script[s]) {\n if (s === \"textContent\") {\n try {\n const jsonVal = typeof script[s] === \"string\" ? JSON.parse(script[s]) : script[s];\n safeScript[s] = JSON.stringify(jsonVal, null, 0);\n } catch (e) {\n }\n } else {\n safeScript[s] = script[s];\n }\n }\n });\n return safeScript;\n }).filter((meta) => Object.keys(meta).length > 0);\n }\n break;\n }\n });\n return filtered;\n}\n\nconst NetworkEvents = /* @__PURE__ */ new Set([\"onload\", \"onerror\", \"onabort\", \"onprogress\", \"onloadstart\"]);\nconst ScriptNetworkEvents = /* @__PURE__ */ new Set([\"onload\", \"onerror\"]);\n\nconst TAG_WEIGHTS = {\n // tags\n base: -10,\n title: 10\n};\nconst TAG_ALIASES = {\n // relative scores to their default values\n critical: -80,\n high: -10,\n low: 20\n};\nfunction tagWeight(tag) {\n const priority = tag.tagPriority;\n if (typeof priority === \"number\")\n return priority;\n let weight = 100;\n if (tag.tag === \"meta\") {\n if (tag.props[\"http-equiv\"] === \"content-security-policy\")\n weight = -30;\n else if (tag.props.charset)\n weight = -20;\n else if (tag.props.name === \"viewport\")\n weight = -15;\n } else if (tag.tag === \"link\" && tag.props.rel === \"preconnect\") {\n weight = 20;\n } else if (tag.tag in TAG_WEIGHTS) {\n weight = TAG_WEIGHTS[tag.tag];\n }\n if (priority && priority in TAG_ALIASES) {\n return weight + TAG_ALIASES[priority];\n }\n return weight;\n}\nconst SortModifiers = [{ prefix: \"before:\", offset: -1 }, { prefix: \"after:\", offset: 1 }];\n\nconst allowedMetaProperties = [\"name\", \"property\", \"http-equiv\"];\nfunction tagDedupeKey(tag) {\n const { props, tag: tagName } = tag;\n if (UniqueTags.has(tagName))\n return tagName;\n if (tagName === \"link\" && props.rel === \"canonical\")\n return \"canonical\";\n if (props.charset)\n return \"charset\";\n if (props.id) {\n return `${tagName}:id:${props.id}`;\n }\n for (const n of allowedMetaProperties) {\n if (props[n] !== void 0) {\n return `${tagName}:${n}:${props[n]}`;\n }\n }\n return false;\n}\n\nconst sepSub = \"%separator\";\nfunction sub(p, token, isJson = false) {\n let val;\n if (token === \"s\" || token === \"pageTitle\") {\n val = p.pageTitle;\n } else if (token.includes(\".\")) {\n const dotIndex = token.indexOf(\".\");\n val = p[token.substring(0, dotIndex)]?.[token.substring(dotIndex + 1)];\n } else {\n val = p[token];\n }\n if (val !== void 0) {\n return isJson ? (val || \"\").replace(/\"/g, '\\\\\"') : val || \"\";\n }\n return void 0;\n}\nconst sepSubRe = new RegExp(`${sepSub}(?:\\\\s*${sepSub})*`, \"g\");\nfunction processTemplateParams(s, p, sep, isJson = false) {\n if (typeof s !== \"string\" || !s.includes(\"%\"))\n return s;\n let decoded = s;\n try {\n decoded = decodeURI(s);\n } catch {\n }\n const tokens = decoded.match(/%\\w+(?:\\.\\w+)?/g);\n if (!tokens) {\n return s;\n }\n const hasSepSub = s.includes(sepSub);\n s = s.replace(/%\\w+(?:\\.\\w+)?/g, (token) => {\n if (token === sepSub || !tokens.includes(token)) {\n return token;\n }\n const re = sub(p, token.slice(1), isJson);\n return re !== void 0 ? re : token;\n }).trim();\n if (hasSepSub) {\n if (s.endsWith(sepSub))\n s = s.slice(0, -sepSub.length);\n if (s.startsWith(sepSub))\n s = s.slice(sepSub.length);\n s = s.replace(sepSubRe, sep).trim();\n }\n return s;\n}\n\nfunction resolveTitleTemplate(template, title) {\n if (template == null)\n return title || null;\n if (typeof template === \"function\")\n return template(title);\n return template;\n}\n\nexport { HasElementTags, IsBrowser, NetworkEvents, ScriptNetworkEvents, SelfClosingTags, SortModifiers, TAG_ALIASES, TAG_WEIGHTS, TagConfigKeys, TagEntityBits, TagsWithInnerContent, UniqueTags, ValidHeadTags, asArray, composableNames, defineHeadPlugin, hashCode, hashTag, normaliseEntryTags, normaliseProps, normaliseStyleClassProps, normaliseTag, packMeta, processTemplateParams, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, resolveTitleTemplate, tagDedupeKey, tagWeight, thenable, unpackMeta, whitelistSafeInput };\n","import { HasElementTags, hashTag, normaliseProps, tagDedupeKey, defineHeadPlugin } from '@unhead/shared';\n\nasync function renderDOMHead(head, options = {}) {\n const dom = options.document || head.resolvedOptions.document;\n if (!dom || !head.dirty)\n return;\n const beforeRenderCtx = { shouldRender: true, tags: [] };\n await head.hooks.callHook(\"dom:beforeRender\", beforeRenderCtx);\n if (!beforeRenderCtx.shouldRender)\n return;\n if (head._domUpdatePromise) {\n return head._domUpdatePromise;\n }\n head._domUpdatePromise = new Promise(async (resolve) => {\n const tags = (await head.resolveTags()).map((tag) => ({\n tag,\n id: HasElementTags.has(tag.tag) ? hashTag(tag) : tag.tag,\n shouldRender: true\n }));\n let state = head._dom;\n if (!state) {\n state = {\n elMap: { htmlAttrs: dom.documentElement, bodyAttrs: dom.body }\n };\n const takenDedupeKeys = /* @__PURE__ */ new Set();\n for (const key of [\"body\", \"head\"]) {\n const children = dom[key]?.children;\n for (const c of children) {\n const tag = c.tagName.toLowerCase();\n if (!HasElementTags.has(tag)) {\n continue;\n }\n const t = {\n tag,\n props: await normaliseProps(\n c.getAttributeNames().reduce((props, name) => ({ ...props, [name]: c.getAttribute(name) }), {})\n ),\n innerHTML: c.innerHTML\n };\n const dedupeKey = tagDedupeKey(t);\n let d = dedupeKey;\n let i = 1;\n while (d && takenDedupeKeys.has(d))\n d = `${dedupeKey}:${i++}`;\n if (d) {\n t._d = d;\n takenDedupeKeys.add(d);\n }\n state.elMap[c.getAttribute(\"data-hid\") || hashTag(t)] = c;\n }\n }\n }\n state.pendingSideEffects = { ...state.sideEffects };\n state.sideEffects = {};\n function track(id, scope, fn) {\n const k = `${id}:${scope}`;\n state.sideEffects[k] = fn;\n delete state.pendingSideEffects[k];\n }\n function trackCtx({ id, $el, tag }) {\n const isAttrTag = tag.tag.endsWith(\"Attrs\");\n state.elMap[id] = $el;\n if (!isAttrTag) {\n if (tag.textContent && tag.textContent !== $el.textContent) {\n $el.textContent = tag.textContent;\n }\n if (tag.innerHTML && tag.innerHTML !== $el.innerHTML) {\n $el.innerHTML = tag.innerHTML;\n }\n track(id, \"el\", () => {\n state.elMap[id]?.remove();\n delete state.elMap[id];\n });\n }\n if (tag._eventHandlers) {\n for (const k in tag._eventHandlers) {\n if (!Object.prototype.hasOwnProperty.call(tag._eventHandlers, k)) {\n continue;\n }\n if ($el.getAttribute(`data-${k}`) !== \"\") {\n (tag.tag === \"bodyAttrs\" ? dom.defaultView : $el).addEventListener(\n // onload -> load\n k.substring(2),\n tag._eventHandlers[k].bind($el)\n );\n $el.setAttribute(`data-${k}`, \"\");\n }\n }\n }\n for (const k in tag.props) {\n if (!Object.prototype.hasOwnProperty.call(tag.props, k)) {\n continue;\n }\n const value = tag.props[k];\n const ck = `attr:${k}`;\n if (k === \"class\") {\n if (!value) {\n continue;\n }\n for (const c of value.split(\" \")) {\n isAttrTag && track(id, `${ck}:${c}`, () => $el.classList.remove(c));\n !$el.classList.contains(c) && $el.classList.add(c);\n }\n } else if (k === \"style\") {\n if (!value) {\n continue;\n }\n for (const c of value.split(\";\")) {\n const propIndex = c.indexOf(\":\");\n const k2 = c.substring(0, propIndex).trim();\n const v = c.substring(propIndex + 1).trim();\n track(id, `${ck}:${k2}`, () => {\n $el.style.removeProperty(k2);\n });\n $el.style.setProperty(k2, v);\n }\n } else {\n $el.getAttribute(k) !== value && $el.setAttribute(k, value === true ? \"\" : String(value));\n isAttrTag && track(id, ck, () => $el.removeAttribute(k));\n }\n }\n }\n const pending = [];\n const frag = {\n bodyClose: void 0,\n bodyOpen: void 0,\n head: void 0\n };\n for (const ctx of tags) {\n const { tag, shouldRender, id } = ctx;\n if (!shouldRender)\n continue;\n if (tag.tag === \"title\") {\n dom.title = tag.textContent;\n continue;\n }\n ctx.$el = ctx.$el || state.elMap[id];\n if (ctx.$el) {\n trackCtx(ctx);\n } else if (HasElementTags.has(tag.tag)) {\n pending.push(ctx);\n }\n }\n for (const ctx of pending) {\n const pos = ctx.tag.tagPosition || \"head\";\n ctx.$el = dom.createElement(ctx.tag.tag);\n trackCtx(ctx);\n frag[pos] = frag[pos] || dom.createDocumentFragment();\n frag[pos].appendChild(ctx.$el);\n }\n for (const ctx of tags)\n await head.hooks.callHook(\"dom:renderTag\", ctx, dom, track);\n frag.head && dom.head.appendChild(frag.head);\n frag.bodyOpen && dom.body.insertBefore(frag.bodyOpen, dom.body.firstChild);\n frag.bodyClose && dom.body.appendChild(frag.bodyClose);\n for (const k in state.pendingSideEffects) {\n state.pendingSideEffects[k]();\n }\n head._dom = state;\n await head.hooks.callHook(\"dom:rendered\", { renders: tags });\n resolve();\n }).finally(() => {\n head._domUpdatePromise = void 0;\n head.dirty = false;\n });\n return head._domUpdatePromise;\n}\n\nfunction debouncedRenderDOMHead(head, options = {}) {\n const fn = options.delayFn || ((fn2) => setTimeout(fn2, 10));\n return head._domDebouncedUpdatePromise = head._domDebouncedUpdatePromise || new Promise((resolve) => fn(() => {\n return renderDOMHead(head, options).then(() => {\n delete head._domDebouncedUpdatePromise;\n resolve();\n });\n }));\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction DomPlugin(options) {\n return defineHeadPlugin((head) => {\n const initialPayload = head.resolvedOptions.document?.head.querySelector('script[id=\"unhead:payload\"]')?.innerHTML || false;\n if (initialPayload) {\n head.push(JSON.parse(initialPayload));\n }\n return {\n mode: \"client\",\n hooks: {\n \"entries:updated\": (head2) => {\n debouncedRenderDOMHead(head2, options);\n }\n }\n };\n });\n}\n\nexport { DomPlugin, debouncedRenderDOMHead, renderDOMHead };\n","function flatHooks(configHooks, hooks = {}, parentName) {\n for (const key in configHooks) {\n const subHook = configHooks[key];\n const name = parentName ? `${parentName}:${key}` : key;\n if (typeof subHook === \"object\" && subHook !== null) {\n flatHooks(subHook, hooks, name);\n } else if (typeof subHook === \"function\") {\n hooks[name] = subHook;\n }\n }\n return hooks;\n}\nfunction mergeHooks(...hooks) {\n const finalHooks = {};\n for (const hook of hooks) {\n const flatenHook = flatHooks(hook);\n for (const key in flatenHook) {\n if (finalHooks[key]) {\n finalHooks[key].push(flatenHook[key]);\n } else {\n finalHooks[key] = [flatenHook[key]];\n }\n }\n }\n for (const key in finalHooks) {\n if (finalHooks[key].length > 1) {\n const array = finalHooks[key];\n finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_));\n } else {\n finalHooks[key] = finalHooks[key][0];\n }\n }\n return finalHooks;\n}\nfunction serial(tasks, function_) {\n return tasks.reduce(\n (promise, task) => promise.then(() => function_(task)),\n Promise.resolve()\n );\n}\nconst defaultTask = { run: (function_) => function_() };\nconst _createTask = () => defaultTask;\nconst createTask = typeof console.createTask !== \"undefined\" ? console.createTask : _createTask;\nfunction serialTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),\n Promise.resolve()\n );\n}\nfunction parallelTaskCaller(hooks, args) {\n const name = args.shift();\n const task = createTask(name);\n return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));\n}\nfunction serialCaller(hooks, arguments_) {\n return hooks.reduce(\n (promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])),\n Promise.resolve()\n );\n}\nfunction parallelCaller(hooks, args) {\n return Promise.all(hooks.map((hook) => hook(...args || [])));\n}\nfunction callEachWith(callbacks, arg0) {\n for (const callback of [...callbacks]) {\n callback(arg0);\n }\n}\n\nclass Hookable {\n constructor() {\n this._hooks = {};\n this._before = void 0;\n this._after = void 0;\n this._deprecatedMessages = void 0;\n this._deprecatedHooks = {};\n this.hook = this.hook.bind(this);\n this.callHook = this.callHook.bind(this);\n this.callHookWith = this.callHookWith.bind(this);\n }\n hook(name, function_, options = {}) {\n if (!name || typeof function_ !== \"function\") {\n return () => {\n };\n }\n const originalName = name;\n let dep;\n while (this._deprecatedHooks[name]) {\n dep = this._deprecatedHooks[name];\n name = dep.to;\n }\n if (dep && !options.allowDeprecated) {\n let message = dep.message;\n if (!message) {\n message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : \"\");\n }\n if (!this._deprecatedMessages) {\n this._deprecatedMessages = /* @__PURE__ */ new Set();\n }\n if (!this._deprecatedMessages.has(message)) {\n console.warn(message);\n this._deprecatedMessages.add(message);\n }\n }\n if (!function_.name) {\n try {\n Object.defineProperty(function_, \"name\", {\n get: () => \"_\" + name.replace(/\\W+/g, \"_\") + \"_hook_cb\",\n configurable: true\n });\n } catch {\n }\n }\n this._hooks[name] = this._hooks[name] || [];\n this._hooks[name].push(function_);\n return () => {\n if (function_) {\n this.removeHook(name, function_);\n function_ = void 0;\n }\n };\n }\n hookOnce(name, function_) {\n let _unreg;\n let _function = (...arguments_) => {\n if (typeof _unreg === \"function\") {\n _unreg();\n }\n _unreg = void 0;\n _function = void 0;\n return function_(...arguments_);\n };\n _unreg = this.hook(name, _function);\n return _unreg;\n }\n removeHook(name, function_) {\n if (this._hooks[name]) {\n const index = this._hooks[name].indexOf(function_);\n if (index !== -1) {\n this._hooks[name].splice(index, 1);\n }\n if (this._hooks[name].length === 0) {\n delete this._hooks[name];\n }\n }\n }\n deprecateHook(name, deprecated) {\n this._deprecatedHooks[name] = typeof deprecated === \"string\" ? { to: deprecated } : deprecated;\n const _hooks = this._hooks[name] || [];\n delete this._hooks[name];\n for (const hook of _hooks) {\n this.hook(name, hook);\n }\n }\n deprecateHooks(deprecatedHooks) {\n Object.assign(this._deprecatedHooks, deprecatedHooks);\n for (const name in deprecatedHooks) {\n this.deprecateHook(name, deprecatedHooks[name]);\n }\n }\n addHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n const removeFns = Object.keys(hooks).map(\n (key) => this.hook(key, hooks[key])\n );\n return () => {\n for (const unreg of removeFns.splice(0, removeFns.length)) {\n unreg();\n }\n };\n }\n removeHooks(configHooks) {\n const hooks = flatHooks(configHooks);\n for (const key in hooks) {\n this.removeHook(key, hooks[key]);\n }\n }\n removeAllHooks() {\n for (const key in this._hooks) {\n delete this._hooks[key];\n }\n }\n callHook(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(serialTaskCaller, name, ...arguments_);\n }\n callHookParallel(name, ...arguments_) {\n arguments_.unshift(name);\n return this.callHookWith(parallelTaskCaller, name, ...arguments_);\n }\n callHookWith(caller, name, ...arguments_) {\n const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;\n if (this._before) {\n callEachWith(this._before, event);\n }\n const result = caller(\n name in this._hooks ? [...this._hooks[name]] : [],\n arguments_\n );\n if (result instanceof Promise) {\n return result.finally(() => {\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n });\n }\n if (this._after && event) {\n callEachWith(this._after, event);\n }\n return result;\n }\n beforeEach(function_) {\n this._before = this._before || [];\n this._before.push(function_);\n return () => {\n if (this._before !== void 0) {\n const index = this._before.indexOf(function_);\n if (index !== -1) {\n this._before.splice(index, 1);\n }\n }\n };\n }\n afterEach(function_) {\n this._after = this._after || [];\n this._after.push(function_);\n return () => {\n if (this._after !== void 0) {\n const index = this._after.indexOf(function_);\n if (index !== -1) {\n this._after.splice(index, 1);\n }\n }\n };\n }\n}\nfunction createHooks() {\n return new Hookable();\n}\n\nconst isBrowser = typeof window !== \"undefined\";\nfunction createDebugger(hooks, _options = {}) {\n const options = {\n inspect: isBrowser,\n group: isBrowser,\n filter: () => true,\n ..._options\n };\n const _filter = options.filter;\n const filter = typeof _filter === \"string\" ? (name) => name.startsWith(_filter) : _filter;\n const _tag = options.tag ? `[${options.tag}] ` : \"\";\n const logPrefix = (event) => _tag + event.name + \"\".padEnd(event._id, \"\\0\");\n const _idCtr = {};\n const unsubscribeBefore = hooks.beforeEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n _idCtr[event.name] = _idCtr[event.name] || 0;\n event._id = _idCtr[event.name]++;\n console.time(logPrefix(event));\n });\n const unsubscribeAfter = hooks.afterEach((event) => {\n if (filter !== void 0 && !filter(event.name)) {\n return;\n }\n if (options.group) {\n console.groupCollapsed(event.name);\n }\n if (options.inspect) {\n console.timeLog(logPrefix(event), event.args);\n } else {\n console.timeEnd(logPrefix(event));\n }\n if (options.group) {\n console.groupEnd();\n }\n _idCtr[event.name]--;\n });\n return {\n /** Stop debugging and remove listeners */\n close: () => {\n unsubscribeBefore();\n unsubscribeAfter();\n }\n };\n}\n\nexport { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller };\n","import { DomPlugin } from '@unhead/dom';\nimport { defineHeadPlugin, tagDedupeKey, hashTag, tagWeight, HasElementTags, NetworkEvents, hashCode, SortModifiers, processTemplateParams, resolveTitleTemplate, IsBrowser, normaliseEntryTags, composableNames, whitelistSafeInput, ScriptNetworkEvents, unpackMeta } from '@unhead/shared';\nexport { composableNames } from '@unhead/shared';\nimport { createHooks } from 'hookable';\n\nconst UsesMergeStrategy = /* @__PURE__ */ new Set([\"templateParams\", \"htmlAttrs\", \"bodyAttrs\"]);\nconst DedupePlugin = defineHeadPlugin({\n hooks: {\n \"tag:normalise\": ({ tag }) => {\n if (tag.props.hid) {\n tag.key = tag.props.hid;\n delete tag.props.hid;\n }\n if (tag.props.vmid) {\n tag.key = tag.props.vmid;\n delete tag.props.vmid;\n }\n if (tag.props.key) {\n tag.key = tag.props.key;\n delete tag.props.key;\n }\n const generatedKey = tagDedupeKey(tag);\n if (generatedKey && !generatedKey.startsWith(\"meta:og:\") && !generatedKey.startsWith(\"meta:twitter:\")) {\n delete tag.key;\n }\n const dedupe = generatedKey || (tag.key ? `${tag.tag}:${tag.key}` : false);\n if (dedupe)\n tag._d = dedupe;\n },\n \"tags:resolve\": (ctx) => {\n const deduping = /* @__PURE__ */ Object.create(null);\n for (const tag of ctx.tags) {\n const dedupeKey = (tag.key ? `${tag.tag}:${tag.key}` : tag._d) || hashTag(tag);\n const dupedTag = deduping[dedupeKey];\n if (dupedTag) {\n let strategy = tag?.tagDuplicateStrategy;\n if (!strategy && UsesMergeStrategy.has(tag.tag))\n strategy = \"merge\";\n if (strategy === \"merge\") {\n const oldProps = dupedTag.props;\n if (oldProps.style && tag.props.style) {\n if (oldProps.style[oldProps.style.length - 1] !== \";\") {\n oldProps.style += \";\";\n }\n tag.props.style = `${oldProps.style} ${tag.props.style}`;\n }\n if (oldProps.class && tag.props.class) {\n tag.props.class = `${oldProps.class} ${tag.props.class}`;\n } else if (oldProps.class) {\n tag.props.class = oldProps.class;\n }\n deduping[dedupeKey].props = {\n ...oldProps,\n ...tag.props\n };\n continue;\n } else if (tag._e === dupedTag._e) {\n dupedTag._duped = dupedTag._duped || [];\n tag._d = `${dupedTag._d}:${dupedTag._duped.length + 1}`;\n dupedTag._duped.push(tag);\n continue;\n } else if (tagWeight(tag) > tagWeight(dupedTag)) {\n continue;\n }\n }\n const hasProps = tag.innerHTML || tag.textContent || Object.keys(tag.props).length !== 0;\n if (!hasProps && HasElementTags.has(tag.tag)) {\n delete deduping[dedupeKey];\n continue;\n }\n deduping[dedupeKey] = tag;\n }\n const newTags = [];\n for (const key in deduping) {\n const tag = deduping[key];\n const dupes = tag._duped;\n newTags.push(tag);\n if (dupes) {\n delete tag._duped;\n newTags.push(...dupes);\n }\n }\n ctx.tags = newTags;\n ctx.tags = ctx.tags.filter((t) => !(t.tag === \"meta\" && (t.props.name || t.props.property) && !t.props.content));\n }\n }\n});\n\nconst ValidEventTags = /* @__PURE__ */ new Set([\"script\", \"link\", \"bodyAttrs\"]);\nconst EventHandlersPlugin = defineHeadPlugin((head) => ({\n hooks: {\n \"tags:resolve\": (ctx) => {\n for (const tag of ctx.tags) {\n if (!ValidEventTags.has(tag.tag)) {\n continue;\n }\n const props = tag.props;\n for (const key in props) {\n if (key[0] !== \"o\" || key[1] !== \"n\") {\n continue;\n }\n if (!Object.prototype.hasOwnProperty.call(props, key)) {\n continue;\n }\n const value = props[key];\n if (typeof value !== \"function\") {\n continue;\n }\n if (head.ssr && NetworkEvents.has(key)) {\n props[key] = `this.dataset.${key}fired = true`;\n } else {\n delete props[key];\n }\n tag._eventHandlers = tag._eventHandlers || {};\n tag._eventHandlers[key] = value;\n }\n if (head.ssr && tag._eventHandlers && (tag.props.src || tag.props.href)) {\n tag.key = tag.key || hashCode(tag.props.src || tag.props.href);\n }\n }\n },\n \"dom:renderTag\": ({ $el, tag }) => {\n const dataset = $el?.dataset;\n if (!dataset) {\n return;\n }\n for (const k in dataset) {\n if (!k.endsWith(\"fired\")) {\n continue;\n }\n const ek = k.slice(0, -5);\n if (!NetworkEvents.has(ek)) {\n continue;\n }\n tag._eventHandlers?.[ek]?.call($el, new Event(ek.substring(2)));\n }\n }\n }\n}));\n\nconst DupeableTags = /* @__PURE__ */ new Set([\"link\", \"style\", \"script\", \"noscript\"]);\nconst HashKeyedPlugin = defineHeadPlugin({\n hooks: {\n \"tag:normalise\": ({ tag }) => {\n if (tag.key && DupeableTags.has(tag.tag)) {\n tag.props[\"data-hid\"] = tag._h = hashCode(tag.key);\n }\n }\n }\n});\n\nconst PayloadPlugin = defineHeadPlugin({\n mode: \"server\",\n hooks: {\n \"tags:beforeResolve\": (ctx) => {\n const payload = {};\n let hasPayload = false;\n for (const tag of ctx.tags) {\n if (tag._m !== \"server\" || tag.tag !== \"titleTemplate\" && tag.tag !== \"templateParams\" && tag.tag !== \"title\") {\n continue;\n }\n payload[tag.tag] = tag.tag === \"title\" || tag.tag === \"titleTemplate\" ? tag.textContent : tag.props;\n hasPayload = true;\n }\n if (hasPayload) {\n ctx.tags.push({\n tag: \"script\",\n innerHTML: JSON.stringify(payload),\n props: { id: \"unhead:payload\", type: \"application/json\" }\n });\n }\n }\n }\n});\n\nconst SortPlugin = defineHeadPlugin({\n hooks: {\n \"tags:resolve\": (ctx) => {\n for (const tag of ctx.tags) {\n if (typeof tag.tagPriority !== \"string\") {\n continue;\n }\n for (const { prefix, offset } of SortModifiers) {\n if (!tag.tagPriority.startsWith(prefix)) {\n continue;\n }\n const key = tag.tagPriority.substring(prefix.length);\n const position = ctx.tags.find((tag2) => tag2._d === key)?._p;\n if (position !== void 0) {\n tag._p = position + offset;\n break;\n }\n }\n }\n ctx.tags.sort((a, b) => {\n const aWeight = tagWeight(a);\n const bWeight = tagWeight(b);\n if (aWeight < bWeight) {\n return -1;\n } else if (aWeight > bWeight) {\n return 1;\n }\n return a._p - b._p;\n });\n }\n }\n});\n\nconst SupportedAttrs = {\n meta: \"content\",\n link: \"href\",\n htmlAttrs: \"lang\"\n};\nconst contentAttrs = [\"innerHTML\", \"textContent\"];\nconst TemplateParamsPlugin = defineHeadPlugin((head) => ({\n hooks: {\n \"tags:resolve\": (ctx) => {\n const { tags } = ctx;\n let templateParams;\n for (let i = 0; i < tags.length; i += 1) {\n const tag = tags[i];\n if (tag.tag !== \"templateParams\") {\n continue;\n }\n templateParams = ctx.tags.splice(i, 1)[0].props;\n i -= 1;\n }\n const params = templateParams || {};\n const sep = params.separator || \"|\";\n delete params.separator;\n params.pageTitle = processTemplateParams(\n // find templateParams\n params.pageTitle || tags.find((tag) => tag.tag === \"title\")?.textContent || \"\",\n params,\n sep\n );\n for (const tag of tags) {\n if (tag.processTemplateParams === false) {\n continue;\n }\n const v = SupportedAttrs[tag.tag];\n if (v && typeof tag.props[v] === \"string\") {\n tag.props[v] = processTemplateParams(tag.props[v], params, sep);\n } else if (tag.processTemplateParams || tag.tag === \"titleTemplate\" || tag.tag === \"title\") {\n for (const p of contentAttrs) {\n if (typeof tag[p] === \"string\")\n tag[p] = processTemplateParams(tag[p], params, sep, tag.tag === \"script\" && tag.props.type.endsWith(\"json\"));\n }\n }\n }\n head._templateParams = params;\n head._separator = sep;\n },\n \"tags:afterResolve\": ({ tags }) => {\n let title;\n for (let i = 0; i < tags.length; i += 1) {\n const tag = tags[i];\n if (tag.tag === \"title\" && tag.processTemplateParams !== false) {\n title = tag;\n }\n }\n if (title?.textContent) {\n title.textContent = processTemplateParams(title.textContent, head._templateParams, head._separator);\n }\n }\n }\n}));\n\nconst TitleTemplatePlugin = defineHeadPlugin({\n hooks: {\n \"tags:resolve\": (ctx) => {\n const { tags } = ctx;\n let titleTag;\n let titleTemplateTag;\n for (let i = 0; i < tags.length; i += 1) {\n const tag = tags[i];\n if (tag.tag === \"title\") {\n titleTag = tag;\n } else if (tag.tag === \"titleTemplate\") {\n titleTemplateTag = tag;\n }\n }\n if (titleTemplateTag && titleTag) {\n const newTitle = resolveTitleTemplate(\n titleTemplateTag.textContent,\n titleTag.textContent\n );\n if (newTitle !== null) {\n titleTag.textContent = newTitle || titleTag.textContent;\n } else {\n ctx.tags.splice(ctx.tags.indexOf(titleTag), 1);\n }\n } else if (titleTemplateTag) {\n const newTitle = resolveTitleTemplate(\n titleTemplateTag.textContent\n );\n if (newTitle !== null) {\n titleTemplateTag.textContent = newTitle;\n titleTemplateTag.tag = \"title\";\n titleTemplateTag = void 0;\n }\n }\n if (titleTemplateTag) {\n ctx.tags.splice(ctx.tags.indexOf(titleTemplateTag), 1);\n }\n }\n }\n});\n\nconst XSSPlugin = defineHeadPlugin({\n hooks: {\n \"tags:afterResolve\": (ctx) => {\n for (const tag of ctx.tags) {\n if (typeof tag.innerHTML === \"string\") {\n if (tag.innerHTML && (tag.props.type === \"application/ld+json\" || tag.props.type === \"application/json\")) {\n tag.innerHTML = tag.innerHTML.replace(/</g, \"\\\\u003C\");\n } else {\n tag.innerHTML = tag.innerHTML.replace(new RegExp(`</${tag.tag}`, \"g\"), `<\\\\/${tag.tag}`);\n }\n }\n }\n }\n }\n});\n\nlet activeHead;\n// @__NO_SIDE_EFFECTS__\nfunction createHead(options = {}) {\n const head = createHeadCore(options);\n head.use(DomPlugin());\n return activeHead = head;\n}\n// @__NO_SIDE_EFFECTS__\nfunction createServerHead(options = {}) {\n return activeHead = createHeadCore(options);\n}\nfunction filterMode(mode, ssr) {\n return !mode || mode === \"server\" && ssr || mode === \"client\" && !ssr;\n}\nfunction createHeadCore(options = {}) {\n const hooks = createHooks();\n hooks.addHooks(options.hooks || {});\n options.document = options.document || (IsBrowser ? document : void 0);\n const ssr = !options.document;\n const updated = () => {\n head.dirty = true;\n hooks.callHook(\"entries:updated\", head);\n };\n let entryCount = 0;\n let entries = [];\n const plugins = [];\n const head = {\n plugins,\n dirty: false,\n resolvedOptions: options,\n hooks,\n headEntries() {\n return entries;\n },\n use(p) {\n const plugin = typeof p === \"function\" ? p(head) : p;\n if (!plugin.key || !plugins.some((p2) => p2.key === plugin.key)) {\n plugins.push(plugin);\n filterMode(plugin.mode, ssr) && hooks.addHooks(plugin.hooks || {});\n }\n },\n push(input, entryOptions) {\n delete entryOptions?.head;\n const entry = {\n _i: entryCount++,\n input,\n ...entryOptions\n };\n if (filterMode(entry.mode, ssr)) {\n entries.push(entry);\n updated();\n }\n return {\n dispose() {\n entries = entries.filter((e) => e._i !== entry._i);\n updated();\n },\n // a patch is the same as creating a new entry, just a nice DX\n patch(input2) {\n for (const e of entries) {\n if (e._i === entry._i) {\n e.input = entry.input = input2;\n }\n }\n updated();\n }\n };\n },\n async resolveTags() {\n const resolveCtx = { tags: [], entries: [...entries] };\n await hooks.callHook(\"entries:resolve\", resolveCtx);\n for (const entry of resolveCtx.entries) {\n const resolved = entry.resolvedInput || entry.input;\n entry.resolvedInput = await (entry.transform ? entry.transform(resolved) : resolved);\n if (entry.resolvedInput) {\n for (const tag of await normaliseEntryTags(entry)) {\n const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions };\n await hooks.callHook(\"tag:normalise\", tagCtx);\n resolveCtx.tags.push(tagCtx.tag);\n }\n }\n }\n await hooks.callHook(\"tags:beforeResolve\", resolveCtx);\n await hooks.callHook(\"tags:resolve\", resolveCtx);\n await hooks.callHook(\"tags:afterResolve\", resolveCtx);\n return resolveCtx.tags;\n },\n ssr\n };\n [\n DedupePlugin,\n PayloadPlugin,\n EventHandlersPlugin,\n HashKeyedPlugin,\n SortPlugin,\n TemplateParamsPlugin,\n TitleTemplatePlugin,\n XSSPlugin,\n ...options?.plugins || []\n ].forEach((p) => head.use(p));\n head.hooks.callHook(\"init\", head);\n return head;\n}\n\nconst unheadComposablesImports = [\n {\n from: \"unhead\",\n imports: composableNames\n }\n];\n\nfunction getActiveHead() {\n return activeHead;\n}\n\nfunction useHead(input, options = {}) {\n const head = options.head || getActiveHead();\n return head?.push(input, options);\n}\n\nfunction useHeadSafe(input, options) {\n return useHead(input, {\n ...options,\n transform: whitelistSafeInput\n });\n}\n\nconst ScriptProxyTarget = Symbol(\"ScriptProxyTarget\");\nfunction scriptProxy() {\n}\nscriptProxy[ScriptProxyTarget] = true;\nfunction resolveScriptKey(input) {\n return input.key || hashCode(input.src || (typeof input.innerHTML === \"string\" ? input.innerHTML : \"\"));\n}\nfunction useScript(_input, _options) {\n const input = typeof _input === \"string\" ? { src: _input } : _input;\n const options = _options || {};\n const head = options.head || getActiveHead();\n if (!head)\n throw new Error(\"Missing Unhead context.\");\n const id = resolveScriptKey(input);\n const prevScript = head._scripts?.[id];\n if (prevScript) {\n prevScript.setupTriggerHandler(options.trigger);\n return prevScript;\n }\n options.beforeInit?.();\n const syncStatus = (s) => {\n script.status = s;\n head.hooks.callHook(`script:updated`, hookCtx);\n };\n ScriptNetworkEvents.forEach((fn) => {\n const _fn = typeof input[fn] === \"function\" ? input[fn].bind(options.eventContext) : null;\n input[fn] = (e) => {\n syncStatus(fn === \"onload\" ? \"loaded\" : fn === \"onerror\" ? \"error\" : \"loading\");\n _fn?.(e);\n };\n });\n const _cbs = { loaded: [], error: [] };\n const _registerCb = (key, cb) => {\n if (_cbs[key]) {\n const i = _cbs[key].push(cb);\n return () => _cbs[key]?.splice(i - 1, 1);\n }\n cb(script.instance);\n return () => {\n };\n };\n const loadPromise = new Promise((resolve) => {\n if (head.ssr)\n return;\n const emit = (api) => requestAnimationFrame(() => resolve(api));\n const _ = head.hooks.hook(\"script:updated\", ({ script: script2 }) => {\n const status = script2.status;\n if (script2.id === id && (status === \"loaded\" || status === \"error\")) {\n if (status === \"loaded\") {\n if (typeof options.use === \"function\") {\n const api = options.use();\n if (api) {\n emit(api);\n }\n } else {\n emit({});\n }\n } else if (status === \"error\") {\n resolve(false);\n }\n _();\n }\n });\n });\n const script = Object.assign(loadPromise, {\n instance: !head.ssr && options?.use?.() || null,\n proxy: null,\n id,\n status: \"awaitingLoad\",\n remove() {\n script._triggerAbortController?.abort();\n script._triggerPromises = [];\n if (script.entry) {\n script.entry.dispose();\n script.entry = void 0;\n syncStatus(\"removed\");\n delete head._scripts?.[id];\n return true;\n }\n return false;\n },\n load(cb) {\n script._triggerAbortController?.abort();\n script._triggerPromises = [];\n if (!script.entry) {\n syncStatus(\"loading\");\n const defaults = {\n defer: true,\n fetchpriority: \"low\"\n };\n if (input.src && (input.src.startsWith(\"http\") || input.src.startsWith(\"//\"))) {\n defaults.crossorigin = \"anonymous\";\n defaults.referrerpolicy = \"no-referrer\";\n }\n script.entry = head.push({\n script: [{ ...defaults, ...input, key: `script.${id}` }]\n }, options);\n }\n if (cb)\n _registerCb(\"loaded\", cb);\n return loadPromise;\n },\n onLoaded(cb) {\n return _registerCb(\"loaded\", cb);\n },\n onError(cb) {\n return _registerCb(\"error\", cb);\n },\n setupTriggerHandler(trigger) {\n if (script.status !== \"awaitingLoad\") {\n return;\n }\n if ((typeof trigger === \"undefined\" || trigger === \"client\") && !head.ssr || trigger === \"server\") {\n script.load();\n } else if (trigger instanceof Promise) {\n if (head.ssr) {\n return;\n }\n if (!script._triggerAbortController) {\n script._triggerAbortController = new AbortController();\n script._triggerAbortPromise = new Promise((resolve) => {\n script._triggerAbortController.signal.addEventListener(\"abort\", () => {\n script._triggerAbortController = null;\n resolve();\n });\n });\n }\n script._triggerPromises = script._triggerPromises || [];\n const idx = script._triggerPromises.push(Promise.race([\n trigger.then((v) => typeof v === \"undefined\" || v ? script.load : void 0),\n script._triggerAbortPromise\n ]).catch(() => {\n }).then((res2) => {\n res2?.();\n }).finally(() => {\n script._triggerPromises?.splice(idx, 1);\n }));\n } else if (typeof trigger === \"function\") {\n trigger(script.load);\n }\n },\n _cbs\n });\n loadPromise.then((api) => {\n if (api !== false) {\n script.instance = api;\n _cbs.loaded?.forEach((cb) => cb(api));\n _cbs.loaded = null;\n } else {\n _cbs.error?.forEach((cb) => cb());\n _cbs.error = null;\n }\n });\n const hookCtx = { script };\n script.setupTriggerHandler(options.trigger);\n script.$script = script;\n const proxyChain = (instance, accessor, accessors) => {\n return new Proxy((!accessor ? instance : instance?.[accessor]) || scriptProxy, {\n get(_, k, r) {\n head.hooks.callHook(\"script:instance-fn\", { script, fn: k, exists: k in _ });\n if (!accessor) {\n const stub = options.stub?.({ script, fn: k });\n if (stub)\n return stub;\n }\n if (_ && k in _ && typeof _[k] !== \"undefined\") {\n return Reflect.get(_, k, r);\n }\n if (k === Symbol.iterator) {\n return [][Symbol.iterator];\n }\n return proxyChain(accessor ? instance?.[accessor] : instance, k, accessors || [k]);\n },\n async apply(_, _this, args) {\n if (head.ssr && _[ScriptProxyTarget])\n return;\n let instance2;\n const access = (fn2) => {\n instance2 = fn2 || instance2;\n for (let i = 0; i < (accessors || []).length; i++) {\n const k = (accessors || [])[i];\n fn2 = fn2?.[k];\n }\n return fn2;\n };\n let fn = access(script.instance);\n if (!fn) {\n fn = await new Promise((resolve) => {\n script.onLoaded((api) => {\n resolve(access(api));\n });\n });\n }\n return typeof fn === \"function\" ? Reflect.apply(fn, instance2, args) : fn;\n }\n });\n };\n script.proxy = proxyChain(script.instance);\n const res = new Proxy(script, {\n get(_, k) {\n const target = k in script || String(k)[0] === \"_\" ? script : script.proxy;\n if (k === \"then\" || k === \"catch\") {\n return script[k].bind(script);\n }\n return Reflect.get(target, k, target);\n }\n });\n head._scripts = Object.assign(head._scripts || {}, { [id]: res });\n return res;\n}\n\nfunction useSeoMeta(input, options) {\n const { title, titleTemplate, ...meta } = input;\n return useHead({\n title,\n titleTemplate,\n // we need to input the meta so the reactivity will be resolved\n // @ts-expect-error runtime type\n _flatMeta: meta\n }, {\n ...options,\n transform(t) {\n const meta2 = unpackMeta({ ...t._flatMeta });\n delete t._flatMeta;\n return {\n // @ts-expect-error runtime type\n ...t,\n meta: meta2\n };\n }\n });\n}\n\nfunction useServerHead(input, options = {}) {\n return useHead(input, { ...options, mode: \"server\" });\n}\n\nfunction useServerHeadSafe(input, options = {}) {\n return useHeadSafe(input, { ...options, mode: \"server\" });\n}\n\nfunction useServerSeoMeta(input, options) {\n return useSeoMeta(input, {\n ...options,\n mode: \"server\"\n });\n}\n\nconst importRe = /@import/;\n// @__NO_SIDE_EFFECTS__\nfunction CapoPlugin(options) {\n return defineHeadPlugin({\n hooks: {\n \"tags:beforeResolve\": ({ tags }) => {\n for (const tag of tags) {\n if (tag.tagPosition && tag.tagPosition !== \"head\")\n continue;\n tag.tagPriority = tag.tagPriority || tagWeight(tag);\n if (tag.tagPriority !== 100)\n continue;\n const isTruthy = (val) => val === \"\" || val === true;\n const isScript = tag.tag === \"script\";\n const isLink = tag.tag === \"link\";\n if (isScript && isTruthy(tag.props.async)) {\n tag.tagPriority = 30;\n } else if (tag.tag === \"style\" && tag.innerHTML && importRe.test(tag.innerHTML)) {\n tag.tagPriority = 40;\n } else if (isScript && tag.props.src && !isTruthy(tag.props.defer) && !isTruthy(tag.props.async) && tag.props.type !== \"module\" && !tag.props.type?.endsWith(\"json\")) {\n tag.tagPriority = 50;\n } else if (isLink && tag.props.rel === \"stylesheet\" || tag.tag === \"style\") {\n tag.tagPriority = 60;\n } else if (isLink && (tag.props.rel === \"preload\" || tag.props.rel === \"modulepreload\")) {\n tag.tagPriority = 70;\n } else if (isScript && isTruthy(tag.props.defer) && tag.props.src && !isTruthy(tag.props.async)) {\n tag.tagPriority = 80;\n } else if (isLink && (tag.props.rel === \"prefetch\" || tag.props.rel === \"dns-prefetch\" || tag.props.rel === \"prerender\")) {\n tag.tagPriority = 90;\n }\n }\n options?.track && tags.push({\n tag: \"htmlAttrs\",\n props: {\n \"data-capo\": \"\"\n }\n });\n }\n }\n });\n}\n\n// @__NO_SIDE_EFFECTS__\nfunction HashHydrationPlugin() {\n return defineHeadPlugin({});\n}\n\nexport { CapoPlugin, HashHydrationPlugin, createHead, createHeadCore, createServerHead, getActiveHead, resolveScriptKey, unheadComposablesImports, useHead, useHeadSafe, useScript, useSeoMeta, useServerHead, useServerHeadSafe, useServerSeoMeta };\n","import { createServerHead as createServerHead$1, createHead as createHead$1, getActiveHead } from 'unhead';\nimport { version, unref, nextTick, inject } from 'vue';\nimport { defineHeadPlugin } from '@unhead/shared';\n\nconst Vue3 = version[0] === \"3\";\n\nfunction resolveUnref(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nfunction resolveUnrefHeadInput(ref) {\n if (ref instanceof Promise || ref instanceof Date || ref instanceof RegExp)\n return ref;\n const root = resolveUnref(ref);\n if (!ref || !root)\n return root;\n if (Array.isArray(root))\n return root.map((r) => resolveUnrefHeadInput(r));\n if (typeof root === \"object\") {\n const resolved = {};\n for (const k in root) {\n if (!Object.prototype.hasOwnProperty.call(root, k)) {\n continue;\n }\n if (k === \"titleTemplate\" || k[0] === \"o\" && k[1] === \"n\") {\n resolved[k] = unref(root[k]);\n continue;\n }\n resolved[k] = resolveUnrefHeadInput(root[k]);\n }\n return resolved;\n }\n return root;\n}\n\nconst VueReactivityPlugin = defineHeadPlugin({\n hooks: {\n \"entries:resolve\": (ctx) => {\n for (const entry of ctx.entries)\n entry.resolvedInput = resolveUnrefHeadInput(entry.input);\n }\n }\n});\n\nconst headSymbol = \"usehead\";\nfunction vueInstall(head) {\n const plugin = {\n install(app) {\n if (Vue3) {\n app.config.globalProperties.$unhead = head;\n app.config.globalProperties.$head = head;\n app.provide(headSymbol, head);\n }\n }\n };\n return plugin.install;\n}\nfunction createServerHead(options = {}) {\n const head = createServerHead$1(options);\n head.use(VueReactivityPlugin);\n head.install = vueInstall(head);\n return head;\n}\nfunction createHead(options = {}) {\n options.domDelayFn = options.domDelayFn || ((fn) => nextTick(() => setTimeout(() => fn(), 0)));\n const head = createHead$1(options);\n head.use(VueReactivityPlugin);\n head.install = vueInstall(head);\n return head;\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__unhead_injection_handler__\";\nfunction setHeadInjectionHandler(handler) {\n _global[globalKey] = handler;\n}\nfunction injectHead() {\n if (globalKey in _global) {\n return _global[globalKey]();\n }\n const head = inject(headSymbol);\n if (!head && process.env.NODE_ENV !== \"production\")\n console.warn(\"Unhead is missing Vue context, falling back to shared context. This may have unexpected results.\");\n return head || getActiveHead();\n}\n\nexport { Vue3 as V, createServerHead as a, createHead as c, headSymbol as h, injectHead as i, resolveUnrefHeadInput as r, setHeadInjectionHandler as s };\n","import { ref, watchEffect, watch, getCurrentInstance, onBeforeUnmount, onDeactivated, onActivated } from 'vue';\nimport { i as injectHead, r as resolveUnrefHeadInput } from './vue.ziyDaVMR.mjs';\n\nfunction useHead(input, options = {}) {\n const head = options.head || injectHead();\n if (head) {\n if (!head.ssr)\n return clientUseHead(head, input, options);\n return head.push(input, options);\n }\n}\nfunction clientUseHead(head, input, options = {}) {\n const deactivated = ref(false);\n const resolvedInput = ref({});\n watchEffect(() => {\n resolvedInput.value = deactivated.value ? {} : resolveUnrefHeadInput(input);\n });\n const entry = head.push(resolvedInput.value, options);\n watch(resolvedInput, (e) => {\n entry.patch(e);\n });\n const vm = getCurrentInstance();\n if (vm) {\n onBeforeUnmount(() => {\n entry.dispose();\n });\n onDeactivated(() => {\n deactivated.value = true;\n });\n onActivated(() => {\n deactivated.value = false;\n });\n }\n return entry;\n}\n\nexport { useHead as u };\n","import { u as useHead } from './shared/vue.-sixQ7xP.mjs';\nimport 'vue';\nimport './shared/vue.ziyDaVMR.mjs';\nimport 'unhead';\nimport '@unhead/shared';\n\nfunction polyfillAsVueUseHead(head) {\n const polyfilled = head;\n polyfilled.headTags = head.resolveTags;\n polyfilled.addEntry = head.push;\n polyfilled.addHeadObjs = head.push;\n polyfilled.addReactiveEntry = (input, options) => {\n const api = useHead(input, options);\n if (api !== void 0)\n return api.dispose;\n return () => {\n };\n };\n polyfilled.removeHeadObjs = () => {\n };\n polyfilled.updateDOM = () => {\n head.hooks.callHook(\"entries:updated\", head);\n };\n polyfilled.unhead = head;\n return polyfilled;\n}\n\nexport { polyfillAsVueUseHead };\n","import { createHead as createHead$1, Vue2ProvideUnheadPlugin } from '@unhead/vue';\nexport { Vue2ProvideUnheadPlugin, VueHeadMixin, createHeadCore, injectHead, unheadVueComposablesImports, useHead, useHeadSafe, useSeoMeta, useServerHead, useServerHeadSafe, useServerSeoMeta } from '@unhead/vue';\nimport { polyfillAsVueUseHead } from '@unhead/vue/polyfill';\nimport { renderSSRHead } from '@unhead/ssr';\nexport { Head } from '@unhead/vue/components';\n\nfunction createHead(initHeadObject, options) {\n const unhead = createHead$1(options || {});\n const legacyHead = polyfillAsVueUseHead(unhead);\n if (initHeadObject)\n legacyHead.push(initHeadObject);\n return legacyHead;\n}\n\nconst HeadVuePlugin = Vue2ProvideUnheadPlugin;\nconst renderHeadToString = (head) => renderSSRHead(head.unhead);\n\nexport { HeadVuePlugin, createHead, renderHeadToString };\n","/*!\n * pinia v3.0.1\n * (c) 2025 Eduardo San Martin Morote\n * @license MIT\n */\nimport { hasInjectionContext, inject, toRaw, watch, unref, markRaw, effectScope, ref, isRef, isReactive, getCurrentScope, onScopeDispose, getCurrentInstance, reactive, toRef, nextTick, computed, toRefs } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\n * setActivePinia must be called to handle SSR at the top of functions like\n * `fetch`, `setup`, `serverPrefetch` and others\n */\nlet activePinia;\n/**\n * Sets or unsets the active pinia. Used in SSR and internally when calling\n * actions and getters\n *\n * @param pinia - Pinia instance\n */\n// @ts-expect-error: cannot constrain the type of the return\nconst setActivePinia = (pinia) => (activePinia = pinia);\n/**\n * Get the currently active pinia if there is any.\n */\nconst getActivePinia = () => (hasInjectionContext() && inject(piniaSymbol)) || activePinia;\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\no) {\n return (o &&\n typeof o === 'object' &&\n Object.prototype.toString.call(o) === '[object Object]' &&\n typeof o.toJSON !== 'function');\n}\n// type DeepReadonly<T> = { readonly [P in keyof T]: DeepReadonly<T[P]> }\n// TODO: can we change these to numbers?\n/**\n * Possible types for SubscriptionCallback\n */\nvar MutationType;\n(function (MutationType) {\n /**\n * Direct mutation of the state:\n *\n * - `store.name = 'new name'`\n * - `store.$state.name = 'new name'`\n * - `store.list.push('new item')`\n */\n MutationType[\"direct\"] = \"direct\";\n /**\n * Mutated the state with `$patch` and an object\n *\n * - `store.$patch({ name: 'newName' })`\n */\n MutationType[\"patchObject\"] = \"patch object\";\n /**\n * Mutated the state with `$patch` and a function\n *\n * - `store.$patch(state => state.name = 'newName')`\n */\n MutationType[\"patchFunction\"] = \"patch function\";\n // maybe reset? for $state = {} and $reset\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n\n/*\n * FileSaver.js A saveAs() FileSaver implementation.\n *\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\n * Morote.\n *\n * License : MIT\n */\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\n ? window\n : typeof self === 'object' && self.self === self\n ? self\n : typeof global === 'object' && global.global === global\n ? global\n : typeof globalThis === 'object'\n ? globalThis\n : { HTMLElement: null })();\nfunction bom(blob, { autoBom = false } = {}) {\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (autoBom &&\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\n }\n return blob;\n}\nfunction download(url, name, opts) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.onload = function () {\n saveAs(xhr.response, name, opts);\n };\n xhr.onerror = function () {\n console.error('could not download file');\n };\n xhr.send();\n}\nfunction corsEnabled(url) {\n const xhr = new XMLHttpRequest();\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false);\n try {\n xhr.send();\n }\n catch (e) { }\n return xhr.status >= 200 && xhr.status <= 299;\n}\n// `a.click()` doesn't work for all browsers (#465)\nfunction click(node) {\n try {\n node.dispatchEvent(new MouseEvent('click'));\n }\n catch (e) {\n const evt = document.createEvent('MouseEvents');\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\n node.dispatchEvent(evt);\n }\n}\nconst _navigator = typeof navigator === 'object' ? navigator : { userAgent: '' };\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\n /AppleWebKit/.test(_navigator.userAgent) &&\n !/Safari/.test(_navigator.userAgent))();\nconst saveAs = !IS_CLIENT\n ? () => { } // noop\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\n typeof HTMLAnchorElement !== 'undefined' &&\n 'download' in HTMLAnchorElement.prototype &&\n !isMacOSWebView\n ? downloadSaveAs\n : // Use msSaveOrOpenBlob as a second approach\n 'msSaveOrOpenBlob' in _navigator\n ? msSaveAs\n : // Fallback to using FileReader and a popup\n fileSaverSaveAs;\nfunction downloadSaveAs(blob, name = 'download', opts) {\n const a = document.createElement('a');\n a.download = name;\n a.rel = 'noopener'; // tabnabbing\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob;\n if (a.origin !== location.origin) {\n if (corsEnabled(a.href)) {\n download(blob, name, opts);\n }\n else {\n a.target = '_blank';\n click(a);\n }\n }\n else {\n click(a);\n }\n }\n else {\n // Support blobs\n a.href = URL.createObjectURL(blob);\n setTimeout(function () {\n URL.revokeObjectURL(a.href);\n }, 4e4); // 40s\n setTimeout(function () {\n click(a);\n }, 0);\n }\n}\nfunction msSaveAs(blob, name = 'download', opts) {\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts);\n }\n else {\n const a = document.createElement('a');\n a.href = blob;\n a.target = '_blank';\n setTimeout(function () {\n click(a);\n });\n }\n }\n else {\n // @ts-ignore: works on windows\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\n }\n}\nfunction fileSaverSaveAs(blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank');\n if (popup) {\n popup.document.title = popup.document.body.innerText = 'downloading...';\n }\n if (typeof blob === 'string')\n return download(blob, name, opts);\n const force = blob.type === 'application/octet-stream';\n const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\n const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\n typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n const reader = new FileReader();\n reader.onloadend = function () {\n let url = reader.result;\n if (typeof url !== 'string') {\n popup = null;\n throw new Error('Wrong reader.result type');\n }\n url = isChromeIOS\n ? url\n : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\n if (popup) {\n popup.location.href = url;\n }\n else {\n location.assign(url);\n }\n popup = null; // reverse-tabnabbing #460\n };\n reader.readAsDataURL(blob);\n }\n else {\n const url = URL.createObjectURL(blob);\n if (popup)\n popup.location.assign(url);\n else\n location.href = url;\n popup = null; // reverse-tabnabbing #460\n setTimeout(function () {\n URL.revokeObjectURL(url);\n }, 4e4); // 40s\n }\n}\n\n/**\n * Shows a toast or console.log\n *\n * @param message - message to log\n * @param type - different color of the tooltip\n */\nfunction toastMessage(message, type) {\n const piniaMessage = 'ðŸ ' + message;\n if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\n // No longer available :(\n __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\n }\n else if (type === 'error') {\n console.error(piniaMessage);\n }\n else if (type === 'warn') {\n console.warn(piniaMessage);\n }\n else {\n console.log(piniaMessage);\n }\n}\nfunction isPinia(o) {\n return '_a' in o && 'install' in o;\n}\n\n/**\n * This file contain devtools actions, they are not Pinia actions.\n */\n// ---\nfunction checkClipboardAccess() {\n if (!('clipboard' in navigator)) {\n toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\n return true;\n }\n}\nfunction checkNotFocusedError(error) {\n if (error instanceof Error &&\n error.message.toLowerCase().includes('document is not focused')) {\n toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\n return true;\n }\n return false;\n}\nasync function actionGlobalCopyState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\n toastMessage('Global state copied to clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalPasteState(pinia) {\n if (checkClipboardAccess())\n return;\n try {\n loadStoresState(pinia, JSON.parse(await navigator.clipboard.readText()));\n toastMessage('Global state pasted from clipboard.');\n }\n catch (error) {\n if (checkNotFocusedError(error))\n return;\n toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nasync function actionGlobalSaveState(pinia) {\n try {\n saveAs(new Blob([JSON.stringify(pinia.state.value)], {\n type: 'text/plain;charset=utf-8',\n }), 'pinia-state.json');\n }\n catch (error) {\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nlet fileInput;\nfunction getFileOpener() {\n if (!fileInput) {\n fileInput = document.createElement('input');\n fileInput.type = 'file';\n fileInput.accept = '.json';\n }\n function openFile() {\n return new Promise((resolve, reject) => {\n fileInput.onchange = async () => {\n const files = fileInput.files;\n if (!files)\n return resolve(null);\n const file = files.item(0);\n if (!file)\n return resolve(null);\n return resolve({ text: await file.text(), file });\n };\n // @ts-ignore: TODO: changed from 4.3 to 4.4\n fileInput.oncancel = () => resolve(null);\n fileInput.onerror = reject;\n fileInput.click();\n });\n }\n return openFile;\n}\nasync function actionGlobalOpenStateFile(pinia) {\n try {\n const open = getFileOpener();\n const result = await open();\n if (!result)\n return;\n const { text, file } = result;\n loadStoresState(pinia, JSON.parse(text));\n toastMessage(`Global state imported from \"${file.name}\".`);\n }\n catch (error) {\n toastMessage(`Failed to import the state from JSON. Check the console for more details.`, 'error');\n console.error(error);\n }\n}\nfunction loadStoresState(pinia, state) {\n for (const key in state) {\n const storeState = pinia.state.value[key];\n // store is already instantiated, patch it\n if (storeState) {\n Object.assign(storeState, state[key]);\n }\n else {\n // store is not instantiated, set the initial state\n pinia.state.value[key] = state[key];\n }\n }\n}\n\nfunction formatDisplay(display) {\n return {\n _custom: {\n display,\n },\n };\n}\nconst PINIA_ROOT_LABEL = 'ðŸ Pinia (root)';\nconst PINIA_ROOT_ID = '_root';\nfunction formatStoreForInspectorTree(store) {\n return isPinia(store)\n ? {\n id: PINIA_ROOT_ID,\n label: PINIA_ROOT_LABEL,\n }\n : {\n id: store.$id,\n label: store.$id,\n };\n}\nfunction formatStoreForInspectorState(store) {\n if (isPinia(store)) {\n const storeNames = Array.from(store._s.keys());\n const storeMap = store._s;\n const state = {\n state: storeNames.map((storeId) => ({\n editable: true,\n key: storeId,\n value: store.state.value[storeId],\n })),\n getters: storeNames\n .filter((id) => storeMap.get(id)._getters)\n .map((id) => {\n const store = storeMap.get(id);\n return {\n editable: false,\n key: id,\n value: store._getters.reduce((getters, key) => {\n getters[key] = store[key];\n return getters;\n }, {}),\n };\n }),\n };\n return state;\n }\n const state = {\n state: Object.keys(store.$state).map((key) => ({\n editable: true,\n key,\n value: store.$state[key],\n })),\n };\n // avoid adding empty getters\n if (store._getters && store._getters.length) {\n state.getters = store._getters.map((getterName) => ({\n editable: false,\n key: getterName,\n value: store[getterName],\n }));\n }\n if (store._customProperties.size) {\n state.customProperties = Array.from(store._customProperties).map((key) => ({\n editable: true,\n key,\n value: store[key],\n }));\n }\n return state;\n}\nfunction formatEventData(events) {\n if (!events)\n return {};\n if (Array.isArray(events)) {\n // TODO: handle add and delete for arrays and objects\n return events.reduce((data, event) => {\n data.keys.push(event.key);\n data.operations.push(event.type);\n data.oldValue[event.key] = event.oldValue;\n data.newValue[event.key] = event.newValue;\n return data;\n }, {\n oldValue: {},\n keys: [],\n operations: [],\n newValue: {},\n });\n }\n else {\n return {\n operation: formatDisplay(events.type),\n key: formatDisplay(events.key),\n oldValue: events.oldValue,\n newValue: events.newValue,\n };\n }\n}\nfunction formatMutationType(type) {\n switch (type) {\n case MutationType.direct:\n return 'mutation';\n case MutationType.patchFunction:\n return '$patch';\n case MutationType.patchObject:\n return '$patch';\n default:\n return 'unknown';\n }\n}\n\n// timeline can be paused when directly changing the state\nlet isTimelineActive = true;\nconst componentStateTypes = [];\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\nconst INSPECTOR_ID = 'pinia';\nconst { assign: assign$1 } = Object;\n/**\n * Gets the displayed name of a store in devtools\n *\n * @param id - id of the store\n * @returns a formatted string\n */\nconst getStoreType = (id) => 'ðŸ ' + id;\n/**\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\n * as soon as it is added to the application.\n *\n * @param app - Vue application\n * @param pinia - pinia instance\n */\nfunction registerPiniaDevtools(app, pinia) {\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia ðŸ',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n }, (api) => {\n if (typeof api.now !== 'function') {\n toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\n }\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: `Pinia ðŸ`,\n color: 0xe5df88,\n });\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Pinia ðŸ',\n icon: 'storage',\n treeFilterPlaceholder: 'Search stores',\n actions: [\n {\n icon: 'content_copy',\n action: () => {\n actionGlobalCopyState(pinia);\n },\n tooltip: 'Serialize and copy the state',\n },\n {\n icon: 'content_paste',\n action: async () => {\n await actionGlobalPasteState(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Replace the state with the content of your clipboard',\n },\n {\n icon: 'save',\n action: () => {\n actionGlobalSaveState(pinia);\n },\n tooltip: 'Save the state as a JSON file',\n },\n {\n icon: 'folder_open',\n action: async () => {\n await actionGlobalOpenStateFile(pinia);\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n },\n tooltip: 'Import the state from a JSON file',\n },\n ],\n nodeActions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state (with \"$reset\")',\n action: (nodeId) => {\n const store = pinia._s.get(nodeId);\n if (!store) {\n toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\n }\n else if (typeof store.$reset !== 'function') {\n toastMessage(`Cannot reset \"${nodeId}\" store because it doesn't have a \"$reset\" method implemented.`, 'warn');\n }\n else {\n store.$reset();\n toastMessage(`Store \"${nodeId}\" reset.`);\n }\n },\n },\n ],\n });\n api.on.inspectComponent((payload) => {\n const proxy = (payload.componentInstance &&\n payload.componentInstance.proxy);\n if (proxy && proxy._pStores) {\n const piniaStores = payload.componentInstance.proxy._pStores;\n Object.values(piniaStores).forEach((store) => {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'state',\n editable: true,\n value: store._isOptionsAPI\n ? {\n _custom: {\n value: toRaw(store.$state),\n actions: [\n {\n icon: 'restore',\n tooltip: 'Reset the state of this store',\n action: () => store.$reset(),\n },\n ],\n },\n }\n : // NOTE: workaround to unwrap transferred refs\n Object.keys(store.$state).reduce((state, key) => {\n state[key] = store.$state[key];\n return state;\n }, {}),\n });\n if (store._getters && store._getters.length) {\n payload.instanceData.state.push({\n type: getStoreType(store.$id),\n key: 'getters',\n editable: false,\n value: store._getters.reduce((getters, key) => {\n try {\n getters[key] = store[key];\n }\n catch (error) {\n // @ts-expect-error: we just want to show it in devtools\n getters[key] = error;\n }\n return getters;\n }, {}),\n });\n }\n });\n }\n });\n api.on.getInspectorTree((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n let stores = [pinia];\n stores = stores.concat(Array.from(pinia._s.values()));\n payload.rootNodes = (payload.filter\n ? stores.filter((store) => '$id' in store\n ? store.$id\n .toLowerCase()\n .includes(payload.filter.toLowerCase())\n : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\n : stores).map(formatStoreForInspectorTree);\n }\n });\n // Expose pinia instance as $pinia to window\n globalThis.$pinia = pinia;\n api.on.getInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n // this could be the selected store restored for a different project\n // so it's better not to say anything here\n return;\n }\n if (inspectedStore) {\n // Expose selected store as $store to window\n if (payload.nodeId !== PINIA_ROOT_ID)\n globalThis.$store = toRaw(inspectedStore);\n payload.state = formatStoreForInspectorState(inspectedStore);\n }\n }\n });\n api.on.editInspectorState((payload) => {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\n ? pinia\n : pinia._s.get(payload.nodeId);\n if (!inspectedStore) {\n return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (!isPinia(inspectedStore)) {\n // access only the state\n if (path.length !== 1 ||\n !inspectedStore._customProperties.has(path[0]) ||\n path[0] in inspectedStore.$state) {\n path.unshift('$state');\n }\n }\n else {\n // Root access, we can omit the `.value` because the devtools API does it for us\n path.unshift('state');\n }\n isTimelineActive = false;\n payload.set(inspectedStore, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n api.on.editComponentState((payload) => {\n if (payload.type.startsWith('ðŸ')) {\n const storeId = payload.type.replace(/^ðŸ\\s*/, '');\n const store = pinia._s.get(storeId);\n if (!store) {\n return toastMessage(`store \"${storeId}\" not found`, 'error');\n }\n const { path } = payload;\n if (path[0] !== 'state') {\n return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\n }\n // rewrite the first entry to be able to directly set the state as\n // well as any other path\n path[0] = '$state';\n isTimelineActive = false;\n payload.set(store, path, payload.state.value);\n isTimelineActive = true;\n }\n });\n });\n}\nfunction addStoreToDevtools(app, store) {\n if (!componentStateTypes.includes(getStoreType(store.$id))) {\n componentStateTypes.push(getStoreType(store.$id));\n }\n setupDevtoolsPlugin({\n id: 'dev.esm.pinia',\n label: 'Pinia ðŸ',\n logo: 'https://pinia.vuejs.org/logo.svg',\n packageName: 'pinia',\n homepage: 'https://pinia.vuejs.org',\n componentStateTypes,\n app,\n settings: {\n logStoreChanges: {\n label: 'Notify about new/deleted stores',\n type: 'boolean',\n defaultValue: true,\n },\n // useEmojis: {\n // label: 'Use emojis in messages âš¡ï¸',\n // type: 'boolean',\n // defaultValue: true,\n // },\n },\n }, (api) => {\n // gracefully handle errors\n const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\n store.$onAction(({ after, onError, name, args }) => {\n const groupId = runningActionId++;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛫 ' + name,\n subtitle: 'start',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n },\n groupId,\n },\n });\n after((result) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🛬 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n result,\n },\n groupId,\n },\n });\n });\n onError((error) => {\n activeAction = undefined;\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n logType: 'error',\n title: '💥 ' + name,\n subtitle: 'end',\n data: {\n store: formatDisplay(store.$id),\n action: formatDisplay(name),\n args,\n error,\n },\n groupId,\n },\n });\n });\n }, true);\n store._customProperties.forEach((name) => {\n watch(() => unref(store[name]), (newValue, oldValue) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (isTimelineActive) {\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: 'Change',\n subtitle: name,\n data: {\n newValue,\n oldValue,\n },\n groupId: activeAction,\n },\n });\n }\n }, { deep: true });\n });\n store.$subscribe(({ events, type }, state) => {\n api.notifyComponentUpdate();\n api.sendInspectorState(INSPECTOR_ID);\n if (!isTimelineActive)\n return;\n // rootStore.state[store.id] = state\n const eventData = {\n time: now(),\n title: formatMutationType(type),\n data: assign$1({ store: formatDisplay(store.$id) }, formatEventData(events)),\n groupId: activeAction,\n };\n if (type === MutationType.patchFunction) {\n eventData.subtitle = '⤵ï¸';\n }\n else if (type === MutationType.patchObject) {\n eventData.subtitle = '🧩';\n }\n else if (events && !Array.isArray(events)) {\n eventData.subtitle = events.type;\n }\n if (events) {\n eventData.data['rawEvent(s)'] = {\n _custom: {\n display: 'DebuggerEvent',\n type: 'object',\n tooltip: 'raw DebuggerEvent[]',\n value: events,\n },\n };\n }\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: eventData,\n });\n }, { detached: true, flush: 'sync' });\n const hotUpdate = store._hotUpdate;\n store._hotUpdate = markRaw((newStore) => {\n hotUpdate(newStore);\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: now(),\n title: '🔥 ' + store.$id,\n subtitle: 'HMR update',\n data: {\n store: formatDisplay(store.$id),\n info: formatDisplay(`HMR update`),\n },\n },\n });\n // update the devtools too\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n });\n const { $dispose } = store;\n store.$dispose = () => {\n $dispose();\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`Disposed \"${store.$id}\" store 🗑`);\n };\n // trigger an update so it can display new registered stores\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n api.getSettings().logStoreChanges &&\n toastMessage(`\"${store.$id}\" store installed 🆕`);\n });\n}\nlet runningActionId = 0;\nlet activeAction;\n/**\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\n * mutation to the action.\n *\n * @param store - store to patch\n * @param actionNames - list of actionst to patch\n */\nfunction patchActionForGrouping(store, actionNames, wrapWithProxy) {\n // original actions of the store as they are given by pinia. We are going to override them\n const actions = actionNames.reduce((storeActions, actionName) => {\n // use toRaw to avoid tracking #541\n storeActions[actionName] = toRaw(store)[actionName];\n return storeActions;\n }, {});\n for (const actionName in actions) {\n store[actionName] = function () {\n // the running action id is incremented in a before action hook\n const _actionId = runningActionId;\n const trackedStore = wrapWithProxy\n ? new Proxy(store, {\n get(...args) {\n activeAction = _actionId;\n return Reflect.get(...args);\n },\n set(...args) {\n activeAction = _actionId;\n return Reflect.set(...args);\n },\n })\n : store;\n // For Setup Stores we need https://github.com/tc39/proposal-async-context\n activeAction = _actionId;\n const retValue = actions[actionName].apply(trackedStore, arguments);\n // this is safer as async actions in Setup Stores would associate mutations done outside of the action\n activeAction = undefined;\n return retValue;\n };\n }\n}\n/**\n * pinia.use(devtoolsPlugin)\n */\nfunction devtoolsPlugin({ app, store, options }) {\n // HMR module\n if (store.$id.startsWith('__hot:')) {\n return;\n }\n // detect option api vs setup api\n store._isOptionsAPI = !!options.state;\n // Do not overwrite actions mocked by @pinia/testing (#2298)\n if (!store._p._testing) {\n patchActionForGrouping(store, Object.keys(options.actions), store._isOptionsAPI);\n // Upgrade the HMR to also update the new actions\n const originalHotUpdate = store._hotUpdate;\n toRaw(store)._hotUpdate = function (newStore) {\n originalHotUpdate.apply(this, arguments);\n patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions), !!store._isOptionsAPI);\n };\n }\n addStoreToDevtools(app, \n // FIXME: is there a way to allow the assignment from Store<Id, S, G, A> to StoreGeneric?\n store);\n}\n\n/**\n * Creates a Pinia instance to be used by the application\n */\nfunction createPinia() {\n const scope = effectScope(true);\n // NOTE: here we could check the window object for a state and directly set it\n // if there is anything like it with Vue 3 SSR\n const state = scope.run(() => ref({}));\n let _p = [];\n // plugins added before calling app.use(pinia)\n let toBeInstalled = [];\n const pinia = markRaw({\n install(app) {\n // this allows calling useStore() outside of a component setup after\n // installing pinia's plugin\n setActivePinia(pinia);\n pinia._a = app;\n app.provide(piniaSymbol, pinia);\n app.config.globalProperties.$pinia = pinia;\n /* istanbul ignore else */\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n registerPiniaDevtools(app, pinia);\n }\n toBeInstalled.forEach((plugin) => _p.push(plugin));\n toBeInstalled = [];\n },\n use(plugin) {\n if (!this._a) {\n toBeInstalled.push(plugin);\n }\n else {\n _p.push(plugin);\n }\n return this;\n },\n _p,\n // it's actually undefined here\n // @ts-expect-error\n _a: null,\n _e: scope,\n _s: new Map(),\n state,\n });\n // pinia devtools rely on dev only features so they cannot be forced unless\n // the dev build of Vue is used. Avoid old browsers like IE11.\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT && typeof Proxy !== 'undefined') {\n pinia.use(devtoolsPlugin);\n }\n return pinia;\n}\n/**\n * Dispose a Pinia instance by stopping its effectScope and removing the state, plugins and stores. This is mostly\n * useful in tests, with both a testing pinia or a regular pinia and in applications that use multiple pinia instances.\n * Once disposed, the pinia instance cannot be used anymore.\n *\n * @param pinia - pinia instance\n */\nfunction disposePinia(pinia) {\n pinia._e.stop();\n pinia._s.clear();\n pinia._p.splice(0);\n pinia.state.value = {};\n // @ts-expect-error: non valid\n pinia._a = null;\n}\n\n/**\n * Checks if a function is a `StoreDefinition`.\n *\n * @param fn - object to test\n * @returns true if `fn` is a StoreDefinition\n */\nconst isUseStore = (fn) => {\n return typeof fn === 'function' && typeof fn.$id === 'string';\n};\n/**\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\n * remove any key not existing in `newState` and recursively merge plain\n * objects.\n *\n * @param newState - new state object to be patched\n * @param oldState - old state that should be used to patch newState\n * @returns - newState\n */\nfunction patchObject(newState, oldState) {\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in oldState) {\n const subPatch = oldState[key];\n // skip the whole sub tree\n if (!(key in newState)) {\n continue;\n }\n const targetValue = newState[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n newState[key] = patchObject(targetValue, subPatch);\n }\n else {\n // objects are either a bit more complex (e.g. refs) or primitives, so we\n // just set the whole thing\n newState[key] = subPatch;\n }\n }\n return newState;\n}\n/**\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\n *\n * @example\n * ```js\n * const useUser = defineStore(...)\n * if (import.meta.hot) {\n * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\n * }\n * ```\n *\n * @param initialUseStore - return of the defineStore to hot update\n * @param hot - `import.meta.hot`\n */\nfunction acceptHMRUpdate(initialUseStore, hot) {\n // strip as much as possible from iife.prod\n if (!(process.env.NODE_ENV !== 'production')) {\n return () => { };\n }\n return (newModule) => {\n const pinia = hot.data.pinia || initialUseStore._pinia;\n if (!pinia) {\n // this store is still not used\n return;\n }\n // preserve the pinia instance across loads\n hot.data.pinia = pinia;\n // console.log('got data', newStore)\n for (const exportName in newModule) {\n const useStore = newModule[exportName];\n // console.log('checking for', exportName)\n if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\n // console.log('Accepting update for', useStore.$id)\n const id = useStore.$id;\n if (id !== initialUseStore.$id) {\n console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\n // return import.meta.hot.invalidate()\n return hot.invalidate();\n }\n const existingStore = pinia._s.get(id);\n if (!existingStore) {\n console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\n return;\n }\n useStore(pinia, existingStore);\n }\n }\n };\n}\n\nconst noop = () => { };\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\n subscriptions.push(callback);\n const removeSubscription = () => {\n const idx = subscriptions.indexOf(callback);\n if (idx > -1) {\n subscriptions.splice(idx, 1);\n onCleanup();\n }\n };\n if (!detached && getCurrentScope()) {\n onScopeDispose(removeSubscription);\n }\n return removeSubscription;\n}\nfunction triggerSubscriptions(subscriptions, ...args) {\n subscriptions.slice().forEach((callback) => {\n callback(...args);\n });\n}\n\nconst fallbackRunWithContext = (fn) => fn();\n/**\n * Marks a function as an action for `$onAction`\n * @internal\n */\nconst ACTION_MARKER = Symbol();\n/**\n * Action name symbol. Allows to add a name to an action after defining it\n * @internal\n */\nconst ACTION_NAME = Symbol();\nfunction mergeReactiveObjects(target, patchToApply) {\n // Handle Map instances\n if (target instanceof Map && patchToApply instanceof Map) {\n patchToApply.forEach((value, key) => target.set(key, value));\n }\n else if (target instanceof Set && patchToApply instanceof Set) {\n // Handle Set instances\n patchToApply.forEach(target.add, target);\n }\n // no need to go through symbols because they cannot be serialized anyway\n for (const key in patchToApply) {\n if (!patchToApply.hasOwnProperty(key))\n continue;\n const subPatch = patchToApply[key];\n const targetValue = target[key];\n if (isPlainObject(targetValue) &&\n isPlainObject(subPatch) &&\n target.hasOwnProperty(key) &&\n !isRef(subPatch) &&\n !isReactive(subPatch)) {\n // NOTE: here I wanted to warn about inconsistent types but it's not possible because in setup stores one might\n // start the value of a property as a certain type e.g. a Map, and then for some reason, during SSR, change that\n // to `undefined`. When trying to hydrate, we want to override the Map with `undefined`.\n target[key] = mergeReactiveObjects(targetValue, subPatch);\n }\n else {\n // @ts-expect-error: subPatch is a valid value\n target[key] = subPatch;\n }\n }\n return target;\n}\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\n ? Symbol('pinia:skipHydration')\n : /* istanbul ignore next */ Symbol();\n/**\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\n *\n * @param obj - target object\n * @returns obj\n */\nfunction skipHydrate(obj) {\n return Object.defineProperty(obj, skipHydrateSymbol, {});\n}\n/**\n * Returns whether a value should be hydrated\n *\n * @param obj - target variable\n * @returns true if `obj` should be hydrated\n */\nfunction shouldHydrate(obj) {\n return !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\n}\nconst { assign } = Object;\nfunction isComputed(o) {\n return !!(isRef(o) && o.effect);\n}\nfunction createOptionsStore(id, options, pinia, hot) {\n const { state, actions, getters } = options;\n const initialState = pinia.state.value[id];\n let store;\n function setup() {\n if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n pinia.state.value[id] = state ? state() : {};\n }\n // avoid creating a state in pinia.state.value\n const localState = (process.env.NODE_ENV !== 'production') && hot\n ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\n toRefs(ref(state ? state() : {}).value)\n : toRefs(pinia.state.value[id]);\n return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\n if ((process.env.NODE_ENV !== 'production') && name in localState) {\n console.warn(`[ðŸ]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\n }\n computedGetters[name] = markRaw(computed(() => {\n setActivePinia(pinia);\n // it was created just before\n const store = pinia._s.get(id);\n // allow cross using stores\n // @ts-expect-error\n // return getters![name].call(context, context)\n // TODO: avoid reading the getter while assigning with a global variable\n return getters[name].call(store, store);\n }));\n return computedGetters;\n }, {}));\n }\n store = createSetupStore(id, setup, options, pinia, hot, true);\n return store;\n}\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\n let scope;\n const optionsForPlugin = assign({ actions: {} }, options);\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\n throw new Error('Pinia destroyed');\n }\n // watcher options for $subscribe\n const $subscribeOptions = { deep: true };\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n $subscribeOptions.onTrigger = (event) => {\n /* istanbul ignore else */\n if (isListening) {\n debuggerEvents = event;\n // avoid triggering this while the store is being built and the state is being set in pinia\n }\n else if (isListening == false && !store._hotUpdating) {\n // let patch send all the events together later\n /* istanbul ignore else */\n if (Array.isArray(debuggerEvents)) {\n debuggerEvents.push(event);\n }\n else {\n console.error('ðŸ debuggerEvents should be an array. This is most likely an internal Pinia bug.');\n }\n }\n };\n }\n // internal state\n let isListening; // set to true at the end\n let isSyncListening; // set to true at the end\n let subscriptions = [];\n let actionSubscriptions = [];\n let debuggerEvents;\n const initialState = pinia.state.value[$id];\n // avoid setting the state for option stores if it is set\n // by the setup\n if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\n /* istanbul ignore if */\n pinia.state.value[$id] = {};\n }\n const hotState = ref({});\n // avoid triggering too many listeners\n // https://github.com/vuejs/pinia/issues/1129\n let activeListener;\n function $patch(partialStateOrMutator) {\n let subscriptionMutation;\n isListening = isSyncListening = false;\n // reset the debugger events since patches are sync\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n debuggerEvents = [];\n }\n if (typeof partialStateOrMutator === 'function') {\n partialStateOrMutator(pinia.state.value[$id]);\n subscriptionMutation = {\n type: MutationType.patchFunction,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n else {\n mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\n subscriptionMutation = {\n type: MutationType.patchObject,\n payload: partialStateOrMutator,\n storeId: $id,\n events: debuggerEvents,\n };\n }\n const myListenerId = (activeListener = Symbol());\n nextTick().then(() => {\n if (activeListener === myListenerId) {\n isListening = true;\n }\n });\n isSyncListening = true;\n // because we paused the watcher, we need to manually call the subscriptions\n triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\n }\n const $reset = isOptionsStore\n ? function $reset() {\n const { state } = options;\n const newState = state ? state() : {};\n // we use a patch to group all changes into one single subscription\n this.$patch(($state) => {\n // @ts-expect-error: FIXME: shouldn't error?\n assign($state, newState);\n });\n }\n : /* istanbul ignore next */\n (process.env.NODE_ENV !== 'production')\n ? () => {\n throw new Error(`ðŸ: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\n }\n : noop;\n function $dispose() {\n scope.stop();\n subscriptions = [];\n actionSubscriptions = [];\n pinia._s.delete($id);\n }\n /**\n * Helper that wraps function so it can be tracked with $onAction\n * @param fn - action to wrap\n * @param name - name of the action\n */\n const action = (fn, name = '') => {\n if (ACTION_MARKER in fn) {\n fn[ACTION_NAME] = name;\n return fn;\n }\n const wrappedAction = function () {\n setActivePinia(pinia);\n const args = Array.from(arguments);\n const afterCallbackList = [];\n const onErrorCallbackList = [];\n function after(callback) {\n afterCallbackList.push(callback);\n }\n function onError(callback) {\n onErrorCallbackList.push(callback);\n }\n // @ts-expect-error\n triggerSubscriptions(actionSubscriptions, {\n args,\n name: wrappedAction[ACTION_NAME],\n store,\n after,\n onError,\n });\n let ret;\n try {\n ret = fn.apply(this && this.$id === $id ? this : store, args);\n // handle sync errors\n }\n catch (error) {\n triggerSubscriptions(onErrorCallbackList, error);\n throw error;\n }\n if (ret instanceof Promise) {\n return ret\n .then((value) => {\n triggerSubscriptions(afterCallbackList, value);\n return value;\n })\n .catch((error) => {\n triggerSubscriptions(onErrorCallbackList, error);\n return Promise.reject(error);\n });\n }\n // trigger after callbacks\n triggerSubscriptions(afterCallbackList, ret);\n return ret;\n };\n wrappedAction[ACTION_MARKER] = true;\n wrappedAction[ACTION_NAME] = name; // will be set later\n // @ts-expect-error: we are intentionally limiting the returned type to just Fn\n // because all the added properties are internals that are exposed through `$onAction()` only\n return wrappedAction;\n };\n const _hmrPayload = /*#__PURE__*/ markRaw({\n actions: {},\n getters: {},\n state: [],\n hotState,\n });\n const partialStore = {\n _p: pinia,\n // _s: scope,\n $id,\n $onAction: addSubscription.bind(null, actionSubscriptions),\n $patch,\n $reset,\n $subscribe(callback, options = {}) {\n const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\n const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\n if (options.flush === 'sync' ? isSyncListening : isListening) {\n callback({\n storeId: $id,\n type: MutationType.direct,\n events: debuggerEvents,\n }, state);\n }\n }, assign({}, $subscribeOptions, options)));\n return removeSubscription;\n },\n $dispose,\n };\n const store = reactive((process.env.NODE_ENV !== 'production') || ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT)\n ? assign({\n _hmrPayload,\n _customProperties: markRaw(new Set()), // devtools custom properties\n }, partialStore\n // must be added later\n // setupStore\n )\n : partialStore);\n // store the partial store now so the setup of stores can instantiate each other before they are finished without\n // creating infinite loops.\n pinia._s.set($id, store);\n const runWithContext = (pinia._a && pinia._a.runWithContext) || fallbackRunWithContext;\n // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\n const setupStore = runWithContext(() => pinia._e.run(() => (scope = effectScope()).run(() => setup({ action }))));\n // overwrite existing actions to support $onAction\n for (const key in setupStore) {\n const prop = setupStore[key];\n if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\n // mark it as a piece of state to be serialized\n if ((process.env.NODE_ENV !== 'production') && hot) {\n hotState.value[key] = toRef(setupStore, key);\n // createOptionStore directly sets the state in pinia.state.value so we\n // can just skip that\n }\n else if (!isOptionsStore) {\n // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\n if (initialState && shouldHydrate(prop)) {\n if (isRef(prop)) {\n prop.value = initialState[key];\n }\n else {\n // probably a reactive object, lets recursively assign\n // @ts-expect-error: prop is unknown\n mergeReactiveObjects(prop, initialState[key]);\n }\n }\n // transfer the ref to the pinia state to keep everything in sync\n pinia.state.value[$id][key] = prop;\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.state.push(key);\n }\n // action\n }\n else if (typeof prop === 'function') {\n const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : action(prop, key);\n // this a hot module replacement store because the hotUpdate method needs\n // to do it with the right context\n // @ts-expect-error\n setupStore[key] = actionValue;\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n _hmrPayload.actions[key] = prop;\n }\n // list actions so they can be used in plugins\n // @ts-expect-error\n optionsForPlugin.actions[key] = prop;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n // add getters for devtools\n if (isComputed(prop)) {\n _hmrPayload.getters[key] = isOptionsStore\n ? // @ts-expect-error\n options.getters[key]\n : prop;\n if (IS_CLIENT) {\n const getters = setupStore._getters ||\n // @ts-expect-error: same\n (setupStore._getters = markRaw([]));\n getters.push(key);\n }\n }\n }\n }\n // add the state, getters, and action properties\n /* istanbul ignore if */\n assign(store, setupStore);\n // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\n // Make `storeToRefs()` work with `reactive()` #799\n assign(toRaw(store), setupStore);\n // use this instead of a computed with setter to be able to create it anywhere\n // without linking the computed lifespan to wherever the store is first\n // created.\n Object.defineProperty(store, '$state', {\n get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\n set: (state) => {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && hot) {\n throw new Error('cannot set hotState');\n }\n $patch(($state) => {\n // @ts-expect-error: FIXME: shouldn't error?\n assign($state, state);\n });\n },\n });\n // add the hotUpdate before plugins to allow them to override it\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n store._hotUpdate = markRaw((newStore) => {\n store._hotUpdating = true;\n newStore._hmrPayload.state.forEach((stateKey) => {\n if (stateKey in store.$state) {\n const newStateTarget = newStore.$state[stateKey];\n const oldStateSource = store.$state[stateKey];\n if (typeof newStateTarget === 'object' &&\n isPlainObject(newStateTarget) &&\n isPlainObject(oldStateSource)) {\n patchObject(newStateTarget, oldStateSource);\n }\n else {\n // transfer the ref\n newStore.$state[stateKey] = oldStateSource;\n }\n }\n // patch direct access properties to allow store.stateProperty to work as\n // store.$state.stateProperty\n // @ts-expect-error: any type\n store[stateKey] = toRef(newStore.$state, stateKey);\n });\n // remove deleted state properties\n Object.keys(store.$state).forEach((stateKey) => {\n if (!(stateKey in newStore.$state)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[stateKey];\n }\n });\n // avoid devtools logging this as a mutation\n isListening = false;\n isSyncListening = false;\n pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\n isSyncListening = true;\n nextTick().then(() => {\n isListening = true;\n });\n for (const actionName in newStore._hmrPayload.actions) {\n const actionFn = newStore[actionName];\n // @ts-expect-error: actionName is a string\n store[actionName] =\n //\n action(actionFn, actionName);\n }\n // TODO: does this work in both setup and option store?\n for (const getterName in newStore._hmrPayload.getters) {\n const getter = newStore._hmrPayload.getters[getterName];\n const getterValue = isOptionsStore\n ? // special handling of options api\n computed(() => {\n setActivePinia(pinia);\n return getter.call(store, store);\n })\n : getter;\n // @ts-expect-error: getterName is a string\n store[getterName] =\n //\n getterValue;\n }\n // remove deleted getters\n Object.keys(store._hmrPayload.getters).forEach((key) => {\n if (!(key in newStore._hmrPayload.getters)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[key];\n }\n });\n // remove old actions\n Object.keys(store._hmrPayload.actions).forEach((key) => {\n if (!(key in newStore._hmrPayload.actions)) {\n // @ts-expect-error: noop if doesn't exist\n delete store[key];\n }\n });\n // update the values used in devtools and to allow deleting new properties later on\n store._hmrPayload = newStore._hmrPayload;\n store._getters = newStore._getters;\n store._hotUpdating = false;\n });\n }\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n const nonEnumerable = {\n writable: true,\n configurable: true,\n // avoid warning on devtools trying to display this property\n enumerable: false,\n };\n ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\n Object.defineProperty(store, p, assign({ value: store[p] }, nonEnumerable));\n });\n }\n // apply all plugins\n pinia._p.forEach((extender) => {\n /* istanbul ignore else */\n if ((((process.env.NODE_ENV !== 'production') || (typeof __VUE_PROD_DEVTOOLS__ !== 'undefined' && __VUE_PROD_DEVTOOLS__)) && !(process.env.NODE_ENV === 'test')) && IS_CLIENT) {\n const extensions = scope.run(() => extender({\n store: store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n }));\n Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\n assign(store, extensions);\n }\n else {\n assign(store, scope.run(() => extender({\n store: store,\n app: pinia._a,\n pinia,\n options: optionsForPlugin,\n })));\n }\n });\n if ((process.env.NODE_ENV !== 'production') &&\n store.$state &&\n typeof store.$state === 'object' &&\n typeof store.$state.constructor === 'function' &&\n !store.$state.constructor.toString().includes('[native code]')) {\n console.warn(`[ðŸ]: The \"state\" must be a plain object. It cannot be\\n` +\n `\\tstate: () => new MyClass()\\n` +\n `Found in store \"${store.$id}\".`);\n }\n // only apply hydrate to option stores with an initial state in pinia\n if (initialState &&\n isOptionsStore &&\n options.hydrate) {\n options.hydrate(store.$state, initialState);\n }\n isListening = true;\n isSyncListening = true;\n return store;\n}\n// allows unused stores to be tree shaken\n/*! #__NO_SIDE_EFFECTS__ */\nfunction defineStore(\n// TODO: add proper types from above\nid, setup, setupOptions) {\n let options;\n const isSetupStore = typeof setup === 'function';\n // the option store setup will contain the actual options in this case\n options = isSetupStore ? setupOptions : setup;\n function useStore(pinia, hot) {\n const hasContext = hasInjectionContext();\n pinia =\n // in test mode, ignore the argument provided as we can always retrieve a\n // pinia instance with getActivePinia()\n ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\n (hasContext ? inject(piniaSymbol, null) : null);\n if (pinia)\n setActivePinia(pinia);\n if ((process.env.NODE_ENV !== 'production') && !activePinia) {\n throw new Error(`[ðŸ]: \"getActivePinia()\" was called but there was no active Pinia. Are you trying to use a store before calling \"app.use(pinia)\"?\\n` +\n `See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help.\\n` +\n `This will fail in production.`);\n }\n pinia = activePinia;\n if (!pinia._s.has(id)) {\n // creating the store registers it in `pinia._s`\n if (isSetupStore) {\n createSetupStore(id, setup, options, pinia);\n }\n else {\n createOptionsStore(id, options, pinia);\n }\n /* istanbul ignore else */\n if ((process.env.NODE_ENV !== 'production')) {\n // @ts-expect-error: not the right inferred type\n useStore._pinia = pinia;\n }\n }\n const store = pinia._s.get(id);\n if ((process.env.NODE_ENV !== 'production') && hot) {\n const hotId = '__hot:' + id;\n const newStore = isSetupStore\n ? createSetupStore(hotId, setup, options, pinia, true)\n : createOptionsStore(hotId, assign({}, options), pinia, true);\n hot._hotUpdate(newStore);\n // cleanup the state properties and the store from the cache\n delete pinia.state.value[hotId];\n pinia._s.delete(hotId);\n }\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\n const currentInstance = getCurrentInstance();\n // save stores in instances to access them devtools\n if (currentInstance &&\n currentInstance.proxy &&\n // avoid adding stores that are just built for hot module replacement\n !hot) {\n const vm = currentInstance.proxy;\n const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\n cache[id] = store;\n }\n }\n // StoreGeneric cannot be casted towards Store\n return store;\n }\n useStore.$id = id;\n return useStore;\n}\n\nlet mapStoreSuffix = 'Store';\n/**\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\n * interface if you are using TypeScript.\n *\n * @param suffix - new suffix\n */\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\n) {\n mapStoreSuffix = suffix;\n}\n/**\n * Allows using stores without the composition API (`setup()`) by generating an\n * object to be spread in the `computed` field of a component. It accepts a list\n * of store definitions.\n *\n * @example\n * ```js\n * export default {\n * computed: {\n * // other computed properties\n * ...mapStores(useUserStore, useCartStore)\n * },\n *\n * created() {\n * this.userStore // store with id \"user\"\n * this.cartStore // store with id \"cart\"\n * }\n * }\n * ```\n *\n * @param stores - list of stores to map to an object\n */\nfunction mapStores(...stores) {\n if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\n console.warn(`[ðŸ]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\n `Replace\\n` +\n `\\tmapStores([useAuthStore, useCartStore])\\n` +\n `with\\n` +\n `\\tmapStores(useAuthStore, useCartStore)\\n` +\n `This will fail in production if not fixed.`);\n stores = stores[0];\n }\n return stores.reduce((reduced, useStore) => {\n // @ts-expect-error: $id is added by defineStore\n reduced[useStore.$id + mapStoreSuffix] = function () {\n return useStore(this.$pinia);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = function () {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[key];\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function () {\n const store = useStore(this.$pinia);\n const storeKey = keysOrMapper[key];\n // for some reason TS is unable to infer the type of storeKey to be a\n // function\n return typeof storeKey === 'function'\n ? storeKey.call(this, store)\n : // @ts-expect-error: FIXME: should work?\n store[storeKey];\n };\n return reduced;\n }, {});\n}\n/**\n * Alias for `mapState()`. You should use `mapState()` instead.\n * @deprecated use `mapState()` instead.\n */\nconst mapGetters = mapState;\n/**\n * Allows directly using actions from your store without using the composition\n * API (`setup()`) by generating an object to be spread in the `methods` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapActions(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[key](...args);\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n // @ts-expect-error\n reduced[key] = function (...args) {\n // @ts-expect-error: FIXME: should work?\n return useStore(this.$pinia)[keysOrMapper[key]](...args);\n };\n return reduced;\n }, {});\n}\n/**\n * Allows using state and getters from one store without using the composition\n * API (`setup()`) by generating an object to be spread in the `computed` field\n * of a component.\n *\n * @param useStore - store to map from\n * @param keysOrMapper - array or object\n */\nfunction mapWritableState(useStore, keysOrMapper) {\n return Array.isArray(keysOrMapper)\n ? keysOrMapper.reduce((reduced, key) => {\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[key];\n },\n set(value) {\n return (useStore(this.$pinia)[key] = value);\n },\n };\n return reduced;\n }, {})\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\n reduced[key] = {\n get() {\n return useStore(this.$pinia)[keysOrMapper[key]];\n },\n set(value) {\n return (useStore(this.$pinia)[keysOrMapper[key]] = value);\n },\n };\n return reduced;\n }, {});\n}\n\n/**\n * Creates an object of references with all the state, getters, and plugin-added\n * state properties of the store. Similar to `toRefs()` but specifically\n * designed for Pinia stores so methods and non reactive properties are\n * completely ignored.\n *\n * @param store - store to extract the refs from\n */\nfunction storeToRefs(store) {\n const rawStore = toRaw(store);\n const refs = {};\n for (const key in rawStore) {\n const value = rawStore[key];\n // There is no native method to check for a computed\n // https://github.com/vuejs/core/pull/4165\n if (value.effect) {\n // @ts-expect-error: too hard to type correctly\n refs[key] =\n // ...\n computed({\n get: () => store[key],\n set(value) {\n store[key] = value;\n },\n });\n }\n else if (isRef(value) || isReactive(value)) {\n // @ts-expect-error: the key is state or getter\n refs[key] =\n // ---\n toRef(store, key);\n }\n }\n return refs;\n}\n\nexport { MutationType, acceptHMRUpdate, createPinia, defineStore, disposePinia, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, shouldHydrate, skipHydrate, storeToRefs };\n","export default {\n beforeMount(el, binding) {\n if (binding.value === 'all') {\n document.getElementById('site-footer-app').classList.add('js-is-hidden');\n } else {\n document.getElementById('site-footer-app').classList.add('mobile-hidden');\n }\n },\n beforeUnmount(el, binding) {\n if (binding.value === 'all') {\n document.getElementById('site-footer-app').classList.remove('js-is-hidden');\n } else {\n document.getElementById('site-footer-app').classList.remove('mobile-hidden');\n }\n }\n};\n","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.3\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.3',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n\n // typeof\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n\n // properties\n UA_BROWSER = 'browser',\n UA_CPU = 'cpu',\n UA_DEVICE = 'device',\n UA_ENGINE = 'engine',\n UA_OS = 'os',\n UA_RESULT = 'result',\n \n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH_HEADER = 'sec-ch-ua',\n CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n CH_HEADER_ARCH = CH_HEADER + '-arch',\n CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS,\n CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE,\n CH_HEADER_MODEL = CH_HEADER + '-' + MODEL,\n CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM,\n CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== UNDEF_TYPE,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n if (typeof str1 === OBJ_TYPE && str1.length > 0) {\n for (var i in str1) {\n if (lowerize(str1[i]) == lowerize(str2)) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === STR_TYPE;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n var propName = arr[i];\n if (typeof propName == OBJ_TYPE && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n if (isString(str)) {\n str = strip(/^\\s\\s*/, str);\n return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n if(!ua || !arrays) return;\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115|surf)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115/Surf\n /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i // Ecosia/Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i // LieBao Browser/Rekonq\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((ppc|powerpc)(64)?)( mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n / sun4\\w[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // BLU Vivo Series\n /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [ \n // Vivo\n /; vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*))/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(?:015|06[35]|142p?))/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix) (x1101b?)/i // Infinix XPad\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n /; (blu|hmd|imo|tcl)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i, // BLU/HMD/IMO/TCL\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i, // Lenovo\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia Tablets\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /tcast.+(lg)e?. ([-\\w]+)/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /(portaltv)/i // Facebook Portal TV\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mi(tv|box)-?\\w+) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n // SmartTV from Unidentified Vendors\n /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /(quest( \\d| pro)?s?).+vr/i // Meta Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /droid .+?; ([\\w\\. -]+)( bui|\\))/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome OS\"], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [UA_BROWSER, [VERSION, MAJOR]],\n [UA_ENGINE, [VERSION]],\n [UA_OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [UA_BROWSER, / ?browser$/i],\n [UA_OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [UA_BROWSER, [NAME, VERSION]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [VENDOR, MODEL]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != UA_RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != UNDEF_TYPE) break;\n } else if (strToCheck == UNDEF_TYPE && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || UNDEF_TYPE;\n };\n }\n\n if (!NAVIGATOR_UADATA) {\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n }\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH_HEADER])],\n [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n\n this.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n this.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n this.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n this.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case UA_BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n this.set(NAME, 'Brave');\n }\n break;\n case UA_DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case UA_OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case UA_RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(UA_BROWSER, detect(UA_BROWSER))\n .set(UA_CPU, detect(UA_CPU))\n .set(UA_DEVICE, detect(UA_DEVICE))\n .set(UA_ENGINE, detect(UA_ENGINE))\n .set(UA_OS, detect(UA_OS));\n }\n }\n return this;\n };\n\n this.parseUA = function () {\n if (this.itemType != UA_RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n if (this.itemType == UA_BROWSER) {\n this.set(MAJOR, majorize(this.get(VERSION)));\n }\n return this;\n };\n\n this.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n \n switch (this.itemType) {\n case UA_BROWSER:\n case UA_ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i in brands) {\n var brandName = brands[i].brand || brands[i],\n brandVersion = brands[i].version;\n if (this.itemType == UA_BROWSER && !/not.a.brand/i.test(brandName) && (!prevName || (/chrom/i.test(prevName) && brandName != CHROMIUM))) {\n brandName = strMapper(brandName, {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Chrome WebView' : 'Android WebView',\n 'Chrome Headless' : 'HeadlessChrome',\n 'Huawei Browser' : 'HuaweiBrowser',\n 'MIUI Browser' : 'Miui Browser',\n 'Opera Mobi' : 'OperaMobile',\n 'Yandex' : 'YaBrowser'\n });\n this.set(NAME, brandName)\n .set(VERSION, brandVersion)\n .set(MAJOR, majorize(brandVersion));\n prevName = brandName;\n }\n if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n this.set(VERSION, brandVersion);\n }\n }\n }\n break;\n case UA_CPU:\n var archName = uaCH[ARCHITECTURE];\n if (archName) {\n if (archName && uaCH[BITNESS] == '64') archName += '64';\n rgxMapper.call(this.data, archName + ';', rgxMap);\n }\n break;\n case UA_DEVICE:\n if (uaCH[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n if (uaCH[MODEL]) {\n this.set(MODEL, uaCH[MODEL]);\n if (!this.get(TYPE) || !this.get(VENDOR)) {\n var reParse = {};\n rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n if (!this.get(TYPE) && !!reParse.type) {\n this.set(TYPE, reParse.type);\n }\n if (!this.get(VENDOR) && !!reParse.vendor) {\n this.set(VENDOR, reParse.vendor);\n }\n }\n }\n if (uaCH[FORMFACTORS]) {\n var ff;\n if (typeof uaCH[FORMFACTORS] !== 'string') {\n var idx = 0;\n while (!ff && idx < uaCH[FORMFACTORS].length) {\n ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n }\n } else {\n ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n }\n this.set(TYPE, ff);\n }\n break;\n case UA_OS:\n var osName = uaCH[PLATFORM];\n if(osName) {\n var osVersion = uaCH[PLATFORMVER];\n if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case UA_RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(UA_BROWSER, parse(UA_BROWSER))\n .set(UA_CPU, parse(UA_CPU))\n .set(UA_DEVICE, parse(UA_DEVICE))\n .set(UA_ENGINE, parse(UA_ENGINE))\n .set(UA_OS, parse(UA_OS));\n }\n return this;\n };\n\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n\n return this;\n }\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === OBJ_TYPE) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === OBJ_TYPE) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n // Convert Headers object into a plain object\n if (headers && typeof headers.append === FUNC_TYPE) {\n var kv = {};\n headers.forEach(function (v, k) { kv[k] = v; });\n headers = kv;\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == UA_RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(UA_BROWSER, this.getBrowser())\n .set(UA_CPU, this.getCPU())\n .set(UA_DEVICE, this.getDevice())\n .set(UA_ENGINE, this.getEngine())\n .set(UA_OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(UA_BROWSER)],\n ['getCPU', createItemFunc(UA_CPU)],\n ['getDevice', createItemFunc(UA_DEVICE)],\n ['getEngine', createItemFunc(UA_ENGINE)],\n ['getOS', createItemFunc(UA_OS)],\n ['getResult', createItemFunc(UA_RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua))\n userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n export {UAParser};","import { UAParser } from 'ua-parser-js';\r\n\r\nconst uap = new UAParser();\r\n\r\nexport const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));\r\n\r\nexport function clone(input) {\r\n return JSON.parse(JSON.stringify(input));\r\n}\r\n\r\nexport function useBrowser() {\r\n const isChrome = uap.getBrowser().name?.includes('Chrome') || false;\r\n const isFirefox = uap.getBrowser().name?.includes('Firefox') || false;\r\n const isSafari = uap.getBrowser().name?.includes('Safari') || false;\r\n\r\n return { isChrome, isFirefox, isSafari };\r\n}","import { useBrowser } from \"@/utils/generalUtils.js\";\n\nexport default function (el, binding) {\n const { isFirefox } = useBrowser();\n\n const value = (isFirefox && binding.value === 'plaintext-only') || binding.value;\n\n el.setAttribute('contenteditable', value);\n}","import OpenLink from '@/modules/Overlands/openLink.js';\n\nconst openNewTab = {\n install(app, options) {\n // TODO: Mixin is not recommended solution according to Vue 3. Needs to find another work around in future\n app.mixin({\n mounted() {\n new OpenLink(options.className);\n }\n });\n }\n};\n\nexport default openNewTab;\n","import { shallowRef, watchEffect, readonly, watch, customRef, getCurrentScope, onScopeDispose, effectScope, getCurrentInstance, hasInjectionContext, inject, provide, ref, isRef, unref, toValue as toValue$1, computed, reactive, toRefs as toRefs$1, toRef as toRef$1, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue';\n\nfunction computedEager(fn, options) {\n var _a;\n const result = shallowRef();\n watchEffect(() => {\n result.value = fn();\n }, {\n ...options,\n flush: (_a = options == null ? void 0 : options.flush) != null ? _a : \"sync\"\n });\n return readonly(result);\n}\n\nfunction computedWithControl(source, fn) {\n let v = void 0;\n let track;\n let trigger;\n const dirty = shallowRef(true);\n const update = () => {\n dirty.value = true;\n trigger();\n };\n watch(source, update, { flush: \"sync\" });\n const get = typeof fn === \"function\" ? fn : fn.get;\n const set = typeof fn === \"function\" ? void 0 : fn.set;\n const result = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n if (dirty.value) {\n v = get(v);\n dirty.value = false;\n }\n track();\n return v;\n },\n set(v2) {\n set == null ? void 0 : set(v2);\n }\n };\n });\n if (Object.isExtensible(result))\n result.trigger = update;\n return result;\n}\n\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\n\nfunction createEventHook() {\n const fns = /* @__PURE__ */ new Set();\n const off = (fn) => {\n fns.delete(fn);\n };\n const clear = () => {\n fns.clear();\n };\n const on = (fn) => {\n fns.add(fn);\n const offFn = () => off(fn);\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (...args) => {\n return Promise.all(Array.from(fns).map((fn) => fn(...args)));\n };\n return {\n on,\n off,\n trigger,\n clear\n };\n}\n\nfunction createGlobalState(stateFactory) {\n let initialized = false;\n let state;\n const scope = effectScope(true);\n return (...args) => {\n if (!initialized) {\n state = scope.run(() => stateFactory(...args));\n initialized = true;\n }\n return state;\n };\n}\n\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n\nconst injectLocal = (...args) => {\n var _a;\n const key = args[0];\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null && !hasInjectionContext())\n throw new Error(\"injectLocal must be called in setup\");\n if (instance && localProvidedStateMap.has(instance) && key in localProvidedStateMap.get(instance))\n return localProvidedStateMap.get(instance)[key];\n return inject(...args);\n};\n\nconst provideLocal = (key, value) => {\n var _a;\n const instance = (_a = getCurrentInstance()) == null ? void 0 : _a.proxy;\n if (instance == null)\n throw new Error(\"provideLocal must be called in setup\");\n if (!localProvidedStateMap.has(instance))\n localProvidedStateMap.set(instance, /* @__PURE__ */ Object.create(null));\n const localProvidedState = localProvidedStateMap.get(instance);\n localProvidedState[key] = value;\n provide(key, value);\n};\n\nfunction createInjectionState(composable, options) {\n const key = (options == null ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n const defaultValue = options == null ? void 0 : options.defaultValue;\n const useProvidingState = (...args) => {\n const state = composable(...args);\n provideLocal(key, state);\n return state;\n };\n const useInjectedState = () => injectLocal(key, defaultValue);\n return [useProvidingState, useInjectedState];\n}\n\nfunction createRef(value, deep) {\n if (deep === true) {\n return ref(value);\n } else {\n return shallowRef(value);\n }\n}\n\nfunction createSharedComposable(composable) {\n let subscribers = 0;\n let state;\n let scope;\n const dispose = () => {\n subscribers -= 1;\n if (scope && subscribers <= 0) {\n scope.stop();\n state = void 0;\n scope = void 0;\n }\n };\n return (...args) => {\n subscribers += 1;\n if (!scope) {\n scope = effectScope(true);\n state = scope.run(() => composable(...args));\n }\n tryOnScopeDispose(dispose);\n return state;\n };\n}\n\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n for (const [key, value] of Object.entries(extend)) {\n if (key === \"value\")\n continue;\n if (isRef(value) && unwrap) {\n Object.defineProperty(ref, key, {\n get() {\n return value.value;\n },\n set(v) {\n value.value = v;\n },\n enumerable\n });\n } else {\n Object.defineProperty(ref, key, { value, enumerable });\n }\n }\n return ref;\n}\n\nfunction get(obj, key) {\n if (key == null)\n return unref(obj);\n return unref(obj)[key];\n}\n\nfunction isDefined(v) {\n return unref(v) != null;\n}\n\nfunction makeDestructurable(obj, arr) {\n if (typeof Symbol !== \"undefined\") {\n const clone = { ...obj };\n Object.defineProperty(clone, Symbol.iterator, {\n enumerable: false,\n value() {\n let index = 0;\n return {\n next: () => ({\n value: arr[index++],\n done: index > arr.length\n })\n };\n }\n });\n return clone;\n } else {\n return Object.assign([...arr], obj);\n }\n}\n\nfunction reactify(fn, options) {\n const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : toValue$1;\n return function(...args) {\n return computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n };\n}\n\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n let keys = [];\n let options;\n if (Array.isArray(optionsOrKeys)) {\n keys = optionsOrKeys;\n } else {\n options = optionsOrKeys;\n const { includeOwnProperties = true } = optionsOrKeys;\n keys.push(...Object.keys(obj));\n if (includeOwnProperties)\n keys.push(...Object.getOwnPropertyNames(obj));\n }\n return Object.fromEntries(\n keys.map((key) => {\n const value = obj[key];\n return [\n key,\n typeof value === \"function\" ? reactify(value.bind(obj), options) : value\n ];\n })\n );\n}\n\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\n\nfunction reactiveComputed(fn) {\n return toReactive(computed(fn));\n}\n\nfunction reactiveOmit(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue$1(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n if (!condition)\n console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {\n};\nconst rand = (min, max) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n var _a, _b;\n return isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.maxTouchPoints) > 2 && /iPad|Macintosh/.test(window == null ? void 0 : window.navigator.userAgent));\n}\n\nfunction toRef(...args) {\n if (args.length !== 1)\n return toRef$1(...args);\n const r = args[0];\n return typeof r === \"function\" ? readonly(customRef(() => ({ get: r, set: noop }))) : ref(r);\n}\nconst resolveRef = toRef;\n\nfunction reactivePick(obj, ...keys) {\n const flatKeys = keys.flat();\n const predicate = flatKeys[0];\n return reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue$1(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n return customRef((track, trigger) => {\n let value = toValue$1(defaultValue);\n let timer;\n const resetAfter = () => setTimeout(() => {\n value = toValue$1(defaultValue);\n trigger();\n }, toValue$1(afterMs));\n tryOnScopeDispose(() => {\n clearTimeout(timer);\n });\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n value = newValue;\n trigger();\n clearTimeout(timer);\n timer = resetAfter();\n }\n };\n });\n}\n\nfunction createFilterWrapper(filter, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction debounceFilter(ms, options = {}) {\n let timer;\n let maxTimer;\n let lastRejector = noop;\n const _clearTimeout = (timer2) => {\n clearTimeout(timer2);\n lastRejector();\n lastRejector = noop;\n };\n let lastInvoker;\n const filter = (invoke) => {\n const duration = toValue$1(ms);\n const maxDuration = toValue$1(options.maxWait);\n if (timer)\n _clearTimeout(timer);\n if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n if (maxTimer) {\n _clearTimeout(maxTimer);\n maxTimer = null;\n }\n return Promise.resolve(invoke());\n }\n return new Promise((resolve, reject) => {\n lastRejector = options.rejectOnCancel ? reject : resolve;\n lastInvoker = invoke;\n if (maxDuration && !maxTimer) {\n maxTimer = setTimeout(() => {\n if (timer)\n _clearTimeout(timer);\n maxTimer = null;\n resolve(lastInvoker());\n }, maxDuration);\n }\n timer = setTimeout(() => {\n if (maxTimer)\n _clearTimeout(maxTimer);\n maxTimer = null;\n resolve(invoke());\n }, duration);\n });\n };\n return filter;\n}\nfunction throttleFilter(...args) {\n let lastExec = 0;\n let timer;\n let isLeading = true;\n let lastRejector = noop;\n let lastValue;\n let ms;\n let trailing;\n let leading;\n let rejectOnCancel;\n if (!isRef(args[0]) && typeof args[0] === \"object\")\n ({ delay: ms, trailing = true, leading = true, rejectOnCancel = false } = args[0]);\n else\n [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n const clear = () => {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n lastRejector();\n lastRejector = noop;\n }\n };\n const filter = (_invoke) => {\n const duration = toValue$1(ms);\n const elapsed = Date.now() - lastExec;\n const invoke = () => {\n return lastValue = _invoke();\n };\n clear();\n if (duration <= 0) {\n lastExec = Date.now();\n return invoke();\n }\n if (elapsed > duration && (leading || !isLeading)) {\n lastExec = Date.now();\n invoke();\n } else if (trailing) {\n lastValue = new Promise((resolve, reject) => {\n lastRejector = rejectOnCancel ? reject : resolve;\n timer = setTimeout(() => {\n lastExec = Date.now();\n isLeading = true;\n resolve(invoke());\n clear();\n }, Math.max(0, duration - elapsed));\n });\n }\n if (!leading && !timer)\n timer = setTimeout(() => isLeading = true, duration);\n isLeading = false;\n return lastValue;\n };\n return filter;\n}\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n const {\n initialState = \"active\"\n } = options;\n const isActive = toRef(initialState === \"active\");\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\n\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction identity(arg) {\n return arg;\n}\nfunction createSingletonPromise(fn) {\n let _promise;\n function wrapper() {\n if (!_promise)\n _promise = fn();\n return _promise;\n }\n wrapper.reset = async () => {\n const _prev = _promise;\n _promise = void 0;\n if (_prev)\n await _prev;\n };\n return wrapper;\n}\nfunction invoke(fn) {\n return fn();\n}\nfunction containsProp(obj, ...props) {\n return props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n var _a;\n if (typeof target === \"number\")\n return target + delta;\n const value = ((_a = target.match(/^-?\\d+\\.?\\d*/)) == null ? void 0 : _a[0]) || \"\";\n const unit = target.slice(value.length);\n const result = Number.parseFloat(value) + delta;\n if (Number.isNaN(result))\n return target;\n return result + unit;\n}\nfunction pxValue(px) {\n return px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\nfunction objectPick(obj, keys, omitUndefined = false) {\n return keys.reduce((n, k) => {\n if (k in obj) {\n if (!omitUndefined || obj[k] !== void 0)\n n[k] = obj[k];\n }\n return n;\n }, {});\n}\nfunction objectOmit(obj, keys, omitUndefined = false) {\n return Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n return (!omitUndefined || value !== void 0) && !keys.includes(key);\n }));\n}\nfunction objectEntries(obj) {\n return Object.entries(obj);\n}\nfunction toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\nfunction 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 hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n\nfunction getLifeCycleTarget(target) {\n return target || getCurrentInstance();\n}\n\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n return createFilterWrapper(\n debounceFilter(ms, options),\n fn\n );\n}\n\nfunction refDebounced(value, ms = 200, options = {}) {\n const debounced = ref(value.value);\n const updater = useDebounceFn(() => {\n debounced.value = value.value;\n }, ms, options);\n watch(value, () => updater());\n return debounced;\n}\n\nfunction refDefault(source, defaultValue) {\n return computed({\n get() {\n var _a;\n return (_a = source.value) != null ? _a : defaultValue;\n },\n set(value) {\n source.value = value;\n }\n });\n}\n\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n return createFilterWrapper(\n throttleFilter(ms, trailing, leading, rejectOnCancel),\n fn\n );\n}\n\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n if (delay <= 0)\n return value;\n const throttled = ref(value.value);\n const updater = useThrottleFn(() => {\n throttled.value = value.value;\n }, delay, trailing, leading);\n watch(value, () => updater());\n return throttled;\n}\n\nfunction refWithControl(initial, options = {}) {\n let source = initial;\n let track;\n let trigger;\n const ref = customRef((_track, _trigger) => {\n track = _track;\n trigger = _trigger;\n return {\n get() {\n return get();\n },\n set(v) {\n set(v);\n }\n };\n });\n function get(tracking = true) {\n if (tracking)\n track();\n return source;\n }\n function set(value, triggering = true) {\n var _a, _b;\n if (value === source)\n return;\n const old = source;\n if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false)\n return;\n source = value;\n (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old);\n if (triggering)\n trigger();\n }\n const untrackedGet = () => get(false);\n const silentSet = (v) => set(v, false);\n const peek = () => get(false);\n const lay = (v) => set(v, false);\n return extendRef(\n ref,\n {\n get,\n set,\n untrackedGet,\n silentSet,\n peek,\n lay\n },\n { enumerable: true }\n );\n}\nconst controlledRef = refWithControl;\n\nfunction set(...args) {\n if (args.length === 2) {\n const [ref, value] = args;\n ref.value = value;\n }\n if (args.length === 3) {\n const [target, key, value] = args;\n target[key] = value;\n }\n}\n\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\n\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter,\n initialState = \"active\",\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\n\nfunction syncRef(left, right, ...[options]) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true,\n direction = \"both\",\n transform = {}\n } = options || {};\n const watchers = [];\n const transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n const transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n if (direction === \"both\" || direction === \"ltr\") {\n watchers.push(watchPausable(\n left,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n right.value = transformLTR(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n if (direction === \"both\" || direction === \"rtl\") {\n watchers.push(watchPausable(\n right,\n (newValue) => {\n watchers.forEach((w) => w.pause());\n left.value = transformRTL(newValue);\n watchers.forEach((w) => w.resume());\n },\n { flush, deep, immediate }\n ));\n }\n const stop = () => {\n watchers.forEach((w) => w.stop());\n };\n return stop;\n}\n\nfunction syncRefs(source, targets, options = {}) {\n const {\n flush = \"sync\",\n deep = false,\n immediate = true\n } = options;\n const targetsArray = toArray(targets);\n return watch(\n source,\n (newValue) => targetsArray.forEach((target) => target.value = newValue),\n { flush, deep, immediate }\n );\n}\n\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue$1(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\n\nconst toValue = toValue$1;\nconst resolveUnref = toValue$1;\n\nfunction tryOnBeforeMount(fn, sync = true, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeMount(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnBeforeUnmount(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onBeforeUnmount(fn, target);\n}\n\nfunction tryOnMounted(fn, sync = true, target) {\n const instance = getLifeCycleTarget();\n if (instance)\n onMounted(fn, target);\n else if (sync)\n fn();\n else\n nextTick(fn);\n}\n\nfunction tryOnUnmounted(fn, target) {\n const instance = getLifeCycleTarget(target);\n if (instance)\n onUnmounted(fn, target);\n}\n\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n if (stop)\n stop();\n else\n nextTick(() => stop == null ? void 0 : stop());\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout != null) {\n promises.push(\n promiseTimeout(timeout, throwOnTimeout).then(() => toValue$1(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue$1(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array = Array.from(v);\n return array.includes(value) || array.includes(toValue$1(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue$1(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\n\nfunction defaultComparator(value, othVal) {\n return value === othVal;\n}\nfunction useArrayDifference(...args) {\n var _a, _b;\n const list = args[0];\n const values = args[1];\n let compareFn = (_a = args[2]) != null ? _a : defaultComparator;\n const {\n symmetric = false\n } = (_b = args[3]) != null ? _b : {};\n if (typeof compareFn === \"string\") {\n const key = compareFn;\n compareFn = (value, othVal) => value[key] === othVal[key];\n }\n const diff1 = computed(() => toValue$1(list).filter((x) => toValue$1(values).findIndex((y) => compareFn(x, y)) === -1));\n if (symmetric) {\n const diff2 = computed(() => toValue$1(values).filter((x) => toValue$1(list).findIndex((y) => compareFn(x, y)) === -1));\n return computed(() => symmetric ? [...toValue$1(diff1), ...toValue$1(diff2)] : toValue$1(diff1));\n } else {\n return diff1;\n }\n}\n\nfunction useArrayEvery(list, fn) {\n return computed(() => toValue$1(list).every((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction useArrayFilter(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).filter(fn));\n}\n\nfunction useArrayFind(list, fn) {\n return computed(() => toValue$1(\n toValue$1(list).find((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction useArrayFindIndex(list, fn) {\n return computed(() => toValue$1(list).findIndex((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction findLast(arr, cb) {\n let index = arr.length;\n while (index-- > 0) {\n if (cb(arr[index], index, arr))\n return arr[index];\n }\n return void 0;\n}\nfunction useArrayFindLast(list, fn) {\n return computed(() => toValue$1(\n !Array.prototype.findLast ? findLast(toValue$1(list), (element, index, array) => fn(toValue$1(element), index, array)) : toValue$1(list).findLast((element, index, array) => fn(toValue$1(element), index, array))\n ));\n}\n\nfunction isArrayIncludesOptions(obj) {\n return isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\nfunction useArrayIncludes(...args) {\n var _a;\n const list = args[0];\n const value = args[1];\n let comparator = args[2];\n let formIndex = 0;\n if (isArrayIncludesOptions(comparator)) {\n formIndex = (_a = comparator.fromIndex) != null ? _a : 0;\n comparator = comparator.comparator;\n }\n if (typeof comparator === \"string\") {\n const key = comparator;\n comparator = (element, value2) => element[key] === toValue$1(value2);\n }\n comparator = comparator != null ? comparator : (element, value2) => element === toValue$1(value2);\n return computed(() => toValue$1(list).slice(formIndex).some((element, index, array) => comparator(\n toValue$1(element),\n toValue$1(value),\n index,\n toValue$1(array)\n )));\n}\n\nfunction useArrayJoin(list, separator) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).join(toValue$1(separator)));\n}\n\nfunction useArrayMap(list, fn) {\n return computed(() => toValue$1(list).map((i) => toValue$1(i)).map(fn));\n}\n\nfunction useArrayReduce(list, reducer, ...args) {\n const reduceCallback = (sum, value, index) => reducer(toValue$1(sum), toValue$1(value), index);\n return computed(() => {\n const resolved = toValue$1(list);\n return args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue$1(args[0]()) : toValue$1(args[0])) : resolved.reduce(reduceCallback);\n });\n}\n\nfunction useArraySome(list, fn) {\n return computed(() => toValue$1(list).some((element, index, array) => fn(toValue$1(element), index, array)));\n}\n\nfunction uniq(array) {\n return Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n return array.reduce((acc, v) => {\n if (!acc.some((x) => fn(v, x, array)))\n acc.push(v);\n return acc;\n }, []);\n}\nfunction useArrayUnique(list, compareFn) {\n return computed(() => {\n const resolvedList = toValue$1(list).map((element) => toValue$1(element));\n return compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n });\n}\n\nfunction useCounter(initialValue = 0, options = {}) {\n let _initialValue = unref(initialValue);\n const count = shallowRef(initialValue);\n const {\n max = Number.POSITIVE_INFINITY,\n min = Number.NEGATIVE_INFINITY\n } = options;\n const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n const get = () => count.value;\n const set = (val) => count.value = Math.max(min, Math.min(max, val));\n const reset = (val = _initialValue) => {\n _initialValue = val;\n return set(val);\n };\n return { count, inc, dec, get, set, reset };\n}\n\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n let m = hours < 12 ? \"AM\" : \"PM\";\n if (hasPeriod)\n m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n return isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n const suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n const v = num % 100;\n return num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n var _a;\n const years = date.getFullYear();\n const month = date.getMonth();\n const days = date.getDate();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n const day = date.getDay();\n const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem;\n const stripTimeZone = (dateString) => {\n var _a2;\n return (_a2 = dateString.split(\" \")[1]) != null ? _a2 : \"\";\n };\n const matches = {\n Yo: () => formatOrdinal(years),\n YY: () => String(years).slice(-2),\n YYYY: () => years,\n M: () => month + 1,\n Mo: () => formatOrdinal(month + 1),\n MM: () => `${month + 1}`.padStart(2, \"0\"),\n MMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"short\" }),\n MMMM: () => date.toLocaleDateString(toValue$1(options.locales), { month: \"long\" }),\n D: () => String(days),\n Do: () => formatOrdinal(days),\n DD: () => `${days}`.padStart(2, \"0\"),\n H: () => String(hours),\n Ho: () => formatOrdinal(hours),\n HH: () => `${hours}`.padStart(2, \"0\"),\n h: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n ho: () => formatOrdinal(hours % 12 || 12),\n hh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n m: () => String(minutes),\n mo: () => formatOrdinal(minutes),\n mm: () => `${minutes}`.padStart(2, \"0\"),\n s: () => String(seconds),\n so: () => formatOrdinal(seconds),\n ss: () => `${seconds}`.padStart(2, \"0\"),\n SSS: () => `${milliseconds}`.padStart(3, \"0\"),\n d: () => day,\n dd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"narrow\" }),\n ddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"short\" }),\n dddd: () => date.toLocaleDateString(toValue$1(options.locales), { weekday: \"long\" }),\n A: () => meridiem(hours, minutes),\n AA: () => meridiem(hours, minutes, false, true),\n a: () => meridiem(hours, minutes, true),\n aa: () => meridiem(hours, minutes, true, true),\n z: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"shortOffset\" })),\n zzzz: () => stripTimeZone(date.toLocaleDateString(toValue$1(options.locales), { timeZoneName: \"longOffset\" }))\n };\n return formatStr.replace(REGEX_FORMAT, (match, $1) => {\n var _a2, _b;\n return (_b = $1 != null ? $1 : (_a2 = matches[match]) == null ? void 0 : _a2.call(matches)) != null ? _b : match;\n });\n}\nfunction normalizeDate(date) {\n if (date === null)\n return new Date(Number.NaN);\n if (date === void 0)\n return /* @__PURE__ */ new Date();\n if (date instanceof Date)\n return new Date(date);\n if (typeof date === \"string\" && !/Z$/i.test(date)) {\n const d = date.match(REGEX_PARSE);\n if (d) {\n const m = d[2] - 1 || 0;\n const ms = (d[7] || \"0\").substring(0, 3);\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date);\n}\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n return computed(() => formatDate(normalizeDate(toValue$1(date)), toValue$1(formatStr), options));\n}\n\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n let timer = null;\n const isActive = shallowRef(false);\n function clean() {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n }\n function pause() {\n isActive.value = false;\n clean();\n }\n function resume() {\n const intervalValue = toValue$1(interval);\n if (intervalValue <= 0)\n return;\n isActive.value = true;\n if (immediateCallback)\n cb();\n clean();\n if (isActive.value)\n timer = setInterval(cb, intervalValue);\n }\n if (immediate && isClient)\n resume();\n if (isRef(interval) || typeof interval === \"function\") {\n const stopWatch = watch(interval, () => {\n if (isActive.value && isClient)\n resume();\n });\n tryOnScopeDispose(stopWatch);\n }\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useInterval(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n immediate = true,\n callback\n } = options;\n const counter = shallowRef(0);\n const update = () => counter.value += 1;\n const reset = () => {\n counter.value = 0;\n };\n const controls = useIntervalFn(\n callback ? () => {\n update();\n callback(counter.value);\n } : update,\n interval,\n { immediate }\n );\n if (exposeControls) {\n return {\n counter,\n reset,\n ...controls\n };\n } else {\n return counter;\n }\n}\n\nfunction useLastChanged(source, options = {}) {\n var _a;\n const ms = shallowRef((_a = options.initialValue) != null ? _a : null);\n watch(\n source,\n () => ms.value = timestamp(),\n options\n );\n return ms;\n}\n\nfunction useTimeoutFn(cb, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const isPending = shallowRef(false);\n let timer = null;\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function stop() {\n isPending.value = false;\n clear();\n }\n function start(...args) {\n if (immediateCallback)\n cb();\n clear();\n isPending.value = true;\n timer = setTimeout(() => {\n isPending.value = false;\n timer = null;\n cb(...args);\n }, toValue$1(interval));\n }\n if (immediate) {\n isPending.value = true;\n if (isClient)\n start();\n }\n tryOnScopeDispose(stop);\n return {\n isPending: readonly(isPending),\n start,\n stop\n };\n}\n\nfunction useTimeout(interval = 1e3, options = {}) {\n const {\n controls: exposeControls = false,\n callback\n } = options;\n const controls = useTimeoutFn(\n callback != null ? callback : noop,\n interval,\n options\n );\n const ready = computed(() => !controls.isPending.value);\n if (exposeControls) {\n return {\n ready,\n ...controls\n };\n } else {\n return ready;\n }\n}\n\nfunction useToNumber(value, options = {}) {\n const {\n method = \"parseFloat\",\n radix,\n nanToZero\n } = options;\n return computed(() => {\n let resolved = toValue$1(value);\n if (typeof method === \"function\")\n resolved = method(resolved);\n else if (typeof resolved === \"string\")\n resolved = Number[method](resolved, radix);\n if (nanToZero && Number.isNaN(resolved))\n resolved = 0;\n return resolved;\n });\n}\n\nfunction useToString(value) {\n return computed(() => `${toValue$1(value)}`);\n}\n\nfunction useToggle(initialValue = false, options = {}) {\n const {\n truthyValue = true,\n falsyValue = false\n } = options;\n const valueIsRef = isRef(initialValue);\n const _value = shallowRef(initialValue);\n function toggle(value) {\n if (arguments.length) {\n _value.value = value;\n return _value.value;\n } else {\n const truthy = toValue$1(truthyValue);\n _value.value = _value.value === truthy ? toValue$1(falsyValue) : truthy;\n return _value.value;\n }\n }\n if (valueIsRef)\n return toggle;\n else\n return [_value, toggle];\n}\n\nfunction watchArray(source, cb, options) {\n let oldList = (options == null ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue$1(source)];\n return watch(source, (newList, _, onCleanup) => {\n const oldListRemains = Array.from({ length: oldList.length });\n const added = [];\n for (const obj of newList) {\n let found = false;\n for (let i = 0; i < oldList.length; i++) {\n if (!oldListRemains[i] && obj === oldList[i]) {\n oldListRemains[i] = true;\n found = true;\n break;\n }\n }\n if (!found)\n added.push(obj);\n }\n const removed = oldList.filter((_2, i) => !oldListRemains[i]);\n cb(newList, oldList, added, removed, onCleanup);\n oldList = [...newList];\n }, options);\n}\n\nfunction watchAtMost(source, cb, options) {\n const {\n count,\n ...watchOptions\n } = options;\n const current = shallowRef(0);\n const stop = watchWithFilter(\n source,\n (...args) => {\n current.value += 1;\n if (current.value >= toValue$1(count))\n nextTick(() => stop());\n cb(...args);\n },\n watchOptions\n );\n return { count: current, stop };\n}\n\nfunction watchDebounced(source, cb, options = {}) {\n const {\n debounce = 0,\n maxWait = void 0,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: debounceFilter(debounce, { maxWait })\n }\n );\n}\n\nfunction watchDeep(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n deep: true\n }\n );\n}\n\nfunction watchIgnorable(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n const filteredCb = createFilterWrapper(\n eventFilter,\n cb\n );\n let ignoreUpdates;\n let ignorePrevAsyncUpdates;\n let stop;\n if (watchOptions.flush === \"sync\") {\n const ignore = shallowRef(false);\n ignorePrevAsyncUpdates = () => {\n };\n ignoreUpdates = (updater) => {\n ignore.value = true;\n updater();\n ignore.value = false;\n };\n stop = watch(\n source,\n (...args) => {\n if (!ignore.value)\n filteredCb(...args);\n },\n watchOptions\n );\n } else {\n const disposables = [];\n const ignoreCounter = shallowRef(0);\n const syncCounter = shallowRef(0);\n ignorePrevAsyncUpdates = () => {\n ignoreCounter.value = syncCounter.value;\n };\n disposables.push(\n watch(\n source,\n () => {\n syncCounter.value++;\n },\n { ...watchOptions, flush: \"sync\" }\n )\n );\n ignoreUpdates = (updater) => {\n const syncCounterPrev = syncCounter.value;\n updater();\n ignoreCounter.value += syncCounter.value - syncCounterPrev;\n };\n disposables.push(\n watch(\n source,\n (...args) => {\n const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value;\n ignoreCounter.value = 0;\n syncCounter.value = 0;\n if (ignore)\n return;\n filteredCb(...args);\n },\n watchOptions\n )\n );\n stop = () => {\n disposables.forEach((fn) => fn());\n };\n }\n return { stop, ignoreUpdates, ignorePrevAsyncUpdates };\n}\n\nfunction watchImmediate(source, cb, options) {\n return watch(\n source,\n cb,\n {\n ...options,\n immediate: true\n }\n );\n}\n\nfunction watchOnce(source, cb, options) {\n const stop = watch(source, (...args) => {\n nextTick(() => stop());\n return cb(...args);\n }, options);\n return stop;\n}\n\nfunction watchThrottled(source, cb, options = {}) {\n const {\n throttle = 0,\n trailing = true,\n leading = true,\n ...watchOptions\n } = options;\n return watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter: throttleFilter(throttle, trailing, leading)\n }\n );\n}\n\nfunction watchTriggerable(source, cb, options = {}) {\n let cleanupFn;\n function onEffect() {\n if (!cleanupFn)\n return;\n const fn = cleanupFn;\n cleanupFn = void 0;\n fn();\n }\n function onCleanup(callback) {\n cleanupFn = callback;\n }\n const _cb = (value, oldValue) => {\n onEffect();\n return cb(value, oldValue, onCleanup);\n };\n const res = watchIgnorable(source, _cb, options);\n const { ignoreUpdates } = res;\n const trigger = () => {\n let res2;\n ignoreUpdates(() => {\n res2 = _cb(getWatchSources(source), getOldValue(source));\n });\n return res2;\n };\n return {\n ...res,\n trigger\n };\n}\nfunction getWatchSources(sources) {\n if (isReactive(sources))\n return sources;\n if (Array.isArray(sources))\n return sources.map((item) => toValue$1(item));\n return toValue$1(sources);\n}\nfunction getOldValue(source) {\n return Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n\nfunction whenever(source, cb, options) {\n const stop = watch(\n source,\n (v, ov, onInvalidate) => {\n if (v) {\n if (options == null ? void 0 : options.once)\n nextTick(() => stop());\n cb(v, ov, onInvalidate);\n }\n },\n {\n ...options,\n once: false\n }\n );\n return stop;\n}\n\nexport { assert, refAutoReset as autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, computedEager as eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, watchIgnorable as ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, toValue, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { noop, makeDestructurable, camelize, isClient, toArray, watchImmediate, isObject, tryOnScopeDispose, isIOS, notNullish, tryOnMounted, objectOmit, promiseTimeout, until, injectLocal, provideLocal, pxValue, increaseWithUnit, objectEntries, createRef, createSingletonPromise, useTimeoutFn, pausableWatch, toRef, createEventHook, useIntervalFn, computedWithControl, timestamp, pausableFilter, watchIgnorable, debounceFilter, bypassFilter, createFilterWrapper, toRefs, watchOnce, containsProp, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, tryOnUnmounted, clamp, syncRef, objectPick, watchWithFilter, identity, isDef, whenever, isWorker } from '@vueuse/shared';\nexport * from '@vueuse/shared';\nimport { isRef, shallowRef, ref, watchEffect, computed, inject, defineComponent, h, TransitionGroup, shallowReactive, Fragment, toValue, unref, getCurrentInstance, onMounted, watch, customRef, onUpdated, readonly, reactive, hasInjectionContext, toRaw, nextTick, markRaw, getCurrentScope, isReadonly, onBeforeUpdate } from 'vue';\n\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n let options;\n if (isRef(optionsOrRef)) {\n options = {\n evaluating: optionsOrRef\n };\n } else {\n options = optionsOrRef || {};\n }\n const {\n lazy = false,\n evaluating = void 0,\n shallow = true,\n onError = noop\n } = options;\n const started = shallowRef(!lazy);\n const current = shallow ? shallowRef(initialState) : ref(initialState);\n let counter = 0;\n watchEffect(async (onInvalidate) => {\n if (!started.value)\n return;\n counter++;\n const counterAtBeginning = counter;\n let hasFinished = false;\n if (evaluating) {\n Promise.resolve().then(() => {\n evaluating.value = true;\n });\n }\n try {\n const result = await evaluationCallback((cancelCallback) => {\n onInvalidate(() => {\n if (evaluating)\n evaluating.value = false;\n if (!hasFinished)\n cancelCallback();\n });\n });\n if (counterAtBeginning === counter)\n current.value = result;\n } catch (e) {\n onError(e);\n } finally {\n if (evaluating && counterAtBeginning === counter)\n evaluating.value = false;\n hasFinished = true;\n }\n });\n if (lazy) {\n return computed(() => {\n started.value = true;\n return current.value;\n });\n } else {\n return current;\n }\n}\n\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n let source = inject(key);\n if (defaultSource)\n source = inject(key, defaultSource);\n if (treatDefaultAsFactory)\n source = inject(key, defaultSource, treatDefaultAsFactory);\n if (typeof options === \"function\") {\n return computed((ctx) => options(source, ctx));\n } else {\n return computed({\n get: (ctx) => options.get(source, ctx),\n set: options.set\n });\n }\n}\n\nfunction createReusableTemplate(options = {}) {\n const {\n inheritAttrs = true\n } = options;\n const render = shallowRef();\n const define = /*@__PURE__*/ defineComponent({\n setup(_, { slots }) {\n return () => {\n render.value = slots.default;\n };\n }\n });\n const reuse = /*@__PURE__*/ defineComponent({\n inheritAttrs,\n props: options.props,\n setup(props, { attrs, slots }) {\n return () => {\n var _a;\n if (!render.value && process.env.NODE_ENV !== \"production\")\n throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n const vnode = (_a = render.value) == null ? void 0 : _a.call(render, {\n ...options.props == null ? keysToCamelKebabCase(attrs) : props,\n $slots: slots\n });\n return inheritAttrs && (vnode == null ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n };\n }\n });\n return makeDestructurable(\n { define, reuse },\n [define, reuse]\n );\n}\nfunction keysToCamelKebabCase(obj) {\n const newObj = {};\n for (const key in obj)\n newObj[camelize(key)] = obj[key];\n return newObj;\n}\n\nfunction createTemplatePromise(options = {}) {\n let index = 0;\n const instances = ref([]);\n function create(...args) {\n const props = shallowReactive({\n key: index++,\n args,\n promise: void 0,\n resolve: () => {\n },\n reject: () => {\n },\n isResolving: false,\n options\n });\n instances.value.push(props);\n props.promise = new Promise((_resolve, _reject) => {\n props.resolve = (v) => {\n props.isResolving = true;\n return _resolve(v);\n };\n props.reject = _reject;\n }).finally(() => {\n props.promise = void 0;\n const index2 = instances.value.indexOf(props);\n if (index2 !== -1)\n instances.value.splice(index2, 1);\n });\n return props.promise;\n }\n function start(...args) {\n if (options.singleton && instances.value.length > 0)\n return instances.value[0].promise;\n return create(...args);\n }\n const component = /*@__PURE__*/ defineComponent((_, { slots }) => {\n const renderList = () => instances.value.map((props) => {\n var _a;\n return h(Fragment, { key: props.key }, (_a = slots.default) == null ? void 0 : _a.call(slots, props));\n });\n if (options.transition)\n return () => h(TransitionGroup, options.transition, renderList);\n return renderList;\n });\n component.start = start;\n return component;\n}\n\nfunction createUnrefFn(fn) {\n return function(...args) {\n return fn.apply(this, args.map((i) => toValue(i)));\n };\n}\n\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\n\nfunction useEventListener(...args) {\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options) => {\n el.addEventListener(event, listener, options);\n return () => el.removeEventListener(event, listener, options);\n };\n const firstParamTargets = computed(() => {\n const test = toArray(toValue(args[0])).filter((e) => e != null);\n return test.every((e) => typeof e !== \"string\") ? test : void 0;\n });\n const stopWatch = watchImmediate(\n () => {\n var _a, _b;\n return [\n (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e) => unrefElement(e))) != null ? _b : [defaultWindow].filter((e) => e != null),\n toArray(toValue(firstParamTargets.value ? args[1] : args[0])),\n toArray(unref(firstParamTargets.value ? args[2] : args[1])),\n // @ts-expect-error - TypeScript gets the correct types, but somehow still complains\n toValue(firstParamTargets.value ? args[3] : args[2])\n ];\n },\n ([raw_targets, raw_events, raw_listeners, raw_options]) => {\n cleanup();\n if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length))\n return;\n const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;\n cleanups.push(\n ...raw_targets.flatMap(\n (el) => raw_events.flatMap(\n (event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))\n )\n )\n );\n },\n { flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(cleanup);\n return stop;\n}\n\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n const { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options;\n if (!window) {\n return controls ? { stop: noop, cancel: noop, trigger: noop } : noop;\n }\n if (isIOS && !_iOSWorkaround) {\n _iOSWorkaround = true;\n const listenerOptions = { passive: true };\n Array.from(window.document.body.children).forEach((el) => useEventListener(el, \"click\", noop, listenerOptions));\n useEventListener(window.document.documentElement, \"click\", noop, listenerOptions);\n }\n let shouldListen = true;\n const shouldIgnore = (event) => {\n return toValue(ignore).some((target2) => {\n if (typeof target2 === \"string\") {\n return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));\n } else {\n const el = unrefElement(target2);\n return el && (event.target === el || event.composedPath().includes(el));\n }\n });\n };\n function hasMultipleRoots(target2) {\n const vm = toValue(target2);\n return vm && vm.$.subTree.shapeFlag === 16;\n }\n function checkMultipleRoots(target2, event) {\n const vm = toValue(target2);\n const children = vm.$.subTree && vm.$.subTree.children;\n if (children == null || !Array.isArray(children))\n return false;\n return children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n }\n const listener = (event) => {\n const el = unrefElement(target);\n if (event.target == null)\n return;\n if (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event))\n return;\n if (!el || el === event.target || event.composedPath().includes(el))\n return;\n if (\"detail\" in event && event.detail === 0)\n shouldListen = !shouldIgnore(event);\n if (!shouldListen) {\n shouldListen = true;\n return;\n }\n handler(event);\n };\n let isProcessingClick = false;\n const cleanup = [\n useEventListener(window, \"click\", (event) => {\n if (!isProcessingClick) {\n isProcessingClick = true;\n setTimeout(() => {\n isProcessingClick = false;\n }, 0);\n listener(event);\n }\n }, { passive: true, capture }),\n useEventListener(window, \"pointerdown\", (e) => {\n const el = unrefElement(target);\n shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n }, { passive: true }),\n detectIframe && useEventListener(window, \"blur\", (event) => {\n setTimeout(() => {\n var _a;\n const el = unrefElement(target);\n if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === \"IFRAME\" && !(el == null ? void 0 : el.contains(window.document.activeElement))) {\n handler(event);\n }\n }, 0);\n }, { passive: true })\n ].filter(Boolean);\n const stop = () => cleanup.forEach((fn) => fn());\n if (controls) {\n return {\n stop,\n cancel: () => {\n shouldListen = false;\n },\n trigger: (event) => {\n shouldListen = true;\n listener(event);\n shouldListen = false;\n }\n };\n }\n return stop;\n}\n\nfunction useMounted() {\n const isMounted = shallowRef(false);\n const instance = getCurrentInstance();\n if (instance) {\n onMounted(() => {\n isMounted.value = true;\n }, instance);\n }\n return isMounted;\n}\n\nfunction useSupported(callback) {\n const isMounted = useMounted();\n return computed(() => {\n isMounted.value;\n return Boolean(callback());\n });\n}\n\nfunction useMutationObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...mutationOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"MutationObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const value = toValue(target);\n const items = toArray(value).map(unrefElement).filter(notNullish);\n return new Set(items);\n });\n const stopWatch = watch(\n () => targets.value,\n (targets2) => {\n cleanup();\n if (isSupported.value && targets2.size) {\n observer = new MutationObserver(callback);\n targets2.forEach((el) => observer.observe(el, mutationOptions));\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const takeRecords = () => {\n return observer == null ? void 0 : observer.takeRecords();\n };\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop,\n takeRecords\n };\n}\n\nfunction onElementRemoval(target, callback, options = {}) {\n const {\n window = defaultWindow,\n document = window == null ? void 0 : window.document,\n flush = \"sync\"\n } = options;\n if (!window || !document)\n return noop;\n let stopFn;\n const cleanupAndUpdate = (fn) => {\n stopFn == null ? void 0 : stopFn();\n stopFn = fn;\n };\n const stopWatch = watchEffect(() => {\n const el = unrefElement(target);\n if (el) {\n const { stop } = useMutationObserver(\n document,\n (mutationsList) => {\n const targetRemoved = mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el));\n if (targetRemoved) {\n callback(mutationsList);\n }\n },\n {\n window,\n childList: true,\n subtree: true\n }\n );\n cleanupAndUpdate(stop);\n }\n }, { flush });\n const stopHandle = () => {\n stopWatch();\n cleanupAndUpdate();\n };\n tryOnScopeDispose(stopHandle);\n return stopHandle;\n}\n\nfunction createKeyPredicate(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction onKeyDown(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keydown\" });\n}\nfunction onKeyPressed(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keypress\" });\n}\nfunction onKeyUp(key, handler, options = {}) {\n return onKeyStroke(key, handler, { ...options, eventName: \"keyup\" });\n}\n\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n var _a, _b;\n const elementRef = computed(() => unrefElement(target));\n let timeout;\n let posStart;\n let startTimestamp;\n let hasLongPressed = false;\n function clear() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = void 0;\n }\n posStart = void 0;\n startTimestamp = void 0;\n hasLongPressed = false;\n }\n function onRelease(ev) {\n var _a2, _b2, _c;\n const [_startTimestamp, _posStart, _hasLongPressed] = [startTimestamp, posStart, hasLongPressed];\n clear();\n if (!(options == null ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp)\n return;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - _posStart.x;\n const dy = ev.y - _posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n options.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed);\n }\n function onDown(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n clear();\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n posStart = {\n x: ev.x,\n y: ev.y\n };\n startTimestamp = ev.timeStamp;\n timeout = setTimeout(\n () => {\n hasLongPressed = true;\n handler(ev);\n },\n (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY\n );\n }\n function onMove(ev) {\n var _a2, _b2, _c, _d;\n if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value)\n return;\n if (!posStart || (options == null ? void 0 : options.distanceThreshold) === false)\n return;\n if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent)\n ev.preventDefault();\n if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop)\n ev.stopPropagation();\n const dx = ev.x - posStart.x;\n const dy = ev.y - posStart.y;\n const distance = Math.sqrt(dx * dx + dy * dy);\n if (distance >= ((_d = options == null ? void 0 : options.distanceThreshold) != null ? _d : DEFAULT_THRESHOLD))\n clear();\n }\n const listenerOptions = {\n capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture,\n once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once\n };\n const cleanup = [\n useEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n useEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n useEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n ];\n const stop = () => cleanup.forEach((fn) => fn());\n return stop;\n}\n\nfunction isFocusedElementEditable() {\n const { activeElement, body } = document;\n if (!activeElement)\n return false;\n if (activeElement === body)\n return false;\n switch (activeElement.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n return true;\n }\n return activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({\n keyCode,\n metaKey,\n ctrlKey,\n altKey\n}) {\n if (metaKey || ctrlKey || altKey)\n return false;\n if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105)\n return true;\n if (keyCode >= 65 && keyCode <= 90)\n return true;\n return false;\n}\nfunction onStartTyping(callback, options = {}) {\n const { document: document2 = defaultDocument } = options;\n const keydown = (event) => {\n if (!isFocusedElementEditable() && isTypedCharValid(event)) {\n callback(event);\n }\n };\n if (document2)\n useEventListener(document2, \"keydown\", keydown, { passive: true });\n}\n\nfunction templateRef(key, initialValue = null) {\n const instance = getCurrentInstance();\n let _trigger = () => {\n };\n const element = customRef((track, trigger) => {\n _trigger = trigger;\n return {\n get() {\n var _a, _b;\n track();\n return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue;\n },\n set() {\n }\n };\n });\n tryOnMounted(_trigger);\n onUpdated(_trigger);\n return element;\n}\n\nfunction useActiveElement(options = {}) {\n var _a;\n const {\n window = defaultWindow,\n deep = true,\n triggerOnRemoval = false\n } = options;\n const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document;\n const getDeepActiveElement = () => {\n var _a2;\n let element = document == null ? void 0 : document.activeElement;\n if (deep) {\n while (element == null ? void 0 : element.shadowRoot)\n element = (_a2 = element == null ? void 0 : element.shadowRoot) == null ? void 0 : _a2.activeElement;\n }\n return element;\n };\n const activeElement = shallowRef();\n const trigger = () => {\n activeElement.value = getDeepActiveElement();\n };\n if (window) {\n const listenerOptions = {\n capture: true,\n passive: true\n };\n useEventListener(\n window,\n \"blur\",\n (event) => {\n if (event.relatedTarget !== null)\n return;\n trigger();\n },\n listenerOptions\n );\n useEventListener(\n window,\n \"focus\",\n trigger,\n listenerOptions\n );\n }\n if (triggerOnRemoval) {\n onElementRemoval(activeElement, trigger, { document });\n }\n trigger();\n return activeElement;\n}\n\nfunction useRafFn(fn, options = {}) {\n const {\n immediate = true,\n fpsLimit = void 0,\n window = defaultWindow,\n once = false\n } = options;\n const isActive = shallowRef(false);\n const intervalLimit = computed(() => {\n return fpsLimit ? 1e3 / toValue(fpsLimit) : null;\n });\n let previousFrameTimestamp = 0;\n let rafId = null;\n function loop(timestamp) {\n if (!isActive.value || !window)\n return;\n if (!previousFrameTimestamp)\n previousFrameTimestamp = timestamp;\n const delta = timestamp - previousFrameTimestamp;\n if (intervalLimit.value && delta < intervalLimit.value) {\n rafId = window.requestAnimationFrame(loop);\n return;\n }\n previousFrameTimestamp = timestamp;\n fn({ delta, timestamp });\n if (once) {\n isActive.value = false;\n rafId = null;\n return;\n }\n rafId = window.requestAnimationFrame(loop);\n }\n function resume() {\n if (!isActive.value && window) {\n isActive.value = true;\n previousFrameTimestamp = 0;\n rafId = window.requestAnimationFrame(loop);\n }\n }\n function pause() {\n isActive.value = false;\n if (rafId != null && window) {\n window.cancelAnimationFrame(rafId);\n rafId = null;\n }\n }\n if (immediate)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive: readonly(isActive),\n pause,\n resume\n };\n}\n\nfunction useAnimate(target, keyframes, options) {\n let config;\n let animateOptions;\n if (isObject(options)) {\n config = options;\n animateOptions = objectOmit(options, [\"window\", \"immediate\", \"commitStyles\", \"persist\", \"onReady\", \"onError\"]);\n } else {\n config = { duration: options };\n animateOptions = options;\n }\n const {\n window = defaultWindow,\n immediate = true,\n commitStyles,\n persist,\n playbackRate: _playbackRate = 1,\n onReady,\n onError = (e) => {\n console.error(e);\n }\n } = config;\n const isSupported = useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n const animate = shallowRef(void 0);\n const store = shallowReactive({\n startTime: null,\n currentTime: null,\n timeline: null,\n playbackRate: _playbackRate,\n pending: false,\n playState: immediate ? \"idle\" : \"paused\",\n replaceState: \"active\"\n });\n const pending = computed(() => store.pending);\n const playState = computed(() => store.playState);\n const replaceState = computed(() => store.replaceState);\n const startTime = computed({\n get() {\n return store.startTime;\n },\n set(value) {\n store.startTime = value;\n if (animate.value)\n animate.value.startTime = value;\n }\n });\n const currentTime = computed({\n get() {\n return store.currentTime;\n },\n set(value) {\n store.currentTime = value;\n if (animate.value) {\n animate.value.currentTime = value;\n syncResume();\n }\n }\n });\n const timeline = computed({\n get() {\n return store.timeline;\n },\n set(value) {\n store.timeline = value;\n if (animate.value)\n animate.value.timeline = value;\n }\n });\n const playbackRate = computed({\n get() {\n return store.playbackRate;\n },\n set(value) {\n store.playbackRate = value;\n if (animate.value)\n animate.value.playbackRate = value;\n }\n });\n const play = () => {\n if (animate.value) {\n try {\n animate.value.play();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n } else {\n update();\n }\n };\n const pause = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.pause();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const reverse = () => {\n var _a;\n if (!animate.value)\n update();\n try {\n (_a = animate.value) == null ? void 0 : _a.reverse();\n syncResume();\n } catch (e) {\n syncPause();\n onError(e);\n }\n };\n const finish = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.finish();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n const cancel = () => {\n var _a;\n try {\n (_a = animate.value) == null ? void 0 : _a.cancel();\n syncPause();\n } catch (e) {\n onError(e);\n }\n };\n watch(() => unrefElement(target), (el) => {\n if (el) {\n update();\n } else {\n animate.value = void 0;\n }\n });\n watch(() => keyframes, (value) => {\n if (animate.value) {\n update();\n const targetEl = unrefElement(target);\n if (targetEl) {\n animate.value.effect = new KeyframeEffect(\n targetEl,\n toValue(value),\n animateOptions\n );\n }\n }\n }, { deep: true });\n tryOnMounted(() => update(true), false);\n tryOnScopeDispose(cancel);\n function update(init) {\n const el = unrefElement(target);\n if (!isSupported.value || !el)\n return;\n if (!animate.value)\n animate.value = el.animate(toValue(keyframes), animateOptions);\n if (persist)\n animate.value.persist();\n if (_playbackRate !== 1)\n animate.value.playbackRate = _playbackRate;\n if (init && !immediate)\n animate.value.pause();\n else\n syncResume();\n onReady == null ? void 0 : onReady(animate.value);\n }\n const listenerOptions = { passive: true };\n useEventListener(animate, [\"cancel\", \"finish\", \"remove\"], syncPause, listenerOptions);\n useEventListener(animate, \"finish\", () => {\n var _a;\n if (commitStyles)\n (_a = animate.value) == null ? void 0 : _a.commitStyles();\n }, listenerOptions);\n const { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n if (!animate.value)\n return;\n store.pending = animate.value.pending;\n store.playState = animate.value.playState;\n store.replaceState = animate.value.replaceState;\n store.startTime = animate.value.startTime;\n store.currentTime = animate.value.currentTime;\n store.timeline = animate.value.timeline;\n store.playbackRate = animate.value.playbackRate;\n }, { immediate: false });\n function syncResume() {\n if (isSupported.value)\n resumeRef();\n }\n function syncPause() {\n if (isSupported.value && window)\n window.requestAnimationFrame(pauseRef);\n }\n return {\n isSupported,\n animate,\n // actions\n play,\n pause,\n reverse,\n finish,\n cancel,\n // state\n pending,\n playState,\n replaceState,\n startTime,\n currentTime,\n timeline,\n playbackRate\n };\n}\n\nfunction useAsyncQueue(tasks, options) {\n const {\n interrupt = true,\n onError = noop,\n onFinished = noop,\n signal\n } = options || {};\n const promiseState = {\n aborted: \"aborted\",\n fulfilled: \"fulfilled\",\n pending: \"pending\",\n rejected: \"rejected\"\n };\n const initialResult = Array.from(Array.from({ length: tasks.length }), () => ({ state: promiseState.pending, data: null }));\n const result = reactive(initialResult);\n const activeIndex = shallowRef(-1);\n if (!tasks || tasks.length === 0) {\n onFinished();\n return {\n activeIndex,\n result\n };\n }\n function updateResult(state, res) {\n activeIndex.value++;\n result[activeIndex.value].data = res;\n result[activeIndex.value].state = state;\n }\n tasks.reduce((prev, curr) => {\n return prev.then((prevRes) => {\n var _a;\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, new Error(\"aborted\"));\n return;\n }\n if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) {\n onFinished();\n return;\n }\n const done = curr(prevRes).then((currentRes) => {\n updateResult(promiseState.fulfilled, currentRes);\n if (activeIndex.value === tasks.length - 1)\n onFinished();\n return currentRes;\n });\n if (!signal)\n return done;\n return Promise.race([done, whenAborted(signal)]);\n }).catch((e) => {\n if (signal == null ? void 0 : signal.aborted) {\n updateResult(promiseState.aborted, e);\n return e;\n }\n updateResult(promiseState.rejected, e);\n onError();\n return e;\n });\n }, Promise.resolve());\n return {\n activeIndex,\n result\n };\n}\nfunction whenAborted(signal) {\n return new Promise((resolve, reject) => {\n const error = new Error(\"aborted\");\n if (signal.aborted)\n reject(error);\n else\n signal.addEventListener(\"abort\", () => reject(error), { once: true });\n });\n}\n\nfunction useAsyncState(promise, initialState, options) {\n const {\n immediate = true,\n delay = 0,\n onError = noop,\n onSuccess = noop,\n resetOnExecute = true,\n shallow = true,\n throwError\n } = options != null ? options : {};\n const state = shallow ? shallowRef(initialState) : ref(initialState);\n const isReady = shallowRef(false);\n const isLoading = shallowRef(false);\n const error = shallowRef(void 0);\n async function execute(delay2 = 0, ...args) {\n if (resetOnExecute)\n state.value = initialState;\n error.value = void 0;\n isReady.value = false;\n isLoading.value = true;\n if (delay2 > 0)\n await promiseTimeout(delay2);\n const _promise = typeof promise === \"function\" ? promise(...args) : promise;\n try {\n const data = await _promise;\n state.value = data;\n isReady.value = true;\n onSuccess(data);\n } catch (e) {\n error.value = e;\n onError(e);\n if (throwError)\n throw e;\n } finally {\n isLoading.value = false;\n }\n return state.value;\n }\n if (immediate) {\n execute(delay);\n }\n const shell = {\n state,\n isReady,\n isLoading,\n error,\n execute\n };\n function waitUntilIsLoaded() {\n return new Promise((resolve, reject) => {\n until(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n });\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilIsLoaded().then(onFulfilled, onRejected);\n }\n };\n}\n\nconst defaults = {\n array: (v) => JSON.stringify(v),\n object: (v) => JSON.stringify(v),\n set: (v) => JSON.stringify(Array.from(v)),\n map: (v) => JSON.stringify(Object.fromEntries(v)),\n null: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n if (!target)\n return defaults.null;\n if (target instanceof Map)\n return defaults.map;\n else if (target instanceof Set)\n return defaults.set;\n else if (Array.isArray(target))\n return defaults.array;\n else\n return defaults.object;\n}\n\nfunction useBase64(target, options) {\n const base64 = shallowRef(\"\");\n const promise = shallowRef();\n function execute() {\n if (!isClient)\n return;\n promise.value = new Promise((resolve, reject) => {\n try {\n const _target = toValue(target);\n if (_target == null) {\n resolve(\"\");\n } else if (typeof _target === \"string\") {\n resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n } else if (_target instanceof Blob) {\n resolve(blobToBase64(_target));\n } else if (_target instanceof ArrayBuffer) {\n resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n } else if (_target instanceof HTMLCanvasElement) {\n resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n } else if (_target instanceof HTMLImageElement) {\n const img = _target.cloneNode(false);\n img.crossOrigin = \"Anonymous\";\n imgLoaded(img).then(() => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality));\n }).catch(reject);\n } else if (typeof _target === \"object\") {\n const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target);\n const serialized = _serializeFn(_target);\n return resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n } else {\n reject(new Error(\"target is unsupported types\"));\n }\n } catch (error) {\n reject(error);\n }\n });\n promise.value.then((res) => {\n base64.value = (options == null ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, \"\") : res;\n });\n return promise.value;\n }\n if (isRef(target) || typeof target === \"function\")\n watch(target, execute, { immediate: true });\n else\n execute();\n return {\n base64,\n promise,\n execute\n };\n}\nfunction imgLoaded(img) {\n return new Promise((resolve, reject) => {\n if (!img.complete) {\n img.onload = () => {\n resolve();\n };\n img.onerror = reject;\n } else {\n resolve();\n }\n });\n}\nfunction blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const fr = new FileReader();\n fr.onload = (e) => {\n resolve(e.target.result);\n };\n fr.onerror = reject;\n fr.readAsDataURL(blob);\n });\n}\n\nfunction useBattery(options = {}) {\n const { navigator = defaultNavigator } = options;\n const events = [\"chargingchange\", \"chargingtimechange\", \"dischargingtimechange\", \"levelchange\"];\n const isSupported = useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n const charging = shallowRef(false);\n const chargingTime = shallowRef(0);\n const dischargingTime = shallowRef(0);\n const level = shallowRef(1);\n let battery;\n function updateBatteryInfo() {\n charging.value = this.charging;\n chargingTime.value = this.chargingTime || 0;\n dischargingTime.value = this.dischargingTime || 0;\n level.value = this.level;\n }\n if (isSupported.value) {\n navigator.getBattery().then((_battery) => {\n battery = _battery;\n updateBatteryInfo.call(battery);\n useEventListener(battery, events, updateBatteryInfo, { passive: true });\n });\n }\n return {\n isSupported,\n charging,\n chargingTime,\n dischargingTime,\n level\n };\n}\n\nfunction useBluetooth(options) {\n let {\n acceptAllDevices = false\n } = options || {};\n const {\n filters = void 0,\n optionalServices = void 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => navigator && \"bluetooth\" in navigator);\n const device = shallowRef();\n const error = shallowRef(null);\n watch(device, () => {\n connectToBluetoothGATTServer();\n });\n async function requestDevice() {\n if (!isSupported.value)\n return;\n error.value = null;\n if (filters && filters.length > 0)\n acceptAllDevices = false;\n try {\n device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({\n acceptAllDevices,\n filters,\n optionalServices\n }));\n } catch (err) {\n error.value = err;\n }\n }\n const server = shallowRef();\n const isConnected = shallowRef(false);\n function reset() {\n isConnected.value = false;\n device.value = void 0;\n server.value = void 0;\n }\n async function connectToBluetoothGATTServer() {\n error.value = null;\n if (device.value && device.value.gatt) {\n useEventListener(device, \"gattserverdisconnected\", reset, { passive: true });\n try {\n server.value = await device.value.gatt.connect();\n isConnected.value = server.value.connected;\n } catch (err) {\n error.value = err;\n }\n }\n }\n tryOnMounted(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.connect();\n });\n tryOnScopeDispose(() => {\n var _a;\n if (device.value)\n (_a = device.value.gatt) == null ? void 0 : _a.disconnect();\n });\n return {\n isSupported,\n isConnected: readonly(isConnected),\n // Device:\n device,\n requestDevice,\n // Server:\n server,\n // Errors:\n error\n };\n}\n\nconst ssrWidthSymbol = Symbol(\"vueuse-ssr-width\");\nfunction useSSRWidth() {\n const ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null;\n return typeof ssrWidth === \"number\" ? ssrWidth : void 0;\n}\nfunction provideSSRWidth(width, app) {\n if (app !== void 0) {\n app.provide(ssrWidthSymbol, width);\n } else {\n provideLocal(ssrWidthSymbol, width);\n }\n}\n\nfunction useMediaQuery(query, options = {}) {\n const { window = defaultWindow, ssrWidth = useSSRWidth() } = options;\n const isSupported = useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n const ssrSupport = shallowRef(typeof ssrWidth === \"number\");\n const mediaQuery = shallowRef();\n const matches = shallowRef(false);\n const handler = (event) => {\n matches.value = event.matches;\n };\n watchEffect(() => {\n if (ssrSupport.value) {\n ssrSupport.value = !isSupported.value;\n const queryStrings = toValue(query).split(\",\");\n matches.value = queryStrings.some((queryString) => {\n const not = queryString.includes(\"not all\");\n const minWidth = queryString.match(/\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n const maxWidth = queryString.match(/\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n let res = Boolean(minWidth || maxWidth);\n if (minWidth && res) {\n res = ssrWidth >= pxValue(minWidth[1]);\n }\n if (maxWidth && res) {\n res = ssrWidth <= pxValue(maxWidth[1]);\n }\n return not ? !res : res;\n });\n return;\n }\n if (!isSupported.value)\n return;\n mediaQuery.value = window.matchMedia(toValue(query));\n matches.value = mediaQuery.value.matches;\n });\n useEventListener(mediaQuery, \"change\", handler, { passive: true });\n return computed(() => matches.value);\n}\n\nconst breakpointsTailwind = {\n \"sm\": 640,\n \"md\": 768,\n \"lg\": 1024,\n \"xl\": 1280,\n \"2xl\": 1536\n};\nconst breakpointsBootstrapV5 = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n};\nconst breakpointsVuetifyV2 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1264,\n xl: 1904\n};\nconst breakpointsVuetifyV3 = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560\n};\nconst breakpointsVuetify = breakpointsVuetifyV2;\nconst breakpointsAntDesign = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600\n};\nconst breakpointsQuasar = {\n xs: 0,\n sm: 600,\n md: 1024,\n lg: 1440,\n xl: 1920\n};\nconst breakpointsSematic = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 425,\n tablet: 768,\n laptop: 1024,\n laptopL: 1440,\n desktop4K: 2560\n};\nconst breakpointsMasterCss = {\n \"3xs\": 360,\n \"2xs\": 480,\n \"xs\": 600,\n \"sm\": 768,\n \"md\": 1024,\n \"lg\": 1280,\n \"xl\": 1440,\n \"2xl\": 1600,\n \"3xl\": 1920,\n \"4xl\": 2560\n};\nconst breakpointsPrimeFlex = {\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\nconst breakpointsElement = {\n xs: 0,\n sm: 768,\n md: 992,\n lg: 1200,\n xl: 1920\n};\n\nfunction useBreakpoints(breakpoints, options = {}) {\n function getValue(k, delta) {\n let v = toValue(breakpoints[toValue(k)]);\n if (delta != null)\n v = increaseWithUnit(v, delta);\n if (typeof v === \"number\")\n v = `${v}px`;\n return v;\n }\n const { window = defaultWindow, strategy = \"min-width\", ssrWidth = useSSRWidth() } = options;\n const ssrSupport = typeof ssrWidth === \"number\";\n const mounted = ssrSupport ? shallowRef(false) : { value: true };\n if (ssrSupport) {\n tryOnMounted(() => mounted.value = !!window);\n }\n function match(query, size) {\n if (!mounted.value && ssrSupport) {\n return query === \"min\" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);\n }\n if (!window)\n return false;\n return window.matchMedia(`(${query}-width: ${size})`).matches;\n }\n const greaterOrEqual = (k) => {\n return useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n };\n const smallerOrEqual = (k) => {\n return useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n };\n const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n Object.defineProperty(shortcuts, k, {\n get: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n enumerable: true,\n configurable: true\n });\n return shortcuts;\n }, {});\n function current() {\n const points = Object.keys(breakpoints).map((k) => [k, shortcutMethods[k], pxValue(getValue(k))]).sort((a, b) => a[2] - b[2]);\n return computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n }\n return Object.assign(shortcutMethods, {\n greaterOrEqual,\n smallerOrEqual,\n greater(k) {\n return useMediaQuery(() => `(min-width: ${getValue(k, 0.1)})`, options);\n },\n smaller(k) {\n return useMediaQuery(() => `(max-width: ${getValue(k, -0.1)})`, options);\n },\n between(a, b) {\n return useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options);\n },\n isGreater(k) {\n return match(\"min\", getValue(k, 0.1));\n },\n isGreaterOrEqual(k) {\n return match(\"min\", getValue(k));\n },\n isSmaller(k) {\n return match(\"max\", getValue(k, -0.1));\n },\n isSmallerOrEqual(k) {\n return match(\"max\", getValue(k));\n },\n isInBetween(a, b) {\n return match(\"min\", getValue(a)) && match(\"max\", getValue(b, -0.1));\n },\n current,\n active() {\n const bps = current();\n return computed(() => bps.value.length === 0 ? \"\" : bps.value.at(strategy === \"min-width\" ? -1 : 0));\n }\n });\n}\n\nfunction useBroadcastChannel(options) {\n const {\n name,\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"BroadcastChannel\" in window);\n const isClosed = shallowRef(false);\n const channel = ref();\n const data = ref();\n const error = shallowRef(null);\n const post = (data2) => {\n if (channel.value)\n channel.value.postMessage(data2);\n };\n const close = () => {\n if (channel.value)\n channel.value.close();\n isClosed.value = true;\n };\n if (isSupported.value) {\n tryOnMounted(() => {\n error.value = null;\n channel.value = new BroadcastChannel(name);\n const listenerOptions = {\n passive: true\n };\n useEventListener(channel, \"message\", (e) => {\n data.value = e.data;\n }, listenerOptions);\n useEventListener(channel, \"messageerror\", (e) => {\n error.value = e;\n }, listenerOptions);\n useEventListener(channel, \"close\", () => {\n isClosed.value = true;\n }, listenerOptions);\n });\n }\n tryOnScopeDispose(() => {\n close();\n });\n return {\n isSupported,\n channel,\n data,\n post,\n close,\n error,\n isClosed\n };\n}\n\nconst WRITABLE_PROPERTIES = [\n \"hash\",\n \"host\",\n \"hostname\",\n \"href\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"search\"\n];\nfunction useBrowserLocation(options = {}) {\n const { window = defaultWindow } = options;\n const refs = Object.fromEntries(\n WRITABLE_PROPERTIES.map((key) => [key, ref()])\n );\n for (const [key, ref] of objectEntries(refs)) {\n watch(ref, (value) => {\n if (!(window == null ? void 0 : window.location) || window.location[key] === value)\n return;\n window.location[key] = value;\n });\n }\n const buildState = (trigger) => {\n var _a;\n const { state: state2, length } = (window == null ? void 0 : window.history) || {};\n const { origin } = (window == null ? void 0 : window.location) || {};\n for (const key of WRITABLE_PROPERTIES)\n refs[key].value = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a[key];\n return reactive({\n trigger,\n state: state2,\n length,\n origin,\n ...refs\n });\n };\n const state = ref(buildState(\"load\"));\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), listenerOptions);\n useEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), listenerOptions);\n }\n return state;\n}\n\nfunction useCached(refValue, comparator = (a, b) => a === b, options) {\n const { deepRefs = true, ...watchOptions } = options || {};\n const cachedValue = createRef(refValue.value, deepRefs);\n watch(() => refValue.value, (value) => {\n if (!comparator(value, cachedValue.value))\n cachedValue.value = value;\n }, watchOptions);\n return cachedValue;\n}\n\nfunction usePermission(permissionDesc, options = {}) {\n const {\n controls = false,\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"permissions\" in navigator);\n const permissionStatus = shallowRef();\n const desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n const state = shallowRef();\n const update = () => {\n var _a, _b;\n state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : \"prompt\";\n };\n useEventListener(permissionStatus, \"change\", update, { passive: true });\n const query = createSingletonPromise(async () => {\n if (!isSupported.value)\n return;\n if (!permissionStatus.value) {\n try {\n permissionStatus.value = await navigator.permissions.query(desc);\n } catch (e) {\n permissionStatus.value = void 0;\n } finally {\n update();\n }\n }\n if (controls)\n return toRaw(permissionStatus.value);\n });\n query();\n if (controls) {\n return {\n state,\n isSupported,\n query\n };\n } else {\n return state;\n }\n}\n\nfunction useClipboard(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500,\n legacy = false\n } = options;\n const isClipboardApiSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const permissionRead = usePermission(\"clipboard-read\");\n const permissionWrite = usePermission(\"clipboard-write\");\n const isSupported = computed(() => isClipboardApiSupported.value || legacy);\n const text = shallowRef(\"\");\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n async function updateText() {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));\n if (!useLegacy) {\n try {\n text.value = await navigator.clipboard.readText();\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy) {\n text.value = legacyRead();\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateText, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));\n if (!useLegacy) {\n try {\n await navigator.clipboard.writeText(value);\n } catch (e) {\n useLegacy = true;\n }\n }\n if (useLegacy)\n legacyCopy(value);\n text.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n function legacyCopy(value) {\n const ta = document.createElement(\"textarea\");\n ta.value = value != null ? value : \"\";\n ta.style.position = \"absolute\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.select();\n document.execCommand(\"copy\");\n ta.remove();\n }\n function legacyRead() {\n var _a, _b, _c;\n return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : \"\";\n }\n function isAllowed(status) {\n return status === \"granted\" || status === \"prompt\";\n }\n return {\n isSupported,\n text,\n copied,\n copy\n };\n}\n\nfunction useClipboardItems(options = {}) {\n const {\n navigator = defaultNavigator,\n read = false,\n source,\n copiedDuring = 1500\n } = options;\n const isSupported = useSupported(() => navigator && \"clipboard\" in navigator);\n const content = ref([]);\n const copied = shallowRef(false);\n const timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n function updateContent() {\n if (isSupported.value) {\n navigator.clipboard.read().then((items) => {\n content.value = items;\n });\n }\n }\n if (isSupported.value && read)\n useEventListener([\"copy\", \"cut\"], updateContent, { passive: true });\n async function copy(value = toValue(source)) {\n if (isSupported.value && value != null) {\n await navigator.clipboard.write(value);\n content.value = value;\n copied.value = true;\n timeout.start();\n }\n }\n return {\n isSupported,\n content,\n copied,\n copy\n };\n}\n\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n const cloned = ref({});\n const isModified = shallowRef(false);\n let _lastSync = false;\n const {\n manual,\n clone = cloneFnJSON,\n // watch options\n deep = true,\n immediate = true\n } = options;\n watch(cloned, () => {\n if (_lastSync) {\n _lastSync = false;\n return;\n }\n isModified.value = true;\n }, {\n deep: true,\n flush: \"sync\"\n });\n function sync() {\n _lastSync = true;\n isModified.value = false;\n cloned.value = clone(toValue(source));\n }\n if (!manual && (isRef(source) || typeof source === \"function\")) {\n watch(source, sync, {\n ...options,\n deep,\n immediate\n });\n } else {\n sync();\n }\n return { cloned, isModified, sync };\n}\n\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n if (!(globalKey in _global))\n _global[globalKey] = _global[globalKey] || {};\n return _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n return handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n handlers[key] = fn;\n}\n\nfunction usePreferredDark(options) {\n return useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n\nfunction guessSerializerType(rawInit) {\n return rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n\nconst StorageSerializers = {\n boolean: {\n read: (v) => v === \"true\",\n write: (v) => String(v)\n },\n object: {\n read: (v) => JSON.parse(v),\n write: (v) => JSON.stringify(v)\n },\n number: {\n read: (v) => Number.parseFloat(v),\n write: (v) => String(v)\n },\n any: {\n read: (v) => v,\n write: (v) => String(v)\n },\n string: {\n read: (v) => v,\n write: (v) => String(v)\n },\n map: {\n read: (v) => new Map(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v.entries()))\n },\n set: {\n read: (v) => new Set(JSON.parse(v)),\n write: (v) => JSON.stringify(Array.from(v))\n },\n date: {\n read: (v) => new Date(v),\n write: (v) => v.toISOString()\n }\n};\nconst customStorageEventName = \"vueuse-storage\";\nfunction useStorage(key, defaults, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n },\n initOnMounted\n } = options;\n const data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n const keyComputed = computed(() => toValue(key));\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorage\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n if (!storage)\n return data;\n const rawInit = toValue(defaults);\n const type = guessSerializerType(rawInit);\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(\n data,\n () => write(data.value),\n { flush, deep, eventFilter }\n );\n watch(keyComputed, () => update(), { flush });\n if (window && listenToStorageChanges) {\n tryOnMounted(() => {\n if (storage instanceof Storage)\n useEventListener(window, \"storage\", update, { passive: true });\n else\n useEventListener(window, customStorageEventName, updateFromCustomEvent);\n if (initOnMounted)\n update();\n });\n }\n if (!initOnMounted)\n update();\n function dispatchWriteEvent(oldValue, newValue) {\n if (window) {\n const payload = {\n key: keyComputed.value,\n oldValue,\n newValue,\n storageArea: storage\n };\n window.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, {\n detail: payload\n }));\n }\n }\n function write(v) {\n try {\n const oldValue = storage.getItem(keyComputed.value);\n if (v == null) {\n dispatchWriteEvent(oldValue, null);\n storage.removeItem(keyComputed.value);\n } else {\n const serialized = serializer.write(v);\n if (oldValue !== serialized) {\n storage.setItem(keyComputed.value, serialized);\n dispatchWriteEvent(oldValue, serialized);\n }\n }\n } catch (e) {\n onError(e);\n }\n }\n function read(event) {\n const rawValue = event ? event.newValue : storage.getItem(keyComputed.value);\n if (rawValue == null) {\n if (writeDefaults && rawInit != null)\n storage.setItem(keyComputed.value, serializer.write(rawInit));\n return rawInit;\n } else if (!event && mergeDefaults) {\n const value = serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n return mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n return { ...rawInit, ...value };\n return value;\n } else if (typeof rawValue !== \"string\") {\n return rawValue;\n } else {\n return serializer.read(rawValue);\n }\n }\n function update(event) {\n if (event && event.storageArea !== storage)\n return;\n if (event && event.key == null) {\n data.value = rawInit;\n return;\n }\n if (event && event.key !== keyComputed.value)\n return;\n pauseWatch();\n try {\n if ((event == null ? void 0 : event.newValue) !== serializer.write(data.value))\n data.value = read(event);\n } catch (e) {\n onError(e);\n } finally {\n if (event)\n nextTick(resumeWatch);\n else\n resumeWatch();\n }\n }\n function updateFromCustomEvent(event) {\n update(event.detail);\n }\n return data;\n}\n\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\nfunction useColorMode(options = {}) {\n const {\n selector = \"html\",\n attribute = \"class\",\n initialValue = \"auto\",\n window = defaultWindow,\n storage,\n storageKey = \"vueuse-color-scheme\",\n listenToStorageChanges = true,\n storageRef,\n emitAuto,\n disableTransition = true\n } = options;\n const modes = {\n auto: \"\",\n light: \"light\",\n dark: \"dark\",\n ...options.modes || {}\n };\n const preferredDark = usePreferredDark({ window });\n const system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n const store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges }));\n const state = computed(() => store.value === \"auto\" ? system.value : store.value);\n const updateHTMLAttrs = getSSRHandler(\n \"updateHTMLAttrs\",\n (selector2, attribute2, value) => {\n const el = typeof selector2 === \"string\" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);\n if (!el)\n return;\n const classesToAdd = /* @__PURE__ */ new Set();\n const classesToRemove = /* @__PURE__ */ new Set();\n let attributeToChange = null;\n if (attribute2 === \"class\") {\n const current = value.split(/\\s/g);\n Object.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n if (current.includes(v))\n classesToAdd.add(v);\n else\n classesToRemove.add(v);\n });\n } else {\n attributeToChange = { key: attribute2, value };\n }\n if (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null)\n return;\n let style;\n if (disableTransition) {\n style = window.document.createElement(\"style\");\n style.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n window.document.head.appendChild(style);\n }\n for (const c of classesToAdd) {\n el.classList.add(c);\n }\n for (const c of classesToRemove) {\n el.classList.remove(c);\n }\n if (attributeToChange) {\n el.setAttribute(attributeToChange.key, attributeToChange.value);\n }\n if (disableTransition) {\n window.getComputedStyle(style).opacity;\n document.head.removeChild(style);\n }\n }\n );\n function defaultOnChanged(mode) {\n var _a;\n updateHTMLAttrs(selector, attribute, (_a = modes[mode]) != null ? _a : mode);\n }\n function onChanged(mode) {\n if (options.onChanged)\n options.onChanged(mode, defaultOnChanged);\n else\n defaultOnChanged(mode);\n }\n watch(state, onChanged, { flush: \"post\", immediate: true });\n tryOnMounted(() => onChanged(state.value));\n const auto = computed({\n get() {\n return emitAuto ? store.value : state.value;\n },\n set(v) {\n store.value = v;\n }\n });\n return Object.assign(auto, { store, system, state });\n}\n\nfunction useConfirmDialog(revealed = shallowRef(false)) {\n const confirmHook = createEventHook();\n const cancelHook = createEventHook();\n const revealHook = createEventHook();\n let _resolve = noop;\n const reveal = (data) => {\n revealHook.trigger(data);\n revealed.value = true;\n return new Promise((resolve) => {\n _resolve = resolve;\n });\n };\n const confirm = (data) => {\n revealed.value = false;\n confirmHook.trigger(data);\n _resolve({ data, isCanceled: false });\n };\n const cancel = (data) => {\n revealed.value = false;\n cancelHook.trigger(data);\n _resolve({ data, isCanceled: true });\n };\n return {\n isRevealed: computed(() => revealed.value),\n reveal,\n confirm,\n cancel,\n onReveal: revealHook.on,\n onConfirm: confirmHook.on,\n onCancel: cancelHook.on\n };\n}\n\nfunction useCountdown(initialCountdown, options) {\n var _a, _b;\n const remaining = shallowRef(toValue(initialCountdown));\n const intervalController = useIntervalFn(() => {\n var _a2, _b2;\n const value = remaining.value - 1;\n remaining.value = value < 0 ? 0 : value;\n (_a2 = options == null ? void 0 : options.onTick) == null ? void 0 : _a2.call(options);\n if (remaining.value <= 0) {\n intervalController.pause();\n (_b2 = options == null ? void 0 : options.onComplete) == null ? void 0 : _b2.call(options);\n }\n }, (_a = options == null ? void 0 : options.interval) != null ? _a : 1e3, { immediate: (_b = options == null ? void 0 : options.immediate) != null ? _b : false });\n const reset = (countdown) => {\n var _a2;\n remaining.value = (_a2 = toValue(countdown)) != null ? _a2 : toValue(initialCountdown);\n };\n const stop = () => {\n intervalController.pause();\n reset();\n };\n const resume = () => {\n if (!intervalController.isActive.value) {\n if (remaining.value > 0) {\n intervalController.resume();\n }\n }\n };\n const start = (countdown) => {\n reset(countdown);\n intervalController.resume();\n };\n return {\n remaining,\n reset,\n stop,\n start,\n pause: intervalController.pause,\n resume,\n isActive: intervalController.isActive\n };\n}\n\nfunction useCssVar(prop, target, options = {}) {\n const { window = defaultWindow, initialValue, observe = false } = options;\n const variable = shallowRef(initialValue);\n const elRef = computed(() => {\n var _a;\n return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n });\n function updateCssVar() {\n var _a;\n const key = toValue(prop);\n const el = toValue(elRef);\n if (el && window && key) {\n const value = (_a = window.getComputedStyle(el).getPropertyValue(key)) == null ? void 0 : _a.trim();\n variable.value = value || variable.value || initialValue;\n }\n }\n if (observe) {\n useMutationObserver(elRef, updateCssVar, {\n attributeFilter: [\"style\", \"class\"],\n window\n });\n }\n watch(\n [elRef, () => toValue(prop)],\n (_, old) => {\n if (old[0] && old[1])\n old[0].style.removeProperty(old[1]);\n updateCssVar();\n },\n { immediate: true }\n );\n watch(\n [variable, elRef],\n ([val, el]) => {\n const raw_prop = toValue(prop);\n if ((el == null ? void 0 : el.style) && raw_prop) {\n if (val == null)\n el.style.removeProperty(raw_prop);\n else\n el.style.setProperty(raw_prop, val);\n }\n },\n { immediate: true }\n );\n return variable;\n}\n\nfunction useCurrentElement(rootComponent) {\n const vm = getCurrentInstance();\n const currentElement = computedWithControl(\n () => null,\n () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el\n );\n onUpdated(currentElement.trigger);\n onMounted(currentElement.trigger);\n return currentElement;\n}\n\nfunction useCycleList(list, options) {\n const state = shallowRef(getInitialValue());\n const listRef = toRef(list);\n const index = computed({\n get() {\n var _a;\n const targetList = listRef.value;\n let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n if (index2 < 0)\n index2 = (_a = options == null ? void 0 : options.fallbackIndex) != null ? _a : 0;\n return index2;\n },\n set(v) {\n set(v);\n }\n });\n function set(i) {\n const targetList = listRef.value;\n const length = targetList.length;\n const index2 = (i % length + length) % length;\n const value = targetList[index2];\n state.value = value;\n return value;\n }\n function shift(delta = 1) {\n return set(index.value + delta);\n }\n function next(n = 1) {\n return shift(n);\n }\n function prev(n = 1) {\n return shift(-n);\n }\n function getInitialValue() {\n var _a, _b;\n return (_b = toValue((_a = options == null ? void 0 : options.initialValue) != null ? _a : toValue(list)[0])) != null ? _b : void 0;\n }\n watch(listRef, () => set(index.value));\n return {\n state,\n index,\n next,\n prev,\n go: set\n };\n}\n\nfunction useDark(options = {}) {\n const {\n valueDark = \"dark\",\n valueLight = \"\"\n } = options;\n const mode = useColorMode({\n ...options,\n onChanged: (mode2, defaultHandler) => {\n var _a;\n if (options.onChanged)\n (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === \"dark\", defaultHandler, mode2);\n else\n defaultHandler(mode2);\n },\n modes: {\n dark: valueDark,\n light: valueLight\n }\n });\n const system = computed(() => mode.system.value);\n const isDark = computed({\n get() {\n return mode.value === \"dark\";\n },\n set(v) {\n const modeVal = v ? \"dark\" : \"light\";\n if (system.value === modeVal)\n mode.value = \"auto\";\n else\n mode.value = modeVal;\n }\n });\n return isDark;\n}\n\nfunction fnBypass(v) {\n return v;\n}\nfunction fnSetSource(source, value) {\n return source.value = value;\n}\nfunction defaultDump(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n return clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction useManualRefHistory(source, options = {}) {\n const {\n clone = false,\n dump = defaultDump(clone),\n parse = defaultParse(clone),\n setSource = fnSetSource\n } = options;\n function _createHistoryRecord() {\n return markRaw({\n snapshot: dump(source.value),\n timestamp: timestamp()\n });\n }\n const last = ref(_createHistoryRecord());\n const undoStack = ref([]);\n const redoStack = ref([]);\n const _setSource = (record) => {\n setSource(source, parse(record.snapshot));\n last.value = record;\n };\n const commit = () => {\n undoStack.value.unshift(last.value);\n last.value = _createHistoryRecord();\n if (options.capacity && undoStack.value.length > options.capacity)\n undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n if (redoStack.value.length)\n redoStack.value.splice(0, redoStack.value.length);\n };\n const clear = () => {\n undoStack.value.splice(0, undoStack.value.length);\n redoStack.value.splice(0, redoStack.value.length);\n };\n const undo = () => {\n const state = undoStack.value.shift();\n if (state) {\n redoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const redo = () => {\n const state = redoStack.value.shift();\n if (state) {\n undoStack.value.unshift(last.value);\n _setSource(state);\n }\n };\n const reset = () => {\n _setSource(last.value);\n };\n const history = computed(() => [last.value, ...undoStack.value]);\n const canUndo = computed(() => undoStack.value.length > 0);\n const canRedo = computed(() => redoStack.value.length > 0);\n return {\n source,\n undoStack,\n redoStack,\n last,\n history,\n canUndo,\n canRedo,\n clear,\n commit,\n reset,\n undo,\n redo\n };\n}\n\nfunction useRefHistory(source, options = {}) {\n const {\n deep = false,\n flush = \"pre\",\n eventFilter\n } = options;\n const {\n eventFilter: composedFilter,\n pause,\n resume: resumeTracking,\n isActive: isTracking\n } = pausableFilter(eventFilter);\n const {\n ignoreUpdates,\n ignorePrevAsyncUpdates,\n stop\n } = watchIgnorable(\n source,\n commit,\n { deep, flush, eventFilter: composedFilter }\n );\n function setSource(source2, value) {\n ignorePrevAsyncUpdates();\n ignoreUpdates(() => {\n source2.value = value;\n });\n }\n const manualHistory = useManualRefHistory(source, { ...options, clone: options.clone || deep, setSource });\n const { clear, commit: manualCommit } = manualHistory;\n function commit() {\n ignorePrevAsyncUpdates();\n manualCommit();\n }\n function resume(commitNow) {\n resumeTracking();\n if (commitNow)\n commit();\n }\n function batch(fn) {\n let canceled = false;\n const cancel = () => canceled = true;\n ignoreUpdates(() => {\n fn(cancel);\n });\n if (!canceled)\n commit();\n }\n function dispose() {\n stop();\n clear();\n }\n return {\n ...manualHistory,\n isTracking,\n pause,\n resume,\n commit,\n batch,\n dispose\n };\n}\n\nfunction useDebouncedRefHistory(source, options = {}) {\n const filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nfunction useDeviceMotion(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions = false,\n eventFilter = bypassFilter\n } = options;\n const isSupported = useSupported(() => typeof DeviceMotionEvent !== \"undefined\");\n const requirePermissions = useSupported(() => isSupported.value && \"requestPermission\" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === \"function\");\n const permissionGranted = shallowRef(false);\n const acceleration = ref({ x: null, y: null, z: null });\n const rotationRate = ref({ alpha: null, beta: null, gamma: null });\n const interval = shallowRef(0);\n const accelerationIncludingGravity = ref({\n x: null,\n y: null,\n z: null\n });\n function init() {\n if (window) {\n const onDeviceMotion = createFilterWrapper(\n eventFilter,\n (event) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n acceleration.value = {\n x: ((_a = event.acceleration) == null ? void 0 : _a.x) || null,\n y: ((_b = event.acceleration) == null ? void 0 : _b.y) || null,\n z: ((_c = event.acceleration) == null ? void 0 : _c.z) || null\n };\n accelerationIncludingGravity.value = {\n x: ((_d = event.accelerationIncludingGravity) == null ? void 0 : _d.x) || null,\n y: ((_e = event.accelerationIncludingGravity) == null ? void 0 : _e.y) || null,\n z: ((_f = event.accelerationIncludingGravity) == null ? void 0 : _f.z) || null\n };\n rotationRate.value = {\n alpha: ((_g = event.rotationRate) == null ? void 0 : _g.alpha) || null,\n beta: ((_h = event.rotationRate) == null ? void 0 : _h.beta) || null,\n gamma: ((_i = event.rotationRate) == null ? void 0 : _i.gamma) || null\n };\n interval.value = event.interval;\n }\n );\n useEventListener(window, \"devicemotion\", onDeviceMotion, { passive: true });\n }\n }\n const ensurePermissions = async () => {\n if (!requirePermissions.value)\n permissionGranted.value = true;\n if (permissionGranted.value)\n return;\n if (requirePermissions.value) {\n const requestPermission = DeviceMotionEvent.requestPermission;\n try {\n const response = await requestPermission();\n if (response === \"granted\") {\n permissionGranted.value = true;\n init();\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n if (isSupported.value) {\n if (requestPermissions && requirePermissions.value) {\n ensurePermissions().then(() => init());\n } else {\n init();\n }\n }\n return {\n acceleration,\n accelerationIncludingGravity,\n rotationRate,\n interval,\n isSupported,\n requirePermissions,\n ensurePermissions,\n permissionGranted\n };\n}\n\nfunction useDeviceOrientation(options = {}) {\n const { window = defaultWindow } = options;\n const isSupported = useSupported(() => window && \"DeviceOrientationEvent\" in window);\n const isAbsolute = shallowRef(false);\n const alpha = shallowRef(null);\n const beta = shallowRef(null);\n const gamma = shallowRef(null);\n if (window && isSupported.value) {\n useEventListener(window, \"deviceorientation\", (event) => {\n isAbsolute.value = event.absolute;\n alpha.value = event.alpha;\n beta.value = event.beta;\n gamma.value = event.gamma;\n }, { passive: true });\n }\n return {\n isSupported,\n isAbsolute,\n alpha,\n beta,\n gamma\n };\n}\n\nfunction useDevicePixelRatio(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const pixelRatio = shallowRef(1);\n const query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options);\n let stop = noop;\n if (window) {\n stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio);\n }\n return {\n pixelRatio: readonly(pixelRatio),\n stop\n };\n}\n\nfunction useDevicesList(options = {}) {\n const {\n navigator = defaultNavigator,\n requestPermissions = false,\n constraints = { audio: true, video: true },\n onUpdated\n } = options;\n const devices = ref([]);\n const videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n const audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n const audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n const permissionGranted = shallowRef(false);\n let stream;\n async function update() {\n if (!isSupported.value)\n return;\n devices.value = await navigator.mediaDevices.enumerateDevices();\n onUpdated == null ? void 0 : onUpdated(devices.value);\n if (stream) {\n stream.getTracks().forEach((t) => t.stop());\n stream = null;\n }\n }\n async function ensurePermissions() {\n const deviceName = constraints.video ? \"camera\" : \"microphone\";\n if (!isSupported.value)\n return false;\n if (permissionGranted.value)\n return true;\n const { state, query } = usePermission(deviceName, { controls: true });\n await query();\n if (state.value !== \"granted\") {\n let granted = true;\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (e) {\n stream = null;\n granted = false;\n }\n update();\n permissionGranted.value = granted;\n } else {\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n }\n if (isSupported.value) {\n if (requestPermissions)\n ensurePermissions();\n useEventListener(navigator.mediaDevices, \"devicechange\", update, { passive: true });\n update();\n }\n return {\n devices,\n ensurePermissions,\n permissionGranted,\n videoInputs,\n audioInputs,\n audioOutputs,\n isSupported\n };\n}\n\nfunction useDisplayMedia(options = {}) {\n var _a;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const video = options.video;\n const audio = options.audio;\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia;\n });\n const constraint = { audio, video };\n const stream = shallowRef();\n async function _start() {\n var _a2;\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => useEventListener(t, \"ended\", stop, { passive: true }));\n return stream.value;\n }\n async function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else\n _stop();\n },\n { immediate: true }\n );\n return {\n isSupported,\n stream,\n start,\n stop,\n enabled\n };\n}\n\nfunction useDocumentVisibility(options = {}) {\n const { document = defaultDocument } = options;\n if (!document)\n return shallowRef(\"visible\");\n const visibility = shallowRef(document.visibilityState);\n useEventListener(document, \"visibilitychange\", () => {\n visibility.value = document.visibilityState;\n }, { passive: true });\n return visibility;\n}\n\nfunction useDraggable(target, options = {}) {\n var _a;\n const {\n pointerTypes,\n preventDefault,\n stopPropagation,\n exact,\n onMove,\n onEnd,\n onStart,\n initialValue,\n axis = \"both\",\n draggingElement = defaultWindow,\n containerElement,\n handle: draggingHandle = target,\n buttons = [0]\n } = options;\n const position = ref(\n (_a = toValue(initialValue)) != null ? _a : { x: 0, y: 0 }\n );\n const pressedDelta = ref();\n const filterEvent = (e) => {\n if (pointerTypes)\n return pointerTypes.includes(e.pointerType);\n return true;\n };\n const handleEvent = (e) => {\n if (toValue(preventDefault))\n e.preventDefault();\n if (toValue(stopPropagation))\n e.stopPropagation();\n };\n const start = (e) => {\n var _a2;\n if (!toValue(buttons).includes(e.button))\n return;\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (toValue(exact) && e.target !== toValue(target))\n return;\n const container = toValue(containerElement);\n const containerRect = (_a2 = container == null ? void 0 : container.getBoundingClientRect) == null ? void 0 : _a2.call(container);\n const targetRect = toValue(target).getBoundingClientRect();\n const pos = {\n x: e.clientX - (container ? targetRect.left - containerRect.left + container.scrollLeft : targetRect.left),\n y: e.clientY - (container ? targetRect.top - containerRect.top + container.scrollTop : targetRect.top)\n };\n if ((onStart == null ? void 0 : onStart(pos, e)) === false)\n return;\n pressedDelta.value = pos;\n handleEvent(e);\n };\n const move = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n const container = toValue(containerElement);\n const targetRect = toValue(target).getBoundingClientRect();\n let { x, y } = position.value;\n if (axis === \"x\" || axis === \"both\") {\n x = e.clientX - pressedDelta.value.x;\n if (container)\n x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n }\n if (axis === \"y\" || axis === \"both\") {\n y = e.clientY - pressedDelta.value.y;\n if (container)\n y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n }\n position.value = {\n x,\n y\n };\n onMove == null ? void 0 : onMove(position.value, e);\n handleEvent(e);\n };\n const end = (e) => {\n if (toValue(options.disabled) || !filterEvent(e))\n return;\n if (!pressedDelta.value)\n return;\n pressedDelta.value = void 0;\n onEnd == null ? void 0 : onEnd(position.value, e);\n handleEvent(e);\n };\n if (isClient) {\n const config = () => {\n var _a2;\n return {\n capture: (_a2 = options.capture) != null ? _a2 : true,\n passive: !toValue(preventDefault)\n };\n };\n useEventListener(draggingHandle, \"pointerdown\", start, config);\n useEventListener(draggingElement, \"pointermove\", move, config);\n useEventListener(draggingElement, \"pointerup\", end, config);\n }\n return {\n ...toRefs(position),\n position,\n isDragging: computed(() => !!pressedDelta.value),\n style: computed(\n () => `left:${position.value.x}px;top:${position.value.y}px;`\n )\n };\n}\n\nfunction useDropZone(target, options = {}) {\n var _a, _b;\n const isOverDropZone = shallowRef(false);\n const files = shallowRef(null);\n let counter = 0;\n let isValid = true;\n if (isClient) {\n const _options = typeof options === \"function\" ? { onDrop: options } : options;\n const multiple = (_a = _options.multiple) != null ? _a : true;\n const preventDefaultForUnhandled = (_b = _options.preventDefaultForUnhandled) != null ? _b : false;\n const getFiles = (event) => {\n var _a2, _b2;\n const list = Array.from((_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null ? _b2 : []);\n return list.length === 0 ? null : multiple ? list : [list[0]];\n };\n const checkDataTypes = (types) => {\n const dataTypes = unref(_options.dataTypes);\n if (typeof dataTypes === \"function\")\n return dataTypes(types);\n if (!(dataTypes == null ? void 0 : dataTypes.length))\n return true;\n if (types.length === 0)\n return false;\n return types.every(\n (type) => dataTypes.some((allowedType) => type.includes(allowedType))\n );\n };\n const checkValidity = (items) => {\n const types = Array.from(items != null ? items : []).map((item) => item.type);\n const dataTypesValid = checkDataTypes(types);\n const multipleFilesValid = multiple || items.length <= 1;\n return dataTypesValid && multipleFilesValid;\n };\n const isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !(\"chrome\" in window);\n const handleDragEvent = (event, eventType) => {\n var _a2, _b2, _c, _d, _e, _f;\n const dataTransferItemList = (_a2 = event.dataTransfer) == null ? void 0 : _a2.items;\n isValid = (_b2 = dataTransferItemList && checkValidity(dataTransferItemList)) != null ? _b2 : false;\n if (preventDefaultForUnhandled) {\n event.preventDefault();\n }\n if (!isSafari() && !isValid) {\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"none\";\n }\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n const currentFiles = getFiles(event);\n switch (eventType) {\n case \"enter\":\n counter += 1;\n isOverDropZone.value = true;\n (_c = _options.onEnter) == null ? void 0 : _c.call(_options, null, event);\n break;\n case \"over\":\n (_d = _options.onOver) == null ? void 0 : _d.call(_options, null, event);\n break;\n case \"leave\":\n counter -= 1;\n if (counter === 0)\n isOverDropZone.value = false;\n (_e = _options.onLeave) == null ? void 0 : _e.call(_options, null, event);\n break;\n case \"drop\":\n counter = 0;\n isOverDropZone.value = false;\n if (isValid) {\n files.value = currentFiles;\n (_f = _options.onDrop) == null ? void 0 : _f.call(_options, currentFiles, event);\n }\n break;\n }\n };\n useEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n useEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n useEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n useEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n }\n return {\n files,\n isOverDropZone\n };\n}\n\nfunction useResizeObserver(target, callback, options = {}) {\n const { window = defaultWindow, ...observerOptions } = options;\n let observer;\n const isSupported = useSupported(() => window && \"ResizeObserver\" in window);\n const cleanup = () => {\n if (observer) {\n observer.disconnect();\n observer = void 0;\n }\n };\n const targets = computed(() => {\n const _targets = toValue(target);\n return Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n });\n const stopWatch = watch(\n targets,\n (els) => {\n cleanup();\n if (isSupported.value && window) {\n observer = new ResizeObserver(callback);\n for (const _el of els) {\n if (_el)\n observer.observe(_el, observerOptions);\n }\n }\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n cleanup();\n stopWatch();\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n stop\n };\n}\n\nfunction useElementBounding(target, options = {}) {\n const {\n reset = true,\n windowResize = true,\n windowScroll = true,\n immediate = true,\n updateTiming = \"sync\"\n } = options;\n const height = shallowRef(0);\n const bottom = shallowRef(0);\n const left = shallowRef(0);\n const right = shallowRef(0);\n const top = shallowRef(0);\n const width = shallowRef(0);\n const x = shallowRef(0);\n const y = shallowRef(0);\n function recalculate() {\n const el = unrefElement(target);\n if (!el) {\n if (reset) {\n height.value = 0;\n bottom.value = 0;\n left.value = 0;\n right.value = 0;\n top.value = 0;\n width.value = 0;\n x.value = 0;\n y.value = 0;\n }\n return;\n }\n const rect = el.getBoundingClientRect();\n height.value = rect.height;\n bottom.value = rect.bottom;\n left.value = rect.left;\n right.value = rect.right;\n top.value = rect.top;\n width.value = rect.width;\n x.value = rect.x;\n y.value = rect.y;\n }\n function update() {\n if (updateTiming === \"sync\")\n recalculate();\n else if (updateTiming === \"next-frame\")\n requestAnimationFrame(() => recalculate());\n }\n useResizeObserver(target, update);\n watch(() => unrefElement(target), (ele) => !ele && update());\n useMutationObserver(target, update, {\n attributeFilter: [\"style\", \"class\"]\n });\n if (windowScroll)\n useEventListener(\"scroll\", update, { capture: true, passive: true });\n if (windowResize)\n useEventListener(\"resize\", update, { passive: true });\n tryOnMounted(() => {\n if (immediate)\n update();\n });\n return {\n height,\n bottom,\n left,\n right,\n top,\n width,\n x,\n y,\n update\n };\n}\n\nfunction useElementByPoint(options) {\n const {\n x,\n y,\n document = defaultDocument,\n multiple,\n interval = \"requestAnimationFrame\",\n immediate = true\n } = options;\n const isSupported = useSupported(() => {\n if (toValue(multiple))\n return document && \"elementsFromPoint\" in document;\n return document && \"elementFromPoint\" in document;\n });\n const element = shallowRef(null);\n const cb = () => {\n var _a, _b;\n element.value = toValue(multiple) ? (_a = document == null ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) != null ? _a : [] : (_b = document == null ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) != null ? _b : null;\n };\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n return {\n isSupported,\n element,\n ...controls\n };\n}\n\nfunction useElementHover(el, options = {}) {\n const {\n delayEnter = 0,\n delayLeave = 0,\n triggerOnRemoval = false,\n window = defaultWindow\n } = options;\n const isHovered = shallowRef(false);\n let timer;\n const toggle = (entering) => {\n const delay = entering ? delayEnter : delayLeave;\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n if (delay)\n timer = setTimeout(() => isHovered.value = entering, delay);\n else\n isHovered.value = entering;\n };\n if (!window)\n return isHovered;\n useEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n useEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n if (triggerOnRemoval) {\n onElementRemoval(\n computed(() => unrefElement(el)),\n () => toggle(false)\n );\n }\n return isHovered;\n}\n\nfunction useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) {\n const { window = defaultWindow, box = \"content-box\" } = options;\n const isSVG = computed(() => {\n var _a, _b;\n return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes(\"svg\");\n });\n const width = shallowRef(initialSize.width);\n const height = shallowRef(initialSize.height);\n const { stop: stop1 } = useResizeObserver(\n target,\n ([entry]) => {\n const boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n if (window && isSVG.value) {\n const $elem = unrefElement(target);\n if ($elem) {\n const rect = $elem.getBoundingClientRect();\n width.value = rect.width;\n height.value = rect.height;\n }\n } else {\n if (boxSize) {\n const formatBoxSize = toArray(boxSize);\n width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n } else {\n width.value = entry.contentRect.width;\n height.value = entry.contentRect.height;\n }\n }\n },\n options\n );\n tryOnMounted(() => {\n const ele = unrefElement(target);\n if (ele) {\n width.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n height.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n }\n });\n const stop2 = watch(\n () => unrefElement(target),\n (ele) => {\n width.value = ele ? initialSize.width : 0;\n height.value = ele ? initialSize.height : 0;\n }\n );\n function stop() {\n stop1();\n stop2();\n }\n return {\n width,\n height,\n stop\n };\n}\n\nfunction useIntersectionObserver(target, callback, options = {}) {\n const {\n root,\n rootMargin = \"0px\",\n threshold = 0,\n window = defaultWindow,\n immediate = true\n } = options;\n const isSupported = useSupported(() => window && \"IntersectionObserver\" in window);\n const targets = computed(() => {\n const _target = toValue(target);\n return toArray(_target).map(unrefElement).filter(notNullish);\n });\n let cleanup = noop;\n const isActive = shallowRef(immediate);\n const stopWatch = isSupported.value ? watch(\n () => [targets.value, unrefElement(root), isActive.value],\n ([targets2, root2]) => {\n cleanup();\n if (!isActive.value)\n return;\n if (!targets2.length)\n return;\n const observer = new IntersectionObserver(\n callback,\n {\n root: unrefElement(root2),\n rootMargin,\n threshold\n }\n );\n targets2.forEach((el) => el && observer.observe(el));\n cleanup = () => {\n observer.disconnect();\n cleanup = noop;\n };\n },\n { immediate, flush: \"post\" }\n ) : noop;\n const stop = () => {\n cleanup();\n stopWatch();\n isActive.value = false;\n };\n tryOnScopeDispose(stop);\n return {\n isSupported,\n isActive,\n pause() {\n cleanup();\n isActive.value = false;\n },\n resume() {\n isActive.value = true;\n },\n stop\n };\n}\n\nfunction useElementVisibility(element, options = {}) {\n const {\n window = defaultWindow,\n scrollTarget,\n threshold = 0,\n rootMargin,\n once = false\n } = options;\n const elementIsVisible = shallowRef(false);\n const { stop } = useIntersectionObserver(\n element,\n (intersectionObserverEntries) => {\n let isIntersecting = elementIsVisible.value;\n let latestTime = 0;\n for (const entry of intersectionObserverEntries) {\n if (entry.time >= latestTime) {\n latestTime = entry.time;\n isIntersecting = entry.isIntersecting;\n }\n }\n elementIsVisible.value = isIntersecting;\n if (once) {\n watchOnce(elementIsVisible, () => {\n stop();\n });\n }\n },\n {\n root: scrollTarget,\n window,\n threshold,\n rootMargin: toValue(rootMargin)\n }\n );\n return elementIsVisible;\n}\n\nconst events = /* @__PURE__ */ new Map();\n\nfunction useEventBus(key) {\n const scope = getCurrentScope();\n function on(listener) {\n var _a;\n const listeners = events.get(key) || /* @__PURE__ */ new Set();\n listeners.add(listener);\n events.set(key, listeners);\n const _off = () => off(listener);\n (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off);\n return _off;\n }\n function once(listener) {\n function _listener(...args) {\n off(_listener);\n listener(...args);\n }\n return on(_listener);\n }\n function off(listener) {\n const listeners = events.get(key);\n if (!listeners)\n return;\n listeners.delete(listener);\n if (!listeners.size)\n reset();\n }\n function reset() {\n events.delete(key);\n }\n function emit(event, payload) {\n var _a;\n (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload));\n }\n return { on, once, off, emit, reset };\n}\n\nfunction resolveNestedOptions$1(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useEventSource(url, events = [], options = {}) {\n const event = shallowRef(null);\n const data = shallowRef(null);\n const status = shallowRef(\"CONNECTING\");\n const eventSource = ref(null);\n const error = shallowRef(null);\n const urlRef = toRef(url);\n const lastEventId = shallowRef(null);\n let explicitlyClosed = false;\n let retried = 0;\n const {\n withCredentials = false,\n immediate = true,\n autoConnect = true,\n autoReconnect\n } = options;\n const close = () => {\n if (isClient && eventSource.value) {\n eventSource.value.close();\n eventSource.value = null;\n status.value = \"CLOSED\";\n explicitlyClosed = true;\n }\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const es = new EventSource(urlRef.value, { withCredentials });\n status.value = \"CONNECTING\";\n eventSource.value = es;\n es.onopen = () => {\n status.value = \"OPEN\";\n error.value = null;\n };\n es.onerror = (e) => {\n status.value = \"CLOSED\";\n error.value = e;\n if (es.readyState === 2 && !explicitlyClosed && autoReconnect) {\n es.close();\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions$1(autoReconnect);\n retried += 1;\n if (typeof retries === \"number\" && (retries < 0 || retried < retries))\n setTimeout(_init, delay);\n else if (typeof retries === \"function\" && retries())\n setTimeout(_init, delay);\n else\n onFailed == null ? void 0 : onFailed();\n }\n };\n es.onmessage = (e) => {\n event.value = null;\n data.value = e.data;\n lastEventId.value = e.lastEventId;\n };\n for (const event_name of events) {\n useEventListener(es, event_name, (e) => {\n event.value = event_name;\n data.value = e.data || null;\n }, { passive: true });\n }\n };\n const open = () => {\n if (!isClient)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n tryOnScopeDispose(close);\n return {\n eventSource,\n event,\n data,\n status,\n error,\n open,\n close,\n lastEventId\n };\n}\n\nfunction useEyeDropper(options = {}) {\n const { initialValue = \"\" } = options;\n const isSupported = useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n const sRGBHex = shallowRef(initialValue);\n async function open(openOptions) {\n if (!isSupported.value)\n return;\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open(openOptions);\n sRGBHex.value = result.sRGBHex;\n return result;\n }\n return { isSupported, sRGBHex, open };\n}\n\nfunction useFavicon(newIcon = null, options = {}) {\n const {\n baseUrl = \"\",\n rel = \"icon\",\n document = defaultDocument\n } = options;\n const favicon = toRef(newIcon);\n const applyIcon = (icon) => {\n const elements = document == null ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n if (!elements || elements.length === 0) {\n const link = document == null ? void 0 : document.createElement(\"link\");\n if (link) {\n link.rel = rel;\n link.href = `${baseUrl}${icon}`;\n link.type = `image/${icon.split(\".\").pop()}`;\n document == null ? void 0 : document.head.append(link);\n }\n return;\n }\n elements == null ? void 0 : elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n };\n watch(\n favicon,\n (i, o) => {\n if (typeof i === \"string\" && i !== o)\n applyIcon(i);\n },\n { immediate: true }\n );\n return favicon;\n}\n\nconst payloadMapping = {\n json: \"application/json\",\n text: \"text/plain\"\n};\nfunction isFetchOptions(obj) {\n return obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n return reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n if (typeof Headers !== \"undefined\" && headers instanceof Headers)\n return Object.fromEntries(headers.entries());\n return headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n if (combination === \"overwrite\") {\n return async (ctx) => {\n let callback;\n for (let i = callbacks.length - 1; i >= 0; i--) {\n if (callbacks[i] != null) {\n callback = callbacks[i];\n break;\n }\n }\n if (callback)\n return { ...ctx, ...await callback(ctx) };\n return ctx;\n };\n } else {\n return async (ctx) => {\n for (const callback of callbacks) {\n if (callback)\n ctx = { ...ctx, ...await callback(ctx) };\n }\n return ctx;\n };\n }\n}\nfunction createFetch(config = {}) {\n const _combination = config.combination || \"chain\";\n const _options = config.options || {};\n const _fetchOptions = config.fetchOptions || {};\n function useFactoryFetch(url, ...args) {\n const computedUrl = computed(() => {\n const baseUrl = toValue(config.baseUrl);\n const targetUrl = toValue(url);\n return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n });\n let options = _options;\n let fetchOptions = _fetchOptions;\n if (args.length > 0) {\n if (isFetchOptions(args[0])) {\n options = {\n ...options,\n ...args[0],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n };\n } else {\n fetchOptions = {\n ...fetchOptions,\n ...args[0],\n headers: {\n ...headersToObject(fetchOptions.headers) || {},\n ...headersToObject(args[0].headers) || {}\n }\n };\n }\n }\n if (args.length > 1 && isFetchOptions(args[1])) {\n options = {\n ...options,\n ...args[1],\n beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n };\n }\n return useFetch(computedUrl, fetchOptions, options);\n }\n return useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n var _a;\n const supportsAbort = typeof AbortController === \"function\";\n let fetchOptions = {};\n let options = {\n immediate: true,\n refetch: false,\n timeout: 0,\n updateDataOnError: false\n };\n const config = {\n method: \"GET\",\n type: \"text\",\n payload: void 0\n };\n if (args.length > 0) {\n if (isFetchOptions(args[0]))\n options = { ...options, ...args[0] };\n else\n fetchOptions = args[0];\n }\n if (args.length > 1) {\n if (isFetchOptions(args[1]))\n options = { ...options, ...args[1] };\n }\n const {\n fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch,\n initialData,\n timeout\n } = options;\n const responseEvent = createEventHook();\n const errorEvent = createEventHook();\n const finallyEvent = createEventHook();\n const isFinished = shallowRef(false);\n const isFetching = shallowRef(false);\n const aborted = shallowRef(false);\n const statusCode = shallowRef(null);\n const response = shallowRef(null);\n const error = shallowRef(null);\n const data = shallowRef(initialData || null);\n const canAbort = computed(() => supportsAbort && isFetching.value);\n let controller;\n let timer;\n const abort = () => {\n if (supportsAbort) {\n controller == null ? void 0 : controller.abort();\n controller = new AbortController();\n controller.signal.onabort = () => aborted.value = true;\n fetchOptions = {\n ...fetchOptions,\n signal: controller.signal\n };\n }\n };\n const loading = (isLoading) => {\n isFetching.value = isLoading;\n isFinished.value = !isLoading;\n };\n if (timeout)\n timer = useTimeoutFn(abort, timeout, { immediate: false });\n let executeCounter = 0;\n const execute = async (throwOnFailed = false) => {\n var _a2, _b;\n abort();\n loading(true);\n error.value = null;\n statusCode.value = null;\n aborted.value = false;\n executeCounter += 1;\n const currentExecuteCounter = executeCounter;\n const defaultFetchOptions = {\n method: config.method,\n headers: {}\n };\n const payload = toValue(config.payload);\n if (payload) {\n const headers = headersToObject(defaultFetchOptions.headers);\n const proto = Object.getPrototypeOf(payload);\n if (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData))\n config.payloadType = \"json\";\n if (config.payloadType)\n headers[\"Content-Type\"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType;\n defaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n }\n let isCanceled = false;\n const context = {\n url: toValue(url),\n options: {\n ...defaultFetchOptions,\n ...fetchOptions\n },\n cancel: () => {\n isCanceled = true;\n }\n };\n if (options.beforeFetch)\n Object.assign(context, await options.beforeFetch(context));\n if (isCanceled || !fetch) {\n loading(false);\n return Promise.resolve(null);\n }\n let responseData = null;\n if (timer)\n timer.start();\n return fetch(\n context.url,\n {\n ...defaultFetchOptions,\n ...context.options,\n headers: {\n ...headersToObject(defaultFetchOptions.headers),\n ...headersToObject((_b = context.options) == null ? void 0 : _b.headers)\n }\n }\n ).then(async (fetchResponse) => {\n response.value = fetchResponse;\n statusCode.value = fetchResponse.status;\n responseData = await fetchResponse.clone()[config.type]();\n if (!fetchResponse.ok) {\n data.value = initialData || null;\n throw new Error(fetchResponse.statusText);\n }\n if (options.afterFetch) {\n ({ data: responseData } = await options.afterFetch({\n data: responseData,\n response: fetchResponse,\n context,\n execute\n }));\n }\n data.value = responseData;\n responseEvent.trigger(fetchResponse);\n return fetchResponse;\n }).catch(async (fetchError) => {\n let errorData = fetchError.message || fetchError.name;\n if (options.onFetchError) {\n ({ error: errorData, data: responseData } = await options.onFetchError({\n data: responseData,\n error: fetchError,\n response: response.value,\n context,\n execute\n }));\n }\n error.value = errorData;\n if (options.updateDataOnError)\n data.value = responseData;\n errorEvent.trigger(fetchError);\n if (throwOnFailed)\n throw fetchError;\n return null;\n }).finally(() => {\n if (currentExecuteCounter === executeCounter)\n loading(false);\n if (timer)\n timer.stop();\n finallyEvent.trigger(null);\n });\n };\n const refetch = toRef(options.refetch);\n watch(\n [\n refetch,\n toRef(url)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n const shell = {\n isFinished: readonly(isFinished),\n isFetching: readonly(isFetching),\n statusCode,\n response,\n error,\n data,\n canAbort,\n aborted,\n abort,\n execute,\n onFetchResponse: responseEvent.on,\n onFetchError: errorEvent.on,\n onFetchFinally: finallyEvent.on,\n // method\n get: setMethod(\"GET\"),\n put: setMethod(\"PUT\"),\n post: setMethod(\"POST\"),\n delete: setMethod(\"DELETE\"),\n patch: setMethod(\"PATCH\"),\n head: setMethod(\"HEAD\"),\n options: setMethod(\"OPTIONS\"),\n // type\n json: setType(\"json\"),\n text: setType(\"text\"),\n blob: setType(\"blob\"),\n arrayBuffer: setType(\"arrayBuffer\"),\n formData: setType(\"formData\")\n };\n function setMethod(method) {\n return (payload, payloadType) => {\n if (!isFetching.value) {\n config.method = method;\n config.payload = payload;\n config.payloadType = payloadType;\n if (isRef(config.payload)) {\n watch(\n [\n refetch,\n toRef(config.payload)\n ],\n ([refetch2]) => refetch2 && execute(),\n { deep: true }\n );\n }\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n function waitUntilFinished() {\n return new Promise((resolve, reject) => {\n until(isFinished).toBe(true).then(() => resolve(shell)).catch(reject);\n });\n }\n function setType(type) {\n return () => {\n if (!isFetching.value) {\n config.type = type;\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n }\n return void 0;\n };\n }\n if (options.immediate)\n Promise.resolve().then(() => execute());\n return {\n ...shell,\n then(onFulfilled, onRejected) {\n return waitUntilFinished().then(onFulfilled, onRejected);\n }\n };\n}\nfunction joinPaths(start, end) {\n if (!start.endsWith(\"/\") && !end.startsWith(\"/\")) {\n return `${start}/${end}`;\n }\n if (start.endsWith(\"/\") && end.startsWith(\"/\")) {\n return `${start.slice(0, -1)}${end}`;\n }\n return `${start}${end}`;\n}\n\nconst DEFAULT_OPTIONS = {\n multiple: true,\n accept: \"*\",\n reset: false,\n directory: false\n};\nfunction prepareInitialFiles(files) {\n if (!files)\n return null;\n if (files instanceof FileList)\n return files;\n const dt = new DataTransfer();\n for (const file of files) {\n dt.items.add(file);\n }\n return dt.files;\n}\nfunction useFileDialog(options = {}) {\n const {\n document = defaultDocument\n } = options;\n const files = ref(prepareInitialFiles(options.initialFiles));\n const { on: onChange, trigger: changeTrigger } = createEventHook();\n const { on: onCancel, trigger: cancelTrigger } = createEventHook();\n let input;\n if (document) {\n input = document.createElement(\"input\");\n input.type = \"file\";\n input.onchange = (event) => {\n const result = event.target;\n files.value = result.files;\n changeTrigger(files.value);\n };\n input.oncancel = () => {\n cancelTrigger();\n };\n }\n const reset = () => {\n files.value = null;\n if (input && input.value) {\n input.value = \"\";\n changeTrigger(null);\n }\n };\n const open = (localOptions) => {\n if (!input)\n return;\n const _options = {\n ...DEFAULT_OPTIONS,\n ...options,\n ...localOptions\n };\n input.multiple = _options.multiple;\n input.accept = _options.accept;\n input.webkitdirectory = _options.directory;\n if (hasOwn(_options, \"capture\"))\n input.capture = _options.capture;\n if (_options.reset)\n reset();\n input.click();\n };\n return {\n files: readonly(files),\n open,\n reset,\n onCancel,\n onChange\n };\n}\n\nfunction useFileSystemAccess(options = {}) {\n const {\n window: _window = defaultWindow,\n dataType = \"Text\"\n } = options;\n const window = _window;\n const isSupported = useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n const fileHandle = shallowRef();\n const data = shallowRef();\n const file = shallowRef();\n const fileName = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : \"\";\n });\n const fileMIME = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : \"\";\n });\n const fileSize = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0;\n });\n const fileLastModified = computed(() => {\n var _a, _b;\n return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0;\n });\n async function open(_options = {}) {\n if (!isSupported.value)\n return;\n const [handle] = await window.showOpenFilePicker({ ...toValue(options), ..._options });\n fileHandle.value = handle;\n await updateData();\n }\n async function create(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n data.value = void 0;\n await updateData();\n }\n async function save(_options = {}) {\n if (!isSupported.value)\n return;\n if (!fileHandle.value)\n return saveAs(_options);\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function saveAs(_options = {}) {\n if (!isSupported.value)\n return;\n fileHandle.value = await window.showSaveFilePicker({ ...options, ..._options });\n if (data.value) {\n const writableStream = await fileHandle.value.createWritable();\n await writableStream.write(data.value);\n await writableStream.close();\n }\n await updateFile();\n }\n async function updateFile() {\n var _a;\n file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile());\n }\n async function updateData() {\n var _a, _b;\n await updateFile();\n const type = toValue(dataType);\n if (type === \"Text\")\n data.value = await ((_a = file.value) == null ? void 0 : _a.text());\n else if (type === \"ArrayBuffer\")\n data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer());\n else if (type === \"Blob\")\n data.value = file.value;\n }\n watch(() => toValue(dataType), updateData);\n return {\n isSupported,\n data,\n file,\n fileName,\n fileMIME,\n fileSize,\n fileLastModified,\n open,\n create,\n save,\n saveAs,\n updateData\n };\n}\n\nfunction useFocus(target, options = {}) {\n const { initialValue = false, focusVisible = false, preventScroll = false } = options;\n const innerFocused = shallowRef(false);\n const targetElement = computed(() => unrefElement(target));\n const listenerOptions = { passive: true };\n useEventListener(targetElement, \"focus\", (event) => {\n var _a, _b;\n if (!focusVisible || ((_b = (_a = event.target).matches) == null ? void 0 : _b.call(_a, \":focus-visible\")))\n innerFocused.value = true;\n }, listenerOptions);\n useEventListener(targetElement, \"blur\", () => innerFocused.value = false, listenerOptions);\n const focused = computed({\n get: () => innerFocused.value,\n set(value) {\n var _a, _b;\n if (!value && innerFocused.value)\n (_a = targetElement.value) == null ? void 0 : _a.blur();\n else if (value && !innerFocused.value)\n (_b = targetElement.value) == null ? void 0 : _b.focus({ preventScroll });\n }\n });\n watch(\n targetElement,\n () => {\n focused.value = initialValue;\n },\n { immediate: true, flush: \"post\" }\n );\n return { focused };\n}\n\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nconst PSEUDO_CLASS_FOCUS_WITHIN = \":focus-within\";\nfunction useFocusWithin(target, options = {}) {\n const { window = defaultWindow } = options;\n const targetElement = computed(() => unrefElement(target));\n const _focused = shallowRef(false);\n const focused = computed(() => _focused.value);\n const activeElement = useActiveElement(options);\n if (!window || !activeElement.value) {\n return { focused };\n }\n const listenerOptions = { passive: true };\n useEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions);\n useEventListener(targetElement, EVENT_FOCUS_OUT, () => {\n var _a, _b, _c;\n return _focused.value = (_c = (_b = (_a = targetElement.value) == null ? void 0 : _a.matches) == null ? void 0 : _b.call(_a, PSEUDO_CLASS_FOCUS_WITHIN)) != null ? _c : false;\n }, listenerOptions);\n return { focused };\n}\n\nfunction useFps(options) {\n var _a;\n const fps = shallowRef(0);\n if (typeof performance === \"undefined\")\n return fps;\n const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10;\n let last = performance.now();\n let ticks = 0;\n useRafFn(() => {\n ticks += 1;\n if (ticks >= every) {\n const now = performance.now();\n const diff = now - last;\n fps.value = Math.round(1e3 / (diff / ticks));\n last = now;\n ticks = 0;\n }\n });\n return fps;\n}\n\nconst eventHandlers = [\n \"fullscreenchange\",\n \"webkitfullscreenchange\",\n \"webkitendfullscreen\",\n \"mozfullscreenchange\",\n \"MSFullscreenChange\"\n];\nfunction useFullscreen(target, options = {}) {\n const {\n document = defaultDocument,\n autoExit = false\n } = options;\n const targetRef = computed(() => {\n var _a;\n return (_a = unrefElement(target)) != null ? _a : document == null ? void 0 : document.documentElement;\n });\n const isFullscreen = shallowRef(false);\n const requestMethod = computed(() => {\n return [\n \"requestFullscreen\",\n \"webkitRequestFullscreen\",\n \"webkitEnterFullscreen\",\n \"webkitEnterFullScreen\",\n \"webkitRequestFullScreen\",\n \"mozRequestFullScreen\",\n \"msRequestFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const exitMethod = computed(() => {\n return [\n \"exitFullscreen\",\n \"webkitExitFullscreen\",\n \"webkitExitFullScreen\",\n \"webkitCancelFullScreen\",\n \"mozCancelFullScreen\",\n \"msExitFullscreen\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenEnabled = computed(() => {\n return [\n \"fullScreen\",\n \"webkitIsFullScreen\",\n \"webkitDisplayingFullscreen\",\n \"mozFullScreen\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n });\n const fullscreenElementMethod = [\n \"fullscreenElement\",\n \"webkitFullscreenElement\",\n \"mozFullScreenElement\",\n \"msFullscreenElement\"\n ].find((m) => document && m in document);\n const isSupported = useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n const isCurrentElementFullScreen = () => {\n if (fullscreenElementMethod)\n return (document == null ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n return false;\n };\n const isElementFullScreen = () => {\n if (fullscreenEnabled.value) {\n if (document && document[fullscreenEnabled.value] != null) {\n return document[fullscreenEnabled.value];\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[fullscreenEnabled.value]) != null) {\n return Boolean(target2[fullscreenEnabled.value]);\n }\n }\n }\n return false;\n };\n async function exit() {\n if (!isSupported.value || !isFullscreen.value)\n return;\n if (exitMethod.value) {\n if ((document == null ? void 0 : document[exitMethod.value]) != null) {\n await document[exitMethod.value]();\n } else {\n const target2 = targetRef.value;\n if ((target2 == null ? void 0 : target2[exitMethod.value]) != null)\n await target2[exitMethod.value]();\n }\n }\n isFullscreen.value = false;\n }\n async function enter() {\n if (!isSupported.value || isFullscreen.value)\n return;\n if (isElementFullScreen())\n await exit();\n const target2 = targetRef.value;\n if (requestMethod.value && (target2 == null ? void 0 : target2[requestMethod.value]) != null) {\n await target2[requestMethod.value]();\n isFullscreen.value = true;\n }\n }\n async function toggle() {\n await (isFullscreen.value ? exit() : enter());\n }\n const handlerCallback = () => {\n const isElementFullScreenValue = isElementFullScreen();\n if (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen())\n isFullscreen.value = isElementFullScreenValue;\n };\n const listenerOptions = { capture: false, passive: true };\n useEventListener(document, eventHandlers, handlerCallback, listenerOptions);\n useEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions);\n if (autoExit)\n tryOnScopeDispose(exit);\n return {\n isSupported,\n isFullscreen,\n enter,\n exit,\n toggle\n };\n}\n\nfunction mapGamepadToXbox360Controller(gamepad) {\n return computed(() => {\n if (gamepad.value) {\n return {\n buttons: {\n a: gamepad.value.buttons[0],\n b: gamepad.value.buttons[1],\n x: gamepad.value.buttons[2],\n y: gamepad.value.buttons[3]\n },\n bumper: {\n left: gamepad.value.buttons[4],\n right: gamepad.value.buttons[5]\n },\n triggers: {\n left: gamepad.value.buttons[6],\n right: gamepad.value.buttons[7]\n },\n stick: {\n left: {\n horizontal: gamepad.value.axes[0],\n vertical: gamepad.value.axes[1],\n button: gamepad.value.buttons[10]\n },\n right: {\n horizontal: gamepad.value.axes[2],\n vertical: gamepad.value.axes[3],\n button: gamepad.value.buttons[11]\n }\n },\n dpad: {\n up: gamepad.value.buttons[12],\n down: gamepad.value.buttons[13],\n left: gamepad.value.buttons[14],\n right: gamepad.value.buttons[15]\n },\n back: gamepad.value.buttons[8],\n start: gamepad.value.buttons[9]\n };\n }\n return null;\n });\n}\nfunction useGamepad(options = {}) {\n const {\n navigator = defaultNavigator\n } = options;\n const isSupported = useSupported(() => navigator && \"getGamepads\" in navigator);\n const gamepads = ref([]);\n const onConnectedHook = createEventHook();\n const onDisconnectedHook = createEventHook();\n const stateFromGamepad = (gamepad) => {\n const hapticActuators = [];\n const vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n if (vibrationActuator)\n hapticActuators.push(vibrationActuator);\n if (gamepad.hapticActuators)\n hapticActuators.push(...gamepad.hapticActuators);\n return {\n id: gamepad.id,\n index: gamepad.index,\n connected: gamepad.connected,\n mapping: gamepad.mapping,\n timestamp: gamepad.timestamp,\n vibrationActuator: gamepad.vibrationActuator,\n hapticActuators,\n axes: gamepad.axes.map((axes) => axes),\n buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value }))\n };\n };\n const updateGamepadState = () => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n }\n };\n const { isActive, pause, resume } = useRafFn(updateGamepadState);\n const onGamepadConnected = (gamepad) => {\n if (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n gamepads.value.push(stateFromGamepad(gamepad));\n onConnectedHook.trigger(gamepad.index);\n }\n resume();\n };\n const onGamepadDisconnected = (gamepad) => {\n gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n onDisconnectedHook.trigger(gamepad.index);\n };\n const listenerOptions = { passive: true };\n useEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad), listenerOptions);\n useEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad), listenerOptions);\n tryOnMounted(() => {\n const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || [];\n for (const gamepad of _gamepads) {\n if (gamepad && gamepads.value[gamepad.index])\n onGamepadConnected(gamepad);\n }\n });\n pause();\n return {\n isSupported,\n onConnected: onConnectedHook.on,\n onDisconnected: onDisconnectedHook.on,\n gamepads,\n pause,\n resume,\n isActive\n };\n}\n\nfunction useGeolocation(options = {}) {\n const {\n enableHighAccuracy = true,\n maximumAge = 3e4,\n timeout = 27e3,\n navigator = defaultNavigator,\n immediate = true\n } = options;\n const isSupported = useSupported(() => navigator && \"geolocation\" in navigator);\n const locatedAt = shallowRef(null);\n const error = shallowRef(null);\n const coords = ref({\n accuracy: 0,\n latitude: Number.POSITIVE_INFINITY,\n longitude: Number.POSITIVE_INFINITY,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n speed: null\n });\n function updatePosition(position) {\n locatedAt.value = position.timestamp;\n coords.value = position.coords;\n error.value = null;\n }\n let watcher;\n function resume() {\n if (isSupported.value) {\n watcher = navigator.geolocation.watchPosition(\n updatePosition,\n (err) => error.value = err,\n {\n enableHighAccuracy,\n maximumAge,\n timeout\n }\n );\n }\n }\n if (immediate)\n resume();\n function pause() {\n if (watcher && navigator)\n navigator.geolocation.clearWatch(watcher);\n }\n tryOnScopeDispose(() => {\n pause();\n });\n return {\n isSupported,\n coords,\n locatedAt,\n error,\n resume,\n pause\n };\n}\n\nconst defaultEvents$1 = [\"mousemove\", \"mousedown\", \"resize\", \"keydown\", \"touchstart\", \"wheel\"];\nconst oneMinute = 6e4;\nfunction useIdle(timeout = oneMinute, options = {}) {\n const {\n initialState = false,\n listenForVisibilityChange = true,\n events = defaultEvents$1,\n window = defaultWindow,\n eventFilter = throttleFilter(50)\n } = options;\n const idle = shallowRef(initialState);\n const lastActive = shallowRef(timestamp());\n let timer;\n const reset = () => {\n idle.value = false;\n clearTimeout(timer);\n timer = setTimeout(() => idle.value = true, timeout);\n };\n const onEvent = createFilterWrapper(\n eventFilter,\n () => {\n lastActive.value = timestamp();\n reset();\n }\n );\n if (window) {\n const document = window.document;\n const listenerOptions = { passive: true };\n for (const event of events)\n useEventListener(window, event, onEvent, listenerOptions);\n if (listenForVisibilityChange) {\n useEventListener(document, \"visibilitychange\", () => {\n if (!document.hidden)\n onEvent();\n }, listenerOptions);\n }\n reset();\n }\n return {\n idle,\n lastActive,\n reset\n };\n}\n\nasync function loadImage(options) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options;\n img.src = src;\n if (srcset != null)\n img.srcset = srcset;\n if (sizes != null)\n img.sizes = sizes;\n if (clazz != null)\n img.className = clazz;\n if (loading != null)\n img.loading = loading;\n if (crossorigin != null)\n img.crossOrigin = crossorigin;\n if (referrerPolicy != null)\n img.referrerPolicy = referrerPolicy;\n if (width != null)\n img.width = width;\n if (height != null)\n img.height = height;\n if (decoding != null)\n img.decoding = decoding;\n if (fetchPriority != null)\n img.fetchPriority = fetchPriority;\n if (ismap != null)\n img.isMap = ismap;\n if (usemap != null)\n img.useMap = usemap;\n img.onload = () => resolve(img);\n img.onerror = reject;\n });\n}\nfunction useImage(options, asyncStateOptions = {}) {\n const state = useAsyncState(\n () => loadImage(toValue(options)),\n void 0,\n {\n resetOnExecute: true,\n ...asyncStateOptions\n }\n );\n watch(\n () => toValue(options),\n () => state.execute(asyncStateOptions.delay),\n { deep: true }\n );\n return state;\n}\n\nfunction resolveElement(el) {\n if (typeof Window !== \"undefined\" && el instanceof Window)\n return el.document.documentElement;\n if (typeof Document !== \"undefined\" && el instanceof Document)\n return el.documentElement;\n return el;\n}\n\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\nfunction useScroll(element, options = {}) {\n const {\n throttle = 0,\n idle = 200,\n onStop = noop,\n onScroll = noop,\n offset = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n eventListenerOptions = {\n capture: false,\n passive: true\n },\n behavior = \"auto\",\n window = defaultWindow,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const internalX = shallowRef(0);\n const internalY = shallowRef(0);\n const x = computed({\n get() {\n return internalX.value;\n },\n set(x2) {\n scrollTo(x2, void 0);\n }\n });\n const y = computed({\n get() {\n return internalY.value;\n },\n set(y2) {\n scrollTo(void 0, y2);\n }\n });\n function scrollTo(_x, _y) {\n var _a, _b, _c, _d;\n if (!window)\n return;\n const _element = toValue(element);\n if (!_element)\n return;\n (_c = _element instanceof Document ? window.document.body : _element) == null ? void 0 : _c.scrollTo({\n top: (_a = toValue(_y)) != null ? _a : y.value,\n left: (_b = toValue(_x)) != null ? _b : x.value,\n behavior: toValue(behavior)\n });\n const scrollContainer = ((_d = _element == null ? void 0 : _element.document) == null ? void 0 : _d.documentElement) || (_element == null ? void 0 : _element.documentElement) || _element;\n if (x != null)\n internalX.value = scrollContainer.scrollLeft;\n if (y != null)\n internalY.value = scrollContainer.scrollTop;\n }\n const isScrolling = shallowRef(false);\n const arrivedState = reactive({\n left: true,\n right: false,\n top: true,\n bottom: false\n });\n const directions = reactive({\n left: false,\n right: false,\n top: false,\n bottom: false\n });\n const onScrollEnd = (e) => {\n if (!isScrolling.value)\n return;\n isScrolling.value = false;\n directions.left = false;\n directions.right = false;\n directions.top = false;\n directions.bottom = false;\n onStop(e);\n };\n const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n const setArrivedState = (target) => {\n var _a;\n if (!window)\n return;\n const el = ((_a = target == null ? void 0 : target.document) == null ? void 0 : _a.documentElement) || (target == null ? void 0 : target.documentElement) || unrefElement(target);\n const { display, flexDirection, direction } = getComputedStyle(el);\n const directionMultipler = direction === \"rtl\" ? -1 : 1;\n const scrollLeft = el.scrollLeft;\n directions.left = scrollLeft < internalX.value;\n directions.right = scrollLeft > internalX.value;\n const left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0);\n const right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"row-reverse\") {\n arrivedState.left = right;\n arrivedState.right = left;\n } else {\n arrivedState.left = left;\n arrivedState.right = right;\n }\n internalX.value = scrollLeft;\n let scrollTop = el.scrollTop;\n if (target === window.document && !scrollTop)\n scrollTop = window.document.body.scrollTop;\n directions.top = scrollTop < internalY.value;\n directions.bottom = scrollTop > internalY.value;\n const top = Math.abs(scrollTop) <= (offset.top || 0);\n const bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n if (display === \"flex\" && flexDirection === \"column-reverse\") {\n arrivedState.top = bottom;\n arrivedState.bottom = top;\n } else {\n arrivedState.top = top;\n arrivedState.bottom = bottom;\n }\n internalY.value = scrollTop;\n };\n const onScrollHandler = (e) => {\n var _a;\n if (!window)\n return;\n const eventTarget = (_a = e.target.documentElement) != null ? _a : e.target;\n setArrivedState(eventTarget);\n isScrolling.value = true;\n onScrollEndDebounced(e);\n onScroll(e);\n };\n useEventListener(\n element,\n \"scroll\",\n throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler,\n eventListenerOptions\n );\n tryOnMounted(() => {\n try {\n const _element = toValue(element);\n if (!_element)\n return;\n setArrivedState(_element);\n } catch (e) {\n onError(e);\n }\n });\n useEventListener(\n element,\n \"scrollend\",\n onScrollEnd,\n eventListenerOptions\n );\n return {\n x,\n y,\n isScrolling,\n arrivedState,\n directions,\n measure() {\n const _element = toValue(element);\n if (window && _element)\n setArrivedState(_element);\n }\n };\n}\n\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n var _a;\n const {\n direction = \"bottom\",\n interval = 100,\n canLoadMore = () => true\n } = options;\n const state = reactive(useScroll(\n element,\n {\n ...options,\n offset: {\n [direction]: (_a = options.distance) != null ? _a : 0,\n ...options.offset\n }\n }\n ));\n const promise = ref();\n const isLoading = computed(() => !!promise.value);\n const observedElement = computed(() => {\n return resolveElement(toValue(element));\n });\n const isElementVisible = useElementVisibility(observedElement);\n function checkAndLoad() {\n state.measure();\n if (!observedElement.value || !isElementVisible.value || !canLoadMore(observedElement.value))\n return;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n const isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n if (state.arrivedState[direction] || isNarrower) {\n if (!promise.value) {\n promise.value = Promise.all([\n onLoadMore(state),\n new Promise((resolve) => setTimeout(resolve, interval))\n ]).finally(() => {\n promise.value = null;\n nextTick(() => checkAndLoad());\n });\n }\n }\n }\n const stop = watch(\n () => [state.arrivedState[direction], isElementVisible.value],\n checkAndLoad,\n { immediate: true }\n );\n tryOnUnmounted(stop);\n return {\n isLoading,\n reset() {\n nextTick(() => checkAndLoad());\n }\n };\n}\n\nconst defaultEvents = [\"mousedown\", \"mouseup\", \"keydown\", \"keyup\"];\nfunction useKeyModifier(modifier, options = {}) {\n const {\n events = defaultEvents,\n document = defaultDocument,\n initial = null\n } = options;\n const state = shallowRef(initial);\n if (document) {\n events.forEach((listenerEvent) => {\n useEventListener(document, listenerEvent, (evt) => {\n if (typeof evt.getModifierState === \"function\")\n state.value = evt.getModifierState(modifier);\n }, { passive: true });\n });\n }\n return state;\n}\n\nfunction useLocalStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options);\n}\n\nconst DefaultMagicKeysAliasMap = {\n ctrl: \"control\",\n command: \"meta\",\n cmd: \"meta\",\n option: \"alt\",\n up: \"arrowup\",\n down: \"arrowdown\",\n left: \"arrowleft\",\n right: \"arrowright\"\n};\n\nfunction useMagicKeys(options = {}) {\n const {\n reactive: useReactive = false,\n target = defaultWindow,\n aliasMap = DefaultMagicKeysAliasMap,\n passive = true,\n onEventFired = noop\n } = options;\n const current = reactive(/* @__PURE__ */ new Set());\n const obj = {\n toJSON() {\n return {};\n },\n current\n };\n const refs = useReactive ? reactive(obj) : obj;\n const metaDeps = /* @__PURE__ */ new Set();\n const usedKeys = /* @__PURE__ */ new Set();\n function setRefs(key, value) {\n if (key in refs) {\n if (useReactive)\n refs[key] = value;\n else\n refs[key].value = value;\n }\n }\n function reset() {\n current.clear();\n for (const key of usedKeys)\n setRefs(key, false);\n }\n function updateRefs(e, value) {\n var _a, _b;\n const key = (_a = e.key) == null ? void 0 : _a.toLowerCase();\n const code = (_b = e.code) == null ? void 0 : _b.toLowerCase();\n const values = [code, key].filter(Boolean);\n if (key) {\n if (value)\n current.add(key);\n else\n current.delete(key);\n }\n for (const key2 of values) {\n usedKeys.add(key2);\n setRefs(key2, value);\n }\n if (key === \"meta\" && !value) {\n metaDeps.forEach((key2) => {\n current.delete(key2);\n setRefs(key2, false);\n });\n metaDeps.clear();\n } else if (typeof e.getModifierState === \"function\" && e.getModifierState(\"Meta\") && value) {\n [...current, ...values].forEach((key2) => metaDeps.add(key2));\n }\n }\n useEventListener(target, \"keydown\", (e) => {\n updateRefs(e, true);\n return onEventFired(e);\n }, { passive });\n useEventListener(target, \"keyup\", (e) => {\n updateRefs(e, false);\n return onEventFired(e);\n }, { passive });\n useEventListener(\"blur\", reset, { passive });\n useEventListener(\"focus\", reset, { passive });\n const proxy = new Proxy(\n refs,\n {\n get(target2, prop, rec) {\n if (typeof prop !== \"string\")\n return Reflect.get(target2, prop, rec);\n prop = prop.toLowerCase();\n if (prop in aliasMap)\n prop = aliasMap[prop];\n if (!(prop in refs)) {\n if (/[+_-]/.test(prop)) {\n const keys = prop.split(/[+_-]/g).map((i) => i.trim());\n refs[prop] = computed(() => keys.map((key) => toValue(proxy[key])).every(Boolean));\n } else {\n refs[prop] = shallowRef(false);\n }\n }\n const r = Reflect.get(target2, prop, rec);\n return useReactive ? toValue(r) : r;\n }\n }\n );\n return proxy;\n}\n\nfunction usingElRef(source, cb) {\n if (toValue(source))\n cb(toValue(source));\n}\nfunction timeRangeToArray(timeRanges) {\n let ranges = [];\n for (let i = 0; i < timeRanges.length; ++i)\n ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n return ranges;\n}\nfunction tracksToArray(tracks) {\n return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }));\n}\nconst defaultOptions = {\n src: \"\",\n tracks: []\n};\nfunction useMediaControls(target, options = {}) {\n target = toRef(target);\n options = {\n ...defaultOptions,\n ...options\n };\n const {\n document = defaultDocument\n } = options;\n const listenerOptions = { passive: true };\n const currentTime = shallowRef(0);\n const duration = shallowRef(0);\n const seeking = shallowRef(false);\n const volume = shallowRef(1);\n const waiting = shallowRef(false);\n const ended = shallowRef(false);\n const playing = shallowRef(false);\n const rate = shallowRef(1);\n const stalled = shallowRef(false);\n const buffered = ref([]);\n const tracks = ref([]);\n const selectedTrack = shallowRef(-1);\n const isPictureInPicture = shallowRef(false);\n const muted = shallowRef(false);\n const supportsPictureInPicture = document && \"pictureInPictureEnabled\" in document;\n const sourceErrorEvent = createEventHook();\n const playbackErrorEvent = createEventHook();\n const disableTrack = (track) => {\n usingElRef(target, (el) => {\n if (track) {\n const id = typeof track === \"number\" ? track : track.id;\n el.textTracks[id].mode = \"disabled\";\n } else {\n for (let i = 0; i < el.textTracks.length; ++i)\n el.textTracks[i].mode = \"disabled\";\n }\n selectedTrack.value = -1;\n });\n };\n const enableTrack = (track, disableTracks = true) => {\n usingElRef(target, (el) => {\n const id = typeof track === \"number\" ? track : track.id;\n if (disableTracks)\n disableTrack();\n el.textTracks[id].mode = \"showing\";\n selectedTrack.value = id;\n });\n };\n const togglePictureInPicture = () => {\n return new Promise((resolve, reject) => {\n usingElRef(target, async (el) => {\n if (supportsPictureInPicture) {\n if (!isPictureInPicture.value) {\n el.requestPictureInPicture().then(resolve).catch(reject);\n } else {\n document.exitPictureInPicture().then(resolve).catch(reject);\n }\n }\n });\n });\n };\n watchEffect(() => {\n if (!document)\n return;\n const el = toValue(target);\n if (!el)\n return;\n const src = toValue(options.src);\n let sources = [];\n if (!src)\n return;\n if (typeof src === \"string\")\n sources = [{ src }];\n else if (Array.isArray(src))\n sources = src;\n else if (isObject(src))\n sources = [src];\n el.querySelectorAll(\"source\").forEach((e) => {\n e.remove();\n });\n sources.forEach(({ src: src2, type, media }) => {\n const source = document.createElement(\"source\");\n source.setAttribute(\"src\", src2);\n source.setAttribute(\"type\", type || \"\");\n source.setAttribute(\"media\", media || \"\");\n useEventListener(source, \"error\", sourceErrorEvent.trigger, listenerOptions);\n el.appendChild(source);\n });\n el.load();\n });\n watch([target, volume], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.volume = volume.value;\n });\n watch([target, muted], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.muted = muted.value;\n });\n watch([target, rate], () => {\n const el = toValue(target);\n if (!el)\n return;\n el.playbackRate = rate.value;\n });\n watchEffect(() => {\n if (!document)\n return;\n const textTracks = toValue(options.tracks);\n const el = toValue(target);\n if (!textTracks || !textTracks.length || !el)\n return;\n el.querySelectorAll(\"track\").forEach((e) => e.remove());\n textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n const track = document.createElement(\"track\");\n track.default = isDefault || false;\n track.kind = kind;\n track.label = label;\n track.src = src;\n track.srclang = srcLang;\n if (track.default)\n selectedTrack.value = i;\n el.appendChild(track);\n });\n });\n const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n const el = toValue(target);\n if (!el)\n return;\n el.currentTime = time;\n });\n const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n const el = toValue(target);\n if (!el)\n return;\n if (isPlaying) {\n el.play().catch((e) => {\n playbackErrorEvent.trigger(e);\n throw e;\n });\n } else {\n el.pause();\n }\n });\n useEventListener(\n target,\n \"timeupdate\",\n () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime),\n listenerOptions\n );\n useEventListener(\n target,\n \"durationchange\",\n () => duration.value = toValue(target).duration,\n listenerOptions\n );\n useEventListener(\n target,\n \"progress\",\n () => buffered.value = timeRangeToArray(toValue(target).buffered),\n listenerOptions\n );\n useEventListener(\n target,\n \"seeking\",\n () => seeking.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"seeked\",\n () => seeking.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n [\"waiting\", \"loadstart\"],\n () => {\n waiting.value = true;\n ignorePlayingUpdates(() => playing.value = false);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"loadeddata\",\n () => waiting.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"playing\",\n () => {\n waiting.value = false;\n ended.value = false;\n ignorePlayingUpdates(() => playing.value = true);\n },\n listenerOptions\n );\n useEventListener(\n target,\n \"ratechange\",\n () => rate.value = toValue(target).playbackRate,\n listenerOptions\n );\n useEventListener(\n target,\n \"stalled\",\n () => stalled.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"ended\",\n () => ended.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"pause\",\n () => ignorePlayingUpdates(() => playing.value = false),\n listenerOptions\n );\n useEventListener(\n target,\n \"play\",\n () => ignorePlayingUpdates(() => playing.value = true),\n listenerOptions\n );\n useEventListener(\n target,\n \"enterpictureinpicture\",\n () => isPictureInPicture.value = true,\n listenerOptions\n );\n useEventListener(\n target,\n \"leavepictureinpicture\",\n () => isPictureInPicture.value = false,\n listenerOptions\n );\n useEventListener(\n target,\n \"volumechange\",\n () => {\n const el = toValue(target);\n if (!el)\n return;\n volume.value = el.volume;\n muted.value = el.muted;\n },\n listenerOptions\n );\n const listeners = [];\n const stop = watch([target], () => {\n const el = toValue(target);\n if (!el)\n return;\n stop();\n listeners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n listeners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n });\n tryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n return {\n currentTime,\n duration,\n waiting,\n seeking,\n ended,\n stalled,\n buffered,\n playing,\n rate,\n // Volume\n volume,\n muted,\n // Tracks\n tracks,\n selectedTrack,\n enableTrack,\n disableTrack,\n // Picture in Picture\n supportsPictureInPicture,\n togglePictureInPicture,\n isPictureInPicture,\n // Events\n onSourceError: sourceErrorEvent.on,\n onPlaybackError: playbackErrorEvent.on\n };\n}\n\nfunction useMemoize(resolver, options) {\n const initCache = () => {\n if (options == null ? void 0 : options.cache)\n return shallowReactive(options.cache);\n return shallowReactive(/* @__PURE__ */ new Map());\n };\n const cache = initCache();\n const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n const _loadData = (key, ...args) => {\n cache.set(key, resolver(...args));\n return cache.get(key);\n };\n const loadData = (...args) => _loadData(generateKey(...args), ...args);\n const deleteData = (...args) => {\n cache.delete(generateKey(...args));\n };\n const clearData = () => {\n cache.clear();\n };\n const memoized = (...args) => {\n const key = generateKey(...args);\n if (cache.has(key))\n return cache.get(key);\n return _loadData(key, ...args);\n };\n memoized.load = loadData;\n memoized.delete = deleteData;\n memoized.clear = clearData;\n memoized.generateKey = generateKey;\n memoized.cache = cache;\n return memoized;\n}\n\nfunction useMemory(options = {}) {\n const memory = ref();\n const isSupported = useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n if (isSupported.value) {\n const { interval = 1e3 } = options;\n useIntervalFn(() => {\n memory.value = performance.memory;\n }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback });\n }\n return { isSupported, memory };\n}\n\nconst UseMouseBuiltinExtractors = {\n page: (event) => [event.pageX, event.pageY],\n client: (event) => [event.clientX, event.clientY],\n screen: (event) => [event.screenX, event.screenY],\n movement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null\n};\nfunction useMouse(options = {}) {\n const {\n type = \"page\",\n touch = true,\n resetOnTouchEnds = false,\n initialValue = { x: 0, y: 0 },\n window = defaultWindow,\n target = window,\n scroll = true,\n eventFilter\n } = options;\n let _prevMouseEvent = null;\n let _prevScrollX = 0;\n let _prevScrollY = 0;\n const x = shallowRef(initialValue.x);\n const y = shallowRef(initialValue.y);\n const sourceType = shallowRef(null);\n const extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n const mouseHandler = (event) => {\n const result = extractor(event);\n _prevMouseEvent = event;\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"mouse\";\n }\n if (window) {\n _prevScrollX = window.scrollX;\n _prevScrollY = window.scrollY;\n }\n };\n const touchHandler = (event) => {\n if (event.touches.length > 0) {\n const result = extractor(event.touches[0]);\n if (result) {\n [x.value, y.value] = result;\n sourceType.value = \"touch\";\n }\n }\n };\n const scrollHandler = () => {\n if (!_prevMouseEvent || !window)\n return;\n const pos = extractor(_prevMouseEvent);\n if (_prevMouseEvent instanceof MouseEvent && pos) {\n x.value = pos[0] + window.scrollX - _prevScrollX;\n y.value = pos[1] + window.scrollY - _prevScrollY;\n }\n };\n const reset = () => {\n x.value = initialValue.x;\n y.value = initialValue.y;\n };\n const mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n const touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n const scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n if (touch && type !== \"movement\") {\n useEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n if (resetOnTouchEnds)\n useEventListener(target, \"touchend\", reset, listenerOptions);\n }\n if (scroll && type === \"page\")\n useEventListener(window, \"scroll\", scrollHandlerWrapper, listenerOptions);\n }\n return {\n x,\n y,\n sourceType\n };\n}\n\nfunction useMouseInElement(target, options = {}) {\n const {\n handleOutside = true,\n window = defaultWindow\n } = options;\n const type = options.type || \"page\";\n const { x, y, sourceType } = useMouse(options);\n const targetRef = shallowRef(target != null ? target : window == null ? void 0 : window.document.body);\n const elementX = shallowRef(0);\n const elementY = shallowRef(0);\n const elementPositionX = shallowRef(0);\n const elementPositionY = shallowRef(0);\n const elementHeight = shallowRef(0);\n const elementWidth = shallowRef(0);\n const isOutside = shallowRef(true);\n let stop = () => {\n };\n if (window) {\n stop = watch(\n [targetRef, x, y],\n () => {\n const el = unrefElement(targetRef);\n if (!el || !(el instanceof Element))\n return;\n const {\n left,\n top,\n width,\n height\n } = el.getBoundingClientRect();\n elementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n elementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n elementHeight.value = height;\n elementWidth.value = width;\n const elX = x.value - elementPositionX.value;\n const elY = y.value - elementPositionY.value;\n isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n if (handleOutside || !isOutside.value) {\n elementX.value = elX;\n elementY.value = elY;\n }\n },\n { immediate: true }\n );\n useEventListener(\n document,\n \"mouseleave\",\n () => isOutside.value = true,\n { passive: true }\n );\n }\n return {\n x,\n y,\n sourceType,\n elementX,\n elementY,\n elementPositionX,\n elementPositionY,\n elementHeight,\n elementWidth,\n isOutside,\n stop\n };\n}\n\nfunction useMousePressed(options = {}) {\n const {\n touch = true,\n drag = true,\n capture = false,\n initialValue = false,\n window = defaultWindow\n } = options;\n const pressed = shallowRef(initialValue);\n const sourceType = shallowRef(null);\n if (!window) {\n return {\n pressed,\n sourceType\n };\n }\n const onPressed = (srcType) => (event) => {\n var _a;\n pressed.value = true;\n sourceType.value = srcType;\n (_a = options.onPressed) == null ? void 0 : _a.call(options, event);\n };\n const onReleased = (event) => {\n var _a;\n pressed.value = false;\n sourceType.value = null;\n (_a = options.onReleased) == null ? void 0 : _a.call(options, event);\n };\n const target = computed(() => unrefElement(options.target) || window);\n const listenerOptions = { passive: true, capture };\n useEventListener(target, \"mousedown\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"mouseleave\", onReleased, listenerOptions);\n useEventListener(window, \"mouseup\", onReleased, listenerOptions);\n if (drag) {\n useEventListener(target, \"dragstart\", onPressed(\"mouse\"), listenerOptions);\n useEventListener(window, \"drop\", onReleased, listenerOptions);\n useEventListener(window, \"dragend\", onReleased, listenerOptions);\n }\n if (touch) {\n useEventListener(target, \"touchstart\", onPressed(\"touch\"), listenerOptions);\n useEventListener(window, \"touchend\", onReleased, listenerOptions);\n useEventListener(window, \"touchcancel\", onReleased, listenerOptions);\n }\n return {\n pressed,\n sourceType\n };\n}\n\nfunction useNavigatorLanguage(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"language\" in navigator);\n const language = shallowRef(navigator == null ? void 0 : navigator.language);\n useEventListener(window, \"languagechange\", () => {\n if (navigator)\n language.value = navigator.language;\n }, { passive: true });\n return {\n isSupported,\n language\n };\n}\n\nfunction useNetwork(options = {}) {\n const { window = defaultWindow } = options;\n const navigator = window == null ? void 0 : window.navigator;\n const isSupported = useSupported(() => navigator && \"connection\" in navigator);\n const isOnline = shallowRef(true);\n const saveData = shallowRef(false);\n const offlineAt = shallowRef(void 0);\n const onlineAt = shallowRef(void 0);\n const downlink = shallowRef(void 0);\n const downlinkMax = shallowRef(void 0);\n const rtt = shallowRef(void 0);\n const effectiveType = shallowRef(void 0);\n const type = shallowRef(\"unknown\");\n const connection = isSupported.value && navigator.connection;\n function updateNetworkInformation() {\n if (!navigator)\n return;\n isOnline.value = navigator.onLine;\n offlineAt.value = isOnline.value ? void 0 : Date.now();\n onlineAt.value = isOnline.value ? Date.now() : void 0;\n if (connection) {\n downlink.value = connection.downlink;\n downlinkMax.value = connection.downlinkMax;\n effectiveType.value = connection.effectiveType;\n rtt.value = connection.rtt;\n saveData.value = connection.saveData;\n type.value = connection.type;\n }\n }\n const listenerOptions = { passive: true };\n if (window) {\n useEventListener(window, \"offline\", () => {\n isOnline.value = false;\n offlineAt.value = Date.now();\n }, listenerOptions);\n useEventListener(window, \"online\", () => {\n isOnline.value = true;\n onlineAt.value = Date.now();\n }, listenerOptions);\n }\n if (connection)\n useEventListener(connection, \"change\", updateNetworkInformation, listenerOptions);\n updateNetworkInformation();\n return {\n isSupported,\n isOnline: readonly(isOnline),\n saveData: readonly(saveData),\n offlineAt: readonly(offlineAt),\n onlineAt: readonly(onlineAt),\n downlink: readonly(downlink),\n downlinkMax: readonly(downlinkMax),\n effectiveType: readonly(effectiveType),\n rtt: readonly(rtt),\n type: readonly(type)\n };\n}\n\nfunction useNow(options = {}) {\n const {\n controls: exposeControls = false,\n interval = \"requestAnimationFrame\"\n } = options;\n const now = ref(/* @__PURE__ */ new Date());\n const update = () => now.value = /* @__PURE__ */ new Date();\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true });\n if (exposeControls) {\n return {\n now,\n ...controls\n };\n } else {\n return now;\n }\n}\n\nfunction useObjectUrl(object) {\n const url = shallowRef();\n const release = () => {\n if (url.value)\n URL.revokeObjectURL(url.value);\n url.value = void 0;\n };\n watch(\n () => toValue(object),\n (newObject) => {\n release();\n if (newObject)\n url.value = URL.createObjectURL(newObject);\n },\n { immediate: true }\n );\n tryOnScopeDispose(release);\n return readonly(url);\n}\n\nfunction useClamp(value, min, max) {\n if (typeof value === \"function\" || isReadonly(value))\n return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n const _value = ref(value);\n return computed({\n get() {\n return _value.value = clamp(_value.value, toValue(min), toValue(max));\n },\n set(value2) {\n _value.value = clamp(value2, toValue(min), toValue(max));\n }\n });\n}\n\nfunction useOffsetPagination(options) {\n const {\n total = Number.POSITIVE_INFINITY,\n pageSize = 10,\n page = 1,\n onPageChange = noop,\n onPageSizeChange = noop,\n onPageCountChange = noop\n } = options;\n const currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n const pageCount = computed(() => Math.max(\n 1,\n Math.ceil(toValue(total) / toValue(currentPageSize))\n ));\n const currentPage = useClamp(page, 1, pageCount);\n const isFirstPage = computed(() => currentPage.value === 1);\n const isLastPage = computed(() => currentPage.value === pageCount.value);\n if (isRef(page)) {\n syncRef(page, currentPage, {\n direction: isReadonly(page) ? \"ltr\" : \"both\"\n });\n }\n if (isRef(pageSize)) {\n syncRef(pageSize, currentPageSize, {\n direction: isReadonly(pageSize) ? \"ltr\" : \"both\"\n });\n }\n function prev() {\n currentPage.value--;\n }\n function next() {\n currentPage.value++;\n }\n const returnValue = {\n currentPage,\n currentPageSize,\n pageCount,\n isFirstPage,\n isLastPage,\n prev,\n next\n };\n watch(currentPage, () => {\n onPageChange(reactive(returnValue));\n });\n watch(currentPageSize, () => {\n onPageSizeChange(reactive(returnValue));\n });\n watch(pageCount, () => {\n onPageCountChange(reactive(returnValue));\n });\n return returnValue;\n}\n\nfunction useOnline(options = {}) {\n const { isOnline } = useNetwork(options);\n return isOnline;\n}\n\nfunction usePageLeave(options = {}) {\n const { window = defaultWindow } = options;\n const isLeft = shallowRef(false);\n const handler = (event) => {\n if (!window)\n return;\n event = event || window.event;\n const from = event.relatedTarget || event.toElement;\n isLeft.value = !from;\n };\n if (window) {\n const listenerOptions = { passive: true };\n useEventListener(window, \"mouseout\", handler, listenerOptions);\n useEventListener(window.document, \"mouseleave\", handler, listenerOptions);\n useEventListener(window.document, \"mouseenter\", handler, listenerOptions);\n }\n return isLeft;\n}\n\nfunction useScreenOrientation(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const isSupported = useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n const screenOrientation = isSupported.value ? window.screen.orientation : {};\n const orientation = ref(screenOrientation.type);\n const angle = shallowRef(screenOrientation.angle || 0);\n if (isSupported.value) {\n useEventListener(window, \"orientationchange\", () => {\n orientation.value = screenOrientation.type;\n angle.value = screenOrientation.angle;\n }, { passive: true });\n }\n const lockOrientation = (type) => {\n if (isSupported.value && typeof screenOrientation.lock === \"function\")\n return screenOrientation.lock(type);\n return Promise.reject(new Error(\"Not supported\"));\n };\n const unlockOrientation = () => {\n if (isSupported.value && typeof screenOrientation.unlock === \"function\")\n screenOrientation.unlock();\n };\n return {\n isSupported,\n orientation,\n angle,\n lockOrientation,\n unlockOrientation\n };\n}\n\nfunction useParallax(target, options = {}) {\n const {\n deviceOrientationTiltAdjust = (i) => i,\n deviceOrientationRollAdjust = (i) => i,\n mouseTiltAdjust = (i) => i,\n mouseRollAdjust = (i) => i,\n window = defaultWindow\n } = options;\n const orientation = reactive(useDeviceOrientation({ window }));\n const screenOrientation = reactive(useScreenOrientation({ window }));\n const {\n elementX: x,\n elementY: y,\n elementWidth: width,\n elementHeight: height\n } = useMouseInElement(target, { handleOutside: false, window });\n const source = computed(() => {\n if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) {\n return \"deviceOrientation\";\n }\n return \"mouse\";\n });\n const roll = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.gamma / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.gamma / 90;\n break;\n case \"portrait-primary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-secondary\":\n value = orientation.beta / 90;\n break;\n default:\n value = -orientation.beta / 90;\n }\n return deviceOrientationRollAdjust(value);\n } else {\n const value = -(y.value - height.value / 2) / height.value;\n return mouseRollAdjust(value);\n }\n });\n const tilt = computed(() => {\n if (source.value === \"deviceOrientation\") {\n let value;\n switch (screenOrientation.orientation) {\n case \"landscape-primary\":\n value = orientation.beta / 90;\n break;\n case \"landscape-secondary\":\n value = -orientation.beta / 90;\n break;\n case \"portrait-primary\":\n value = orientation.gamma / 90;\n break;\n case \"portrait-secondary\":\n value = -orientation.gamma / 90;\n break;\n default:\n value = orientation.gamma / 90;\n }\n return deviceOrientationTiltAdjust(value);\n } else {\n const value = (x.value - width.value / 2) / width.value;\n return mouseTiltAdjust(value);\n }\n });\n return { roll, tilt, source };\n}\n\nfunction useParentElement(element = useCurrentElement()) {\n const parentElement = shallowRef();\n const update = () => {\n const el = unrefElement(element);\n if (el)\n parentElement.value = el.parentElement;\n };\n tryOnMounted(update);\n watch(() => toValue(element), update);\n return parentElement;\n}\n\nfunction usePerformanceObserver(options, callback) {\n const {\n window = defaultWindow,\n immediate = true,\n ...performanceOptions\n } = options;\n const isSupported = useSupported(() => window && \"PerformanceObserver\" in window);\n let observer;\n const stop = () => {\n observer == null ? void 0 : observer.disconnect();\n };\n const start = () => {\n if (isSupported.value) {\n stop();\n observer = new PerformanceObserver(callback);\n observer.observe(performanceOptions);\n }\n };\n tryOnScopeDispose(stop);\n if (immediate)\n start();\n return {\n isSupported,\n start,\n stop\n };\n}\n\nconst defaultState = {\n x: 0,\n y: 0,\n pointerId: 0,\n pressure: 0,\n tiltX: 0,\n tiltY: 0,\n width: 0,\n height: 0,\n twist: 0,\n pointerType: null\n};\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\nfunction usePointer(options = {}) {\n const {\n target = defaultWindow\n } = options;\n const isInside = shallowRef(false);\n const state = ref(options.initialValue || {});\n Object.assign(state.value, defaultState, state.value);\n const handler = (event) => {\n isInside.value = true;\n if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType))\n return;\n state.value = objectPick(event, keys, false);\n };\n if (target) {\n const listenerOptions = { passive: true };\n useEventListener(target, [\"pointerdown\", \"pointermove\", \"pointerup\"], handler, listenerOptions);\n useEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n }\n return {\n ...toRefs(state),\n isInside\n };\n}\n\nfunction usePointerLock(target, options = {}) {\n const { document = defaultDocument } = options;\n const isSupported = useSupported(() => document && \"pointerLockElement\" in document);\n const element = shallowRef();\n const triggerElement = shallowRef();\n let targetElement;\n if (isSupported.value) {\n const listenerOptions = { passive: true };\n useEventListener(document, \"pointerlockchange\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n element.value = document.pointerLockElement;\n if (!element.value)\n targetElement = triggerElement.value = null;\n }\n }, listenerOptions);\n useEventListener(document, \"pointerlockerror\", () => {\n var _a;\n const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value;\n if (targetElement && currentElement === targetElement) {\n const action = document.pointerLockElement ? \"release\" : \"acquire\";\n throw new Error(`Failed to ${action} pointer lock.`);\n }\n }, listenerOptions);\n }\n async function lock(e) {\n var _a;\n if (!isSupported.value)\n throw new Error(\"Pointer Lock API is not supported by your browser.\");\n triggerElement.value = e instanceof Event ? e.currentTarget : null;\n targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e);\n if (!targetElement)\n throw new Error(\"Target element undefined.\");\n targetElement.requestPointerLock();\n return await until(element).toBe(targetElement);\n }\n async function unlock() {\n if (!element.value)\n return false;\n document.exitPointerLock();\n await until(element).toBeNull();\n return true;\n }\n return {\n isSupported,\n element,\n triggerElement,\n lock,\n unlock\n };\n}\n\nfunction usePointerSwipe(target, options = {}) {\n const targetRef = toRef(target);\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n disableTextSelect = false\n } = options;\n const posStart = reactive({ x: 0, y: 0 });\n const updatePosStart = (x, y) => {\n posStart.x = x;\n posStart.y = y;\n };\n const posEnd = reactive({ x: 0, y: 0 });\n const updatePosEnd = (x, y) => {\n posEnd.x = x;\n posEnd.y = y;\n };\n const distanceX = computed(() => posStart.x - posEnd.x);\n const distanceY = computed(() => posStart.y - posEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const isPointerDown = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(distanceX.value) > abs(distanceY.value)) {\n return distanceX.value > 0 ? \"left\" : \"right\";\n } else {\n return distanceY.value > 0 ? \"up\" : \"down\";\n }\n });\n const eventIsAllowed = (e) => {\n var _a, _b, _c;\n const isReleasingButton = e.buttons === 0;\n const isPrimaryButton = e.buttons === 1;\n return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true;\n };\n const listenerOptions = { passive: true };\n const stops = [\n useEventListener(target, \"pointerdown\", (e) => {\n if (!eventIsAllowed(e))\n return;\n isPointerDown.value = true;\n const eventTarget = e.target;\n eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId);\n const { clientX: x, clientY: y } = e;\n updatePosStart(x, y);\n updatePosEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"pointermove\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (!isPointerDown.value)\n return;\n const { clientX: x, clientY: y } = e;\n updatePosEnd(x, y);\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, \"pointerup\", (e) => {\n if (!eventIsAllowed(e))\n return;\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isPointerDown.value = false;\n isSwiping.value = false;\n }, listenerOptions)\n ];\n tryOnMounted(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty(\"touch-action\", \"none\");\n if (disableTextSelect) {\n (_d = (_c = targetRef.value) == null ? void 0 : _c.style) == null ? void 0 : _d.setProperty(\"-webkit-user-select\", \"none\");\n (_f = (_e = targetRef.value) == null ? void 0 : _e.style) == null ? void 0 : _f.setProperty(\"-ms-user-select\", \"none\");\n (_h = (_g = targetRef.value) == null ? void 0 : _g.style) == null ? void 0 : _h.setProperty(\"user-select\", \"none\");\n }\n });\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping: readonly(isSwiping),\n direction: readonly(direction),\n posStart: readonly(posStart),\n posEnd: readonly(posEnd),\n distanceX,\n distanceY,\n stop\n };\n}\n\nfunction usePreferredColorScheme(options) {\n const isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n const isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n return computed(() => {\n if (isDark.value)\n return \"dark\";\n if (isLight.value)\n return \"light\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredContrast(options) {\n const isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n const isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n const isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n return computed(() => {\n if (isMore.value)\n return \"more\";\n if (isLess.value)\n return \"less\";\n if (isCustom.value)\n return \"custom\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredLanguages(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return ref([\"en\"]);\n const navigator = window.navigator;\n const value = ref(navigator.languages);\n useEventListener(window, \"languagechange\", () => {\n value.value = navigator.languages;\n }, { passive: true });\n return value;\n}\n\nfunction usePreferredReducedMotion(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePreferredReducedTransparency(options) {\n const isReduced = useMediaQuery(\"(prefers-reduced-transparency: reduce)\", options);\n return computed(() => {\n if (isReduced.value)\n return \"reduce\";\n return \"no-preference\";\n });\n}\n\nfunction usePrevious(value, initialValue) {\n const previous = shallowRef(initialValue);\n watch(\n toRef(value),\n (_, oldValue) => {\n previous.value = oldValue;\n },\n { flush: \"sync\" }\n );\n return readonly(previous);\n}\n\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\nfunction useScreenSafeArea() {\n const top = shallowRef(\"\");\n const right = shallowRef(\"\");\n const bottom = shallowRef(\"\");\n const left = shallowRef(\"\");\n if (isClient) {\n const topCssVar = useCssVar(topVarName);\n const rightCssVar = useCssVar(rightVarName);\n const bottomCssVar = useCssVar(bottomVarName);\n const leftCssVar = useCssVar(leftVarName);\n topCssVar.value = \"env(safe-area-inset-top, 0px)\";\n rightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n bottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n leftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n update();\n useEventListener(\"resize\", useDebounceFn(update), { passive: true });\n }\n function update() {\n top.value = getValue(topVarName);\n right.value = getValue(rightVarName);\n bottom.value = getValue(bottomVarName);\n left.value = getValue(leftVarName);\n }\n return {\n top,\n right,\n bottom,\n left,\n update\n };\n}\nfunction getValue(position) {\n return getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n const {\n immediate = true,\n manual = false,\n type = \"text/javascript\",\n async = true,\n crossOrigin,\n referrerPolicy,\n noModule,\n defer,\n document = defaultDocument,\n attrs = {}\n } = options;\n const scriptTag = shallowRef(null);\n let _promise = null;\n const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n const resolveWithElement = (el2) => {\n scriptTag.value = el2;\n resolve(el2);\n return el2;\n };\n if (!document) {\n resolve(false);\n return;\n }\n let shouldAppend = false;\n let el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (!el) {\n el = document.createElement(\"script\");\n el.type = type;\n el.async = async;\n el.src = toValue(src);\n if (defer)\n el.defer = defer;\n if (crossOrigin)\n el.crossOrigin = crossOrigin;\n if (noModule)\n el.noModule = noModule;\n if (referrerPolicy)\n el.referrerPolicy = referrerPolicy;\n Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value));\n shouldAppend = true;\n } else if (el.hasAttribute(\"data-loaded\")) {\n resolveWithElement(el);\n }\n const listenerOptions = {\n passive: true\n };\n useEventListener(el, \"error\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"abort\", (event) => reject(event), listenerOptions);\n useEventListener(el, \"load\", () => {\n el.setAttribute(\"data-loaded\", \"true\");\n onLoaded(el);\n resolveWithElement(el);\n }, listenerOptions);\n if (shouldAppend)\n el = document.head.appendChild(el);\n if (!waitForScriptLoad)\n resolveWithElement(el);\n });\n const load = (waitForScriptLoad = true) => {\n if (!_promise)\n _promise = loadScript(waitForScriptLoad);\n return _promise;\n };\n const unload = () => {\n if (!document)\n return;\n _promise = null;\n if (scriptTag.value)\n scriptTag.value = null;\n const el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n if (el)\n document.head.removeChild(el);\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnUnmounted(unload);\n return { scriptTag, load, unload };\n}\n\nfunction checkOverflowScroll(ele) {\n const style = window.getComputedStyle(ele);\n if (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) {\n return true;\n } else {\n const parent = ele.parentNode;\n if (!parent || parent.tagName === \"BODY\")\n return false;\n return checkOverflowScroll(parent);\n }\n}\nfunction preventDefault(rawEvent) {\n const e = rawEvent || window.event;\n const _target = e.target;\n if (checkOverflowScroll(_target))\n return false;\n if (e.touches.length > 1)\n return true;\n if (e.preventDefault)\n e.preventDefault();\n return false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\nfunction useScrollLock(element, initialState = false) {\n const isLocked = shallowRef(initialState);\n let stopTouchMoveListener = null;\n let initialOverflow = \"\";\n watch(toRef(element), (el) => {\n const target = resolveElement(toValue(el));\n if (target) {\n const ele = target;\n if (!elInitialOverflow.get(ele))\n elInitialOverflow.set(ele, ele.style.overflow);\n if (ele.style.overflow !== \"hidden\")\n initialOverflow = ele.style.overflow;\n if (ele.style.overflow === \"hidden\")\n return isLocked.value = true;\n if (isLocked.value)\n return ele.style.overflow = \"hidden\";\n }\n }, {\n immediate: true\n });\n const lock = () => {\n const el = resolveElement(toValue(element));\n if (!el || isLocked.value)\n return;\n if (isIOS) {\n stopTouchMoveListener = useEventListener(\n el,\n \"touchmove\",\n (e) => {\n preventDefault(e);\n },\n { passive: false }\n );\n }\n el.style.overflow = \"hidden\";\n isLocked.value = true;\n };\n const unlock = () => {\n const el = resolveElement(toValue(element));\n if (!el || !isLocked.value)\n return;\n if (isIOS)\n stopTouchMoveListener == null ? void 0 : stopTouchMoveListener();\n el.style.overflow = initialOverflow;\n elInitialOverflow.delete(el);\n isLocked.value = false;\n };\n tryOnScopeDispose(unlock);\n return computed({\n get() {\n return isLocked.value;\n },\n set(v) {\n if (v)\n lock();\n else unlock();\n }\n });\n}\n\nfunction useSessionStorage(key, initialValue, options = {}) {\n const { window = defaultWindow } = options;\n return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options);\n}\n\nfunction useShare(shareOptions = {}, options = {}) {\n const { navigator = defaultNavigator } = options;\n const _navigator = navigator;\n const isSupported = useSupported(() => _navigator && \"canShare\" in _navigator);\n const share = async (overrideOptions = {}) => {\n if (isSupported.value) {\n const data = {\n ...toValue(shareOptions),\n ...toValue(overrideOptions)\n };\n let granted = true;\n if (data.files && _navigator.canShare)\n granted = _navigator.canShare({ files: data.files });\n if (granted)\n return _navigator.share(data);\n }\n };\n return {\n isSupported,\n share\n };\n}\n\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n var _a, _b, _c, _d;\n const [source] = args;\n let compareFn = defaultCompare;\n let options = {};\n if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n options = args[1];\n compareFn = (_a = options.compareFn) != null ? _a : defaultCompare;\n } else {\n compareFn = (_b = args[1]) != null ? _b : defaultCompare;\n }\n } else if (args.length > 2) {\n compareFn = (_c = args[1]) != null ? _c : defaultCompare;\n options = (_d = args[2]) != null ? _d : {};\n }\n const {\n dirty = false,\n sortFn = defaultSortFn\n } = options;\n if (!dirty)\n return computed(() => sortFn([...toValue(source)], compareFn));\n watchEffect(() => {\n const result = sortFn(toValue(source), compareFn);\n if (isRef(source))\n source.value = result;\n else\n source.splice(0, source.length, ...result);\n });\n return source;\n}\n\nfunction useSpeechRecognition(options = {}) {\n const {\n interimResults = true,\n continuous = true,\n maxAlternatives = 1,\n window = defaultWindow\n } = options;\n const lang = toRef(options.lang || \"en-US\");\n const isListening = shallowRef(false);\n const isFinal = shallowRef(false);\n const result = shallowRef(\"\");\n const error = shallowRef(void 0);\n let recognition;\n const start = () => {\n isListening.value = true;\n };\n const stop = () => {\n isListening.value = false;\n };\n const toggle = (value = !isListening.value) => {\n if (value) {\n start();\n } else {\n stop();\n }\n };\n const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n const isSupported = useSupported(() => SpeechRecognition);\n if (isSupported.value) {\n recognition = new SpeechRecognition();\n recognition.continuous = continuous;\n recognition.interimResults = interimResults;\n recognition.lang = toValue(lang);\n recognition.maxAlternatives = maxAlternatives;\n recognition.onstart = () => {\n isListening.value = true;\n isFinal.value = false;\n };\n watch(lang, (lang2) => {\n if (recognition && !isListening.value)\n recognition.lang = lang2;\n });\n recognition.onresult = (event) => {\n const currentResult = event.results[event.resultIndex];\n const { transcript } = currentResult[0];\n isFinal.value = currentResult.isFinal;\n result.value = transcript;\n error.value = void 0;\n };\n recognition.onerror = (event) => {\n error.value = event;\n };\n recognition.onend = () => {\n isListening.value = false;\n recognition.lang = toValue(lang);\n };\n watch(isListening, (newValue, oldValue) => {\n if (newValue === oldValue)\n return;\n if (newValue)\n recognition.start();\n else\n recognition.stop();\n });\n }\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n isListening,\n isFinal,\n recognition,\n result,\n error,\n toggle,\n start,\n stop\n };\n}\n\nfunction useSpeechSynthesis(text, options = {}) {\n const {\n pitch = 1,\n rate = 1,\n volume = 1,\n window = defaultWindow\n } = options;\n const synth = window && window.speechSynthesis;\n const isSupported = useSupported(() => synth);\n const isPlaying = shallowRef(false);\n const status = shallowRef(\"init\");\n const spokenText = toRef(text || \"\");\n const lang = toRef(options.lang || \"en-US\");\n const error = shallowRef(void 0);\n const toggle = (value = !isPlaying.value) => {\n isPlaying.value = value;\n };\n const bindEventsForUtterance = (utterance2) => {\n utterance2.lang = toValue(lang);\n utterance2.voice = toValue(options.voice) || null;\n utterance2.pitch = toValue(pitch);\n utterance2.rate = toValue(rate);\n utterance2.volume = volume;\n utterance2.onstart = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onpause = () => {\n isPlaying.value = false;\n status.value = \"pause\";\n };\n utterance2.onresume = () => {\n isPlaying.value = true;\n status.value = \"play\";\n };\n utterance2.onend = () => {\n isPlaying.value = false;\n status.value = \"end\";\n };\n utterance2.onerror = (event) => {\n error.value = event;\n };\n };\n const utterance = computed(() => {\n isPlaying.value = false;\n status.value = \"init\";\n const newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n bindEventsForUtterance(newUtterance);\n return newUtterance;\n });\n const speak = () => {\n synth.cancel();\n if (utterance)\n synth.speak(utterance.value);\n };\n const stop = () => {\n synth.cancel();\n isPlaying.value = false;\n };\n if (isSupported.value) {\n bindEventsForUtterance(utterance.value);\n watch(lang, (lang2) => {\n if (utterance.value && !isPlaying.value)\n utterance.value.lang = lang2;\n });\n if (options.voice) {\n watch(options.voice, () => {\n synth.cancel();\n });\n }\n watch(isPlaying, () => {\n if (isPlaying.value)\n synth.resume();\n else\n synth.pause();\n });\n }\n tryOnScopeDispose(() => {\n isPlaying.value = false;\n });\n return {\n isSupported,\n isPlaying,\n status,\n utterance,\n error,\n stop,\n toggle,\n speak\n };\n}\n\nfunction useStepper(steps, initialStep) {\n const stepsRef = ref(steps);\n const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0]));\n const current = computed(() => at(index.value));\n const isFirst = computed(() => index.value === 0);\n const isLast = computed(() => index.value === stepNames.value.length - 1);\n const next = computed(() => stepNames.value[index.value + 1]);\n const previous = computed(() => stepNames.value[index.value - 1]);\n function at(index2) {\n if (Array.isArray(stepsRef.value))\n return stepsRef.value[index2];\n return stepsRef.value[stepNames.value[index2]];\n }\n function get(step) {\n if (!stepNames.value.includes(step))\n return;\n return at(stepNames.value.indexOf(step));\n }\n function goTo(step) {\n if (stepNames.value.includes(step))\n index.value = stepNames.value.indexOf(step);\n }\n function goToNext() {\n if (isLast.value)\n return;\n index.value++;\n }\n function goToPrevious() {\n if (isFirst.value)\n return;\n index.value--;\n }\n function goBackTo(step) {\n if (isAfter(step))\n goTo(step);\n }\n function isNext(step) {\n return stepNames.value.indexOf(step) === index.value + 1;\n }\n function isPrevious(step) {\n return stepNames.value.indexOf(step) === index.value - 1;\n }\n function isCurrent(step) {\n return stepNames.value.indexOf(step) === index.value;\n }\n function isBefore(step) {\n return index.value < stepNames.value.indexOf(step);\n }\n function isAfter(step) {\n return index.value > stepNames.value.indexOf(step);\n }\n return {\n steps: stepsRef,\n stepNames,\n index,\n current,\n next,\n previous,\n isFirst,\n isLast,\n at,\n get,\n goTo,\n goToNext,\n goToPrevious,\n goBackTo,\n isNext,\n isPrevious,\n isCurrent,\n isBefore,\n isAfter\n };\n}\n\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n var _a;\n const {\n flush = \"pre\",\n deep = true,\n listenToStorageChanges = true,\n writeDefaults = true,\n mergeDefaults = false,\n shallow,\n window = defaultWindow,\n eventFilter,\n onError = (e) => {\n console.error(e);\n }\n } = options;\n const rawInit = toValue(initialValue);\n const type = guessSerializerType(rawInit);\n const data = (shallow ? shallowRef : ref)(toValue(initialValue));\n const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];\n if (!storage) {\n try {\n storage = getSSRHandler(\"getDefaultStorageAsync\", () => {\n var _a2;\n return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage;\n })();\n } catch (e) {\n onError(e);\n }\n }\n async function read(event) {\n if (!storage || event && event.key !== key)\n return;\n try {\n const rawValue = event ? event.newValue : await storage.getItem(key);\n if (rawValue == null) {\n data.value = rawInit;\n if (writeDefaults && rawInit !== null)\n await storage.setItem(key, await serializer.write(rawInit));\n } else if (mergeDefaults) {\n const value = await serializer.read(rawValue);\n if (typeof mergeDefaults === \"function\")\n data.value = mergeDefaults(value, rawInit);\n else if (type === \"object\" && !Array.isArray(value))\n data.value = { ...rawInit, ...value };\n else data.value = value;\n } else {\n data.value = await serializer.read(rawValue);\n }\n } catch (e) {\n onError(e);\n }\n }\n read();\n if (window && listenToStorageChanges)\n useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)), { passive: true });\n if (storage) {\n watchWithFilter(\n data,\n async () => {\n try {\n if (data.value == null)\n await storage.removeItem(key);\n else\n await storage.setItem(key, await serializer.write(data.value));\n } catch (e) {\n onError(e);\n }\n },\n {\n flush,\n deep,\n eventFilter\n }\n );\n }\n return data;\n}\n\nlet _id = 0;\nfunction useStyleTag(css, options = {}) {\n const isLoaded = shallowRef(false);\n const {\n document = defaultDocument,\n immediate = true,\n manual = false,\n id = `vueuse_styletag_${++_id}`\n } = options;\n const cssRef = shallowRef(css);\n let stop = () => {\n };\n const load = () => {\n if (!document)\n return;\n const el = document.getElementById(id) || document.createElement(\"style\");\n if (!el.isConnected) {\n el.id = id;\n if (options.media)\n el.media = options.media;\n document.head.appendChild(el);\n }\n if (isLoaded.value)\n return;\n stop = watch(\n cssRef,\n (value) => {\n el.textContent = value;\n },\n { immediate: true }\n );\n isLoaded.value = true;\n };\n const unload = () => {\n if (!document || !isLoaded.value)\n return;\n stop();\n document.head.removeChild(document.getElementById(id));\n isLoaded.value = false;\n };\n if (immediate && !manual)\n tryOnMounted(load);\n if (!manual)\n tryOnScopeDispose(unload);\n return {\n id,\n css: cssRef,\n unload,\n load,\n isLoaded: readonly(isLoaded)\n };\n}\n\nfunction useSwipe(target, options = {}) {\n const {\n threshold = 50,\n onSwipe,\n onSwipeEnd,\n onSwipeStart,\n passive = true\n } = options;\n const coordsStart = reactive({ x: 0, y: 0 });\n const coordsEnd = reactive({ x: 0, y: 0 });\n const diffX = computed(() => coordsStart.x - coordsEnd.x);\n const diffY = computed(() => coordsStart.y - coordsEnd.y);\n const { max, abs } = Math;\n const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n const isSwiping = shallowRef(false);\n const direction = computed(() => {\n if (!isThresholdExceeded.value)\n return \"none\";\n if (abs(diffX.value) > abs(diffY.value)) {\n return diffX.value > 0 ? \"left\" : \"right\";\n } else {\n return diffY.value > 0 ? \"up\" : \"down\";\n }\n });\n const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n const updateCoordsStart = (x, y) => {\n coordsStart.x = x;\n coordsStart.y = y;\n };\n const updateCoordsEnd = (x, y) => {\n coordsEnd.x = x;\n coordsEnd.y = y;\n };\n const listenerOptions = { passive, capture: !passive };\n const onTouchEnd = (e) => {\n if (isSwiping.value)\n onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value);\n isSwiping.value = false;\n };\n const stops = [\n useEventListener(target, \"touchstart\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsStart(x, y);\n updateCoordsEnd(x, y);\n onSwipeStart == null ? void 0 : onSwipeStart(e);\n }, listenerOptions),\n useEventListener(target, \"touchmove\", (e) => {\n if (e.touches.length !== 1)\n return;\n const [x, y] = getTouchEventCoords(e);\n updateCoordsEnd(x, y);\n if (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value))\n e.preventDefault();\n if (!isSwiping.value && isThresholdExceeded.value)\n isSwiping.value = true;\n if (isSwiping.value)\n onSwipe == null ? void 0 : onSwipe(e);\n }, listenerOptions),\n useEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n ];\n const stop = () => stops.forEach((s) => s());\n return {\n isSwiping,\n direction,\n coordsStart,\n coordsEnd,\n lengthX: diffX,\n lengthY: diffY,\n stop,\n // TODO: Remove in the next major version\n isPassiveEventSupported: true\n };\n}\n\nfunction useTemplateRefsList() {\n const refs = ref([]);\n refs.value.set = (el) => {\n if (el)\n refs.value.push(el);\n };\n onBeforeUpdate(() => {\n refs.value.length = 0;\n });\n return refs;\n}\n\nfunction useTextDirection(options = {}) {\n const {\n document = defaultDocument,\n selector = \"html\",\n observe = false,\n initialValue = \"ltr\"\n } = options;\n function getValue() {\n var _a, _b;\n return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute(\"dir\")) != null ? _b : initialValue;\n }\n const dir = ref(getValue());\n tryOnMounted(() => dir.value = getValue());\n if (observe && document) {\n useMutationObserver(\n document.querySelector(selector),\n () => dir.value = getValue(),\n { attributes: true }\n );\n }\n return computed({\n get() {\n return dir.value;\n },\n set(v) {\n var _a, _b;\n dir.value = v;\n if (!document)\n return;\n if (dir.value)\n (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute(\"dir\", dir.value);\n else\n (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute(\"dir\");\n }\n });\n}\n\nfunction getRangesFromSelection(selection) {\n var _a;\n const rangeCount = (_a = selection.rangeCount) != null ? _a : 0;\n return Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\nfunction useTextSelection(options = {}) {\n const {\n window = defaultWindow\n } = options;\n const selection = ref(null);\n const text = computed(() => {\n var _a, _b;\n return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : \"\";\n });\n const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n function onSelectionChange() {\n selection.value = null;\n if (window)\n selection.value = window.getSelection();\n }\n if (window)\n useEventListener(window.document, \"selectionchange\", onSelectionChange, { passive: true });\n return {\n text,\n rects,\n ranges,\n selection\n };\n}\n\nfunction tryRequestAnimationFrame(window = defaultWindow, fn) {\n if (window && typeof window.requestAnimationFrame === \"function\") {\n window.requestAnimationFrame(fn);\n } else {\n fn();\n }\n}\nfunction useTextareaAutosize(options = {}) {\n var _a, _b;\n const { window = defaultWindow } = options;\n const textarea = toRef(options == null ? void 0 : options.element);\n const input = toRef((_a = options == null ? void 0 : options.input) != null ? _a : \"\");\n const styleProp = (_b = options == null ? void 0 : options.styleProp) != null ? _b : \"height\";\n const textareaScrollHeight = shallowRef(1);\n const textareaOldWidth = shallowRef(0);\n function triggerResize() {\n var _a2;\n if (!textarea.value)\n return;\n let height = \"\";\n textarea.value.style[styleProp] = \"1px\";\n textareaScrollHeight.value = (_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight;\n const _styleTarget = toValue(options == null ? void 0 : options.styleTarget);\n if (_styleTarget)\n _styleTarget.style[styleProp] = `${textareaScrollHeight.value}px`;\n else\n height = `${textareaScrollHeight.value}px`;\n textarea.value.style[styleProp] = height;\n }\n watch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n watch(textareaScrollHeight, () => {\n var _a2;\n return (_a2 = options == null ? void 0 : options.onResize) == null ? void 0 : _a2.call(options);\n });\n useResizeObserver(textarea, ([{ contentRect }]) => {\n if (textareaOldWidth.value === contentRect.width)\n return;\n tryRequestAnimationFrame(window, () => {\n textareaOldWidth.value = contentRect.width;\n triggerResize();\n });\n });\n if (options == null ? void 0 : options.watch)\n watch(options.watch, triggerResize, { immediate: true, deep: true });\n return {\n textarea,\n input,\n triggerResize\n };\n}\n\nfunction useThrottledRefHistory(source, options = {}) {\n const { throttle = 200, trailing = true } = options;\n const filter = throttleFilter(throttle, trailing);\n const history = useRefHistory(source, { ...options, eventFilter: filter });\n return {\n ...history\n };\n}\n\nconst DEFAULT_UNITS = [\n { max: 6e4, value: 1e3, name: \"second\" },\n { max: 276e4, value: 6e4, name: \"minute\" },\n { max: 72e6, value: 36e5, name: \"hour\" },\n { max: 5184e5, value: 864e5, name: \"day\" },\n { max: 24192e5, value: 6048e5, name: \"week\" },\n { max: 28512e6, value: 2592e6, name: \"month\" },\n { max: Number.POSITIVE_INFINITY, value: 31536e6, name: \"year\" }\n];\nconst DEFAULT_MESSAGES = {\n justNow: \"just now\",\n past: (n) => n.match(/\\d/) ? `${n} ago` : n,\n future: (n) => n.match(/\\d/) ? `in ${n}` : n,\n month: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n year: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n day: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n week: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n hour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n minute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n second: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n invalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n return date.toISOString().slice(0, 10);\n}\nfunction useTimeAgo(time, options = {}) {\n const {\n controls: exposeControls = false,\n updateInterval = 3e4\n } = options;\n const { now, ...controls } = useNow({ interval: updateInterval, controls: true });\n const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n if (exposeControls) {\n return {\n timeAgo,\n ...controls\n };\n } else {\n return timeAgo;\n }\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n var _a;\n const {\n max,\n messages = DEFAULT_MESSAGES,\n fullDateFormatter = DEFAULT_FORMATTER,\n units = DEFAULT_UNITS,\n showSecond = false,\n rounding = \"round\"\n } = options;\n const roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n const diff = +now - +from;\n const absDiff = Math.abs(diff);\n function getValue(diff2, unit) {\n return roundFn(Math.abs(diff2) / unit.value);\n }\n function format(diff2, unit) {\n const val = getValue(diff2, unit);\n const past = diff2 > 0;\n const str = applyFormat(unit.name, val, past);\n return applyFormat(past ? \"past\" : \"future\", str, past);\n }\n function applyFormat(name, val, isPast) {\n const formatter = messages[name];\n if (typeof formatter === \"function\")\n return formatter(val, isPast);\n return formatter.replace(\"{0}\", val.toString());\n }\n if (absDiff < 6e4 && !showSecond)\n return messages.justNow;\n if (typeof max === \"number\" && absDiff > max)\n return fullDateFormatter(new Date(from));\n if (typeof max === \"string\") {\n const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max;\n if (unitMax && absDiff > unitMax)\n return fullDateFormatter(new Date(from));\n }\n for (const [idx, unit] of units.entries()) {\n const val = getValue(diff, unit);\n if (val <= 0 && units[idx - 1])\n return format(diff, units[idx - 1]);\n if (absDiff < unit.max)\n return format(diff, unit);\n }\n return messages.invalid;\n}\n\nfunction useTimeoutPoll(fn, interval, options = {}) {\n const {\n immediate = true,\n immediateCallback = false\n } = options;\n const { start } = useTimeoutFn(loop, interval, { immediate });\n const isActive = shallowRef(false);\n async function loop() {\n if (!isActive.value)\n return;\n await fn();\n start();\n }\n function resume() {\n if (!isActive.value) {\n isActive.value = true;\n if (immediateCallback)\n fn();\n start();\n }\n }\n function pause() {\n isActive.value = false;\n }\n if (immediate && isClient)\n resume();\n tryOnScopeDispose(pause);\n return {\n isActive,\n pause,\n resume\n };\n}\n\nfunction useTimestamp(options = {}) {\n const {\n controls: exposeControls = false,\n offset = 0,\n immediate = true,\n interval = \"requestAnimationFrame\",\n callback\n } = options;\n const ts = shallowRef(timestamp() + offset);\n const update = () => ts.value = timestamp() + offset;\n const cb = callback ? () => {\n update();\n callback(ts.value);\n } : update;\n const controls = interval === \"requestAnimationFrame\" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate });\n if (exposeControls) {\n return {\n timestamp: ts,\n ...controls\n };\n } else {\n return ts;\n }\n}\n\nfunction useTitle(newTitle = null, options = {}) {\n var _a, _b, _c;\n const {\n document = defaultDocument,\n restoreOnUnmount = (t) => t\n } = options;\n const originalTitle = (_a = document == null ? void 0 : document.title) != null ? _a : \"\";\n const title = toRef((_b = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _b : null);\n const isReadonly = !!(newTitle && typeof newTitle === \"function\");\n function format(t) {\n if (!(\"titleTemplate\" in options))\n return t;\n const template = options.titleTemplate || \"%s\";\n return typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n }\n watch(\n title,\n (newValue, oldValue) => {\n if (newValue !== oldValue && document)\n document.title = format(newValue != null ? newValue : \"\");\n },\n { immediate: true }\n );\n if (options.observe && !options.titleTemplate && document && !isReadonly) {\n useMutationObserver(\n (_c = document.head) == null ? void 0 : _c.querySelector(\"title\"),\n () => {\n if (document && document.title !== title.value)\n title.value = format(document.title);\n },\n { childList: true }\n );\n }\n tryOnScopeDispose(() => {\n if (restoreOnUnmount) {\n const restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n if (restoredTitle != null && document)\n document.title = restoredTitle;\n }\n });\n return title;\n}\n\nconst _TransitionPresets = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, _TransitionPresets);\nfunction createEasingFunction([p0, p1, p2, p3]) {\n const a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n const b = (a1, a2) => 3 * a2 - 6 * a1;\n const c = (a1) => 3 * a1;\n const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n const getTforX = (x) => {\n let aGuessT = x;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, p0, p2);\n if (currentSlope === 0)\n return aGuessT;\n const currentX = calcBezier(aGuessT, p0, p2) - x;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n };\n return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n return a + alpha * (b - a);\n}\nfunction toVec(t) {\n return (typeof t === \"number\" ? [t] : t) || [];\n}\nfunction executeTransition(source, from, to, options = {}) {\n var _a, _b;\n const fromVal = toValue(from);\n const toVal = toValue(to);\n const v1 = toVec(fromVal);\n const v2 = toVec(toVal);\n const duration = (_a = toValue(options.duration)) != null ? _a : 1e3;\n const startedAt = Date.now();\n const endAt = Date.now() + duration;\n const trans = typeof options.transition === \"function\" ? options.transition : (_b = toValue(options.transition)) != null ? _b : identity;\n const ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n return new Promise((resolve) => {\n source.value = fromVal;\n const tick = () => {\n var _a2;\n if ((_a2 = options.abort) == null ? void 0 : _a2.call(options)) {\n resolve();\n return;\n }\n const now = Date.now();\n const alpha = ease((now - startedAt) / duration);\n const arr = toVec(source.value).map((n, i) => lerp(v1[i], v2[i], alpha));\n if (Array.isArray(source.value))\n source.value = arr.map((n, i) => {\n var _a3, _b2;\n return lerp((_a3 = v1[i]) != null ? _a3 : 0, (_b2 = v2[i]) != null ? _b2 : 0, alpha);\n });\n else if (typeof source.value === \"number\")\n source.value = arr[0];\n if (now < endAt) {\n requestAnimationFrame(tick);\n } else {\n source.value = toVal;\n resolve();\n }\n };\n tick();\n });\n}\nfunction useTransition(source, options = {}) {\n let currentId = 0;\n const sourceVal = () => {\n const v = toValue(source);\n return typeof v === \"number\" ? v : v.map(toValue);\n };\n const outputRef = ref(sourceVal());\n watch(sourceVal, async (to) => {\n var _a, _b;\n if (toValue(options.disabled))\n return;\n const id = ++currentId;\n if (options.delay)\n await promiseTimeout(toValue(options.delay));\n if (id !== currentId)\n return;\n const toVal = Array.isArray(to) ? to.map(toValue) : toValue(to);\n (_a = options.onStarted) == null ? void 0 : _a.call(options);\n await executeTransition(outputRef, outputRef.value, toVal, {\n ...options,\n abort: () => {\n var _a2;\n return id !== currentId || ((_a2 = options.abort) == null ? void 0 : _a2.call(options));\n }\n });\n (_b = options.onFinished) == null ? void 0 : _b.call(options);\n }, { deep: true });\n watch(() => toValue(options.disabled), (disabled) => {\n if (disabled) {\n currentId++;\n outputRef.value = sourceVal();\n }\n });\n tryOnScopeDispose(() => {\n currentId++;\n });\n return computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n const {\n initialValue = {},\n removeNullishValues = true,\n removeFalsyValues = false,\n write: enableWrite = true,\n writeMode = \"replace\",\n window = defaultWindow\n } = options;\n if (!window)\n return reactive(initialValue);\n const state = reactive({});\n function getRawParams() {\n if (mode === \"history\") {\n return window.location.search || \"\";\n } else if (mode === \"hash\") {\n const hash = window.location.hash || \"\";\n const index = hash.indexOf(\"?\");\n return index > 0 ? hash.slice(index) : \"\";\n } else {\n return (window.location.hash || \"\").replace(/^#/, \"\");\n }\n }\n function constructQuery(params) {\n const stringified = params.toString();\n if (mode === \"history\")\n return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n if (mode === \"hash-params\")\n return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n const hash = window.location.hash || \"#\";\n const index = hash.indexOf(\"?\");\n if (index > 0)\n return `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n return `${window.location.search || \"\"}${hash}${stringified ? `?${stringified}` : \"\"}`;\n }\n function read() {\n return new URLSearchParams(getRawParams());\n }\n function updateState(params) {\n const unusedKeys = new Set(Object.keys(state));\n for (const key of params.keys()) {\n const paramsForKey = params.getAll(key);\n state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n unusedKeys.delete(key);\n }\n Array.from(unusedKeys).forEach((key) => delete state[key]);\n }\n const { pause, resume } = pausableWatch(\n state,\n () => {\n const params = new URLSearchParams(\"\");\n Object.keys(state).forEach((key) => {\n const mapEntry = state[key];\n if (Array.isArray(mapEntry))\n mapEntry.forEach((value) => params.append(key, value));\n else if (removeNullishValues && mapEntry == null)\n params.delete(key);\n else if (removeFalsyValues && !mapEntry)\n params.delete(key);\n else\n params.set(key, mapEntry);\n });\n write(params, false);\n },\n { deep: true }\n );\n function write(params, shouldUpdate) {\n pause();\n if (shouldUpdate)\n updateState(params);\n if (writeMode === \"replace\") {\n window.history.replaceState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n } else {\n window.history.pushState(\n window.history.state,\n window.document.title,\n window.location.pathname + constructQuery(params)\n );\n }\n resume();\n }\n function onChanged() {\n if (!enableWrite)\n return;\n write(read(), true);\n }\n const listenerOptions = { passive: true };\n useEventListener(window, \"popstate\", onChanged, listenerOptions);\n if (mode !== \"history\")\n useEventListener(window, \"hashchange\", onChanged, listenerOptions);\n const initial = read();\n if (initial.keys().next().value)\n updateState(initial);\n else\n Object.assign(state, initialValue);\n return state;\n}\n\nfunction useUserMedia(options = {}) {\n var _a, _b;\n const enabled = shallowRef((_a = options.enabled) != null ? _a : false);\n const autoSwitch = shallowRef((_b = options.autoSwitch) != null ? _b : true);\n const constraints = ref(options.constraints);\n const { navigator = defaultNavigator } = options;\n const isSupported = useSupported(() => {\n var _a2;\n return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia;\n });\n const stream = shallowRef();\n function getDeviceOptions(type) {\n switch (type) {\n case \"video\": {\n if (constraints.value)\n return constraints.value.video || false;\n break;\n }\n case \"audio\": {\n if (constraints.value)\n return constraints.value.audio || false;\n break;\n }\n }\n }\n async function _start() {\n if (!isSupported.value || stream.value)\n return;\n stream.value = await navigator.mediaDevices.getUserMedia({\n video: getDeviceOptions(\"video\"),\n audio: getDeviceOptions(\"audio\")\n });\n return stream.value;\n }\n function _stop() {\n var _a2;\n (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop());\n stream.value = void 0;\n }\n function stop() {\n _stop();\n enabled.value = false;\n }\n async function start() {\n await _start();\n if (stream.value)\n enabled.value = true;\n return stream.value;\n }\n async function restart() {\n _stop();\n return await start();\n }\n watch(\n enabled,\n (v) => {\n if (v)\n _start();\n else _stop();\n },\n { immediate: true }\n );\n watch(\n constraints,\n () => {\n if (autoSwitch.value && stream.value)\n restart();\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n stop();\n });\n return {\n isSupported,\n stream,\n start,\n stop,\n restart,\n constraints,\n enabled,\n autoSwitch\n };\n}\n\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n key = \"modelValue\";\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\n\nfunction useVModels(props, emit, options = {}) {\n const ret = {};\n for (const key in props) {\n ret[key] = useVModel(\n props,\n key,\n emit,\n options\n );\n }\n return ret;\n}\n\nfunction useVibrate(options) {\n const {\n pattern = [],\n interval = 0,\n navigator = defaultNavigator\n } = options || {};\n const isSupported = useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n const patternRef = toRef(pattern);\n let intervalControls;\n const vibrate = (pattern2 = patternRef.value) => {\n if (isSupported.value)\n navigator.vibrate(pattern2);\n };\n const stop = () => {\n if (isSupported.value)\n navigator.vibrate(0);\n intervalControls == null ? void 0 : intervalControls.pause();\n };\n if (interval > 0) {\n intervalControls = useIntervalFn(\n vibrate,\n interval,\n {\n immediate: false,\n immediateCallback: false\n }\n );\n }\n return {\n isSupported,\n pattern,\n intervalControls,\n vibrate,\n stop\n };\n}\n\nfunction useVirtualList(list, options) {\n const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n return {\n list: currentList,\n scrollTo,\n containerProps: {\n ref: containerRef,\n onScroll: () => {\n calculateRange();\n },\n style: containerStyle\n },\n wrapperProps\n };\n}\nfunction useVirtualListResources(list) {\n const containerRef = shallowRef(null);\n const size = useElementSize(containerRef);\n const currentList = ref([]);\n const source = shallowRef(list);\n const state = ref({ start: 0, end: 10 });\n return { state, source, currentList, size, containerRef };\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n return (containerSize) => {\n if (typeof itemSize === \"number\")\n return Math.ceil(containerSize / itemSize);\n const { start = 0 } = state.value;\n let sum = 0;\n let capacity = 0;\n for (let i = start; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n capacity = i;\n if (sum > containerSize)\n break;\n }\n return capacity - start;\n };\n}\nfunction createGetOffset(source, itemSize) {\n return (scrollDirection) => {\n if (typeof itemSize === \"number\")\n return Math.floor(scrollDirection / itemSize) + 1;\n let sum = 0;\n let offset = 0;\n for (let i = 0; i < source.value.length; i++) {\n const size = itemSize(i);\n sum += size;\n if (sum >= scrollDirection) {\n offset = i;\n break;\n }\n }\n return offset + 1;\n };\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n return () => {\n const element = containerRef.value;\n if (element) {\n const offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n const viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n const from = offset - overscan;\n const to = offset + viewCapacity + overscan;\n state.value = {\n start: from < 0 ? 0 : from,\n end: to > source.value.length ? source.value.length : to\n };\n currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n data: ele,\n index: index + state.value.start\n }));\n }\n };\n}\nfunction createGetDistance(itemSize, source) {\n return (index) => {\n if (typeof itemSize === \"number\") {\n const size2 = index * itemSize;\n return size2;\n }\n const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n return size;\n };\n}\nfunction useWatchForSizes(size, list, containerRef, calculateRange) {\n watch([size.width, size.height, list, containerRef], () => {\n calculateRange();\n });\n}\nfunction createComputedTotalSize(itemSize, source) {\n return computed(() => {\n if (typeof itemSize === \"number\")\n return source.value.length * itemSize;\n return source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n });\n}\nconst scrollToDictionaryForElementScrollKey = {\n horizontal: \"scrollLeft\",\n vertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n return (index) => {\n if (containerRef.value) {\n containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n calculateRange();\n }\n };\n}\nfunction useHorizontalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowX: \"auto\" };\n const { itemWidth, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n const getOffset = createGetOffset(source, itemWidth);\n const calculateRange = createCalculateRange(\"horizontal\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceLeft = createGetDistance(itemWidth, source);\n const offsetLeft = computed(() => getDistanceLeft(state.value.start));\n const totalWidth = createComputedTotalSize(itemWidth, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n height: \"100%\",\n width: `${totalWidth.value - offsetLeft.value}px`,\n marginLeft: `${offsetLeft.value}px`,\n display: \"flex\"\n }\n };\n });\n return {\n scrollTo,\n calculateRange,\n wrapperProps,\n containerStyle,\n currentList,\n containerRef\n };\n}\nfunction useVerticalVirtualList(options, list) {\n const resources = useVirtualListResources(list);\n const { state, source, currentList, size, containerRef } = resources;\n const containerStyle = { overflowY: \"auto\" };\n const { itemHeight, overscan = 5 } = options;\n const getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n const getOffset = createGetOffset(source, itemHeight);\n const calculateRange = createCalculateRange(\"vertical\", overscan, getOffset, getViewCapacity, resources);\n const getDistanceTop = createGetDistance(itemHeight, source);\n const offsetTop = computed(() => getDistanceTop(state.value.start));\n const totalHeight = createComputedTotalSize(itemHeight, source);\n useWatchForSizes(size, list, containerRef, calculateRange);\n const scrollTo = createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef);\n const wrapperProps = computed(() => {\n return {\n style: {\n width: \"100%\",\n height: `${totalHeight.value - offsetTop.value}px`,\n marginTop: `${offsetTop.value}px`\n }\n };\n });\n return {\n calculateRange,\n scrollTo,\n containerStyle,\n wrapperProps,\n currentList,\n containerRef\n };\n}\n\nfunction useWakeLock(options = {}) {\n const {\n navigator = defaultNavigator,\n document = defaultDocument\n } = options;\n const requestedType = shallowRef(false);\n const sentinel = shallowRef(null);\n const documentVisibility = useDocumentVisibility({ document });\n const isSupported = useSupported(() => navigator && \"wakeLock\" in navigator);\n const isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n if (isSupported.value) {\n useEventListener(sentinel, \"release\", () => {\n var _a, _b;\n requestedType.value = (_b = (_a = sentinel.value) == null ? void 0 : _a.type) != null ? _b : false;\n }, { passive: true });\n whenever(\n () => documentVisibility.value === \"visible\" && (document == null ? void 0 : document.visibilityState) === \"visible\" && requestedType.value,\n (type) => {\n requestedType.value = false;\n forceRequest(type);\n }\n );\n }\n async function forceRequest(type) {\n var _a;\n await ((_a = sentinel.value) == null ? void 0 : _a.release());\n sentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n }\n async function request(type) {\n if (documentVisibility.value === \"visible\")\n await forceRequest(type);\n else\n requestedType.value = type;\n }\n async function release() {\n requestedType.value = false;\n const s = sentinel.value;\n sentinel.value = null;\n await (s == null ? void 0 : s.release());\n }\n return {\n sentinel,\n isSupported,\n isActive,\n request,\n forceRequest,\n release\n };\n}\n\nfunction useWebNotification(options = {}) {\n const {\n window = defaultWindow,\n requestPermissions: _requestForPermissions = true\n } = options;\n const defaultWebNotificationOptions = options;\n const isSupported = useSupported(() => {\n if (!window || !(\"Notification\" in window))\n return false;\n if (Notification.permission === \"granted\")\n return true;\n try {\n const notification2 = new Notification(\"\");\n notification2.onshow = () => {\n notification2.close();\n };\n } catch (e) {\n if (e.name === \"TypeError\")\n return false;\n }\n return true;\n });\n const permissionGranted = shallowRef(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n const notification = ref(null);\n const ensurePermissions = async () => {\n if (!isSupported.value)\n return;\n if (!permissionGranted.value && Notification.permission !== \"denied\") {\n const result = await Notification.requestPermission();\n if (result === \"granted\")\n permissionGranted.value = true;\n }\n return permissionGranted.value;\n };\n const { on: onClick, trigger: clickTrigger } = createEventHook();\n const { on: onShow, trigger: showTrigger } = createEventHook();\n const { on: onError, trigger: errorTrigger } = createEventHook();\n const { on: onClose, trigger: closeTrigger } = createEventHook();\n const show = async (overrides) => {\n if (!isSupported.value || !permissionGranted.value)\n return;\n const options2 = Object.assign({}, defaultWebNotificationOptions, overrides);\n notification.value = new Notification(options2.title || \"\", options2);\n notification.value.onclick = clickTrigger;\n notification.value.onshow = showTrigger;\n notification.value.onerror = errorTrigger;\n notification.value.onclose = closeTrigger;\n return notification.value;\n };\n const close = () => {\n if (notification.value)\n notification.value.close();\n notification.value = null;\n };\n if (_requestForPermissions)\n tryOnMounted(ensurePermissions);\n tryOnScopeDispose(close);\n if (isSupported.value && window) {\n const document = window.document;\n useEventListener(document, \"visibilitychange\", (e) => {\n e.preventDefault();\n if (document.visibilityState === \"visible\") {\n close();\n }\n });\n }\n return {\n isSupported,\n notification,\n ensurePermissions,\n permissionGranted,\n show,\n close,\n onClick,\n onShow,\n onError,\n onClose\n };\n}\n\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n if (options === true)\n return {};\n return options;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n onConnected,\n onDisconnected,\n onError,\n onMessage,\n immediate = true,\n autoConnect = true,\n autoClose = true,\n protocols = []\n } = options;\n const data = ref(null);\n const status = shallowRef(\"CLOSED\");\n const wsRef = ref();\n const urlRef = toRef(url);\n let heartbeatPause;\n let heartbeatResume;\n let explicitlyClosed = false;\n let retried = 0;\n let bufferedData = [];\n let retryTimeout;\n let pongTimeoutWait;\n const _sendBuffer = () => {\n if (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n for (const buffer of bufferedData)\n wsRef.value.send(buffer);\n bufferedData = [];\n }\n };\n const resetRetry = () => {\n if (retryTimeout != null) {\n clearTimeout(retryTimeout);\n retryTimeout = void 0;\n }\n };\n const resetHeartbeat = () => {\n clearTimeout(pongTimeoutWait);\n pongTimeoutWait = void 0;\n };\n const close = (code = 1e3, reason) => {\n resetRetry();\n if (!isClient && !isWorker || !wsRef.value)\n return;\n explicitlyClosed = true;\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n wsRef.value.close(code, reason);\n wsRef.value = void 0;\n };\n const send = (data2, useBuffer = true) => {\n if (!wsRef.value || status.value !== \"OPEN\") {\n if (useBuffer)\n bufferedData.push(data2);\n return false;\n }\n _sendBuffer();\n wsRef.value.send(data2);\n return true;\n };\n const _init = () => {\n if (explicitlyClosed || typeof urlRef.value === \"undefined\")\n return;\n const ws = new WebSocket(urlRef.value, protocols);\n wsRef.value = ws;\n status.value = \"CONNECTING\";\n ws.onopen = () => {\n status.value = \"OPEN\";\n retried = 0;\n onConnected == null ? void 0 : onConnected(ws);\n heartbeatResume == null ? void 0 : heartbeatResume();\n _sendBuffer();\n };\n ws.onclose = (ev) => {\n status.value = \"CLOSED\";\n resetHeartbeat();\n heartbeatPause == null ? void 0 : heartbeatPause();\n onDisconnected == null ? void 0 : onDisconnected(ws, ev);\n if (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n const {\n retries = -1,\n delay = 1e3,\n onFailed\n } = resolveNestedOptions(options.autoReconnect);\n const checkRetires = typeof retries === \"function\" ? retries : () => typeof retries === \"number\" && (retries < 0 || retried < retries);\n if (checkRetires(retried)) {\n retried += 1;\n retryTimeout = setTimeout(_init, delay);\n } else {\n onFailed == null ? void 0 : onFailed();\n }\n }\n };\n ws.onerror = (e) => {\n onError == null ? void 0 : onError(ws, e);\n };\n ws.onmessage = (e) => {\n if (options.heartbeat) {\n resetHeartbeat();\n const {\n message = DEFAULT_PING_MESSAGE,\n responseMessage = message\n } = resolveNestedOptions(options.heartbeat);\n if (e.data === toValue(responseMessage))\n return;\n }\n data.value = e.data;\n onMessage == null ? void 0 : onMessage(ws, e);\n };\n };\n if (options.heartbeat) {\n const {\n message = DEFAULT_PING_MESSAGE,\n interval = 1e3,\n pongTimeout = 1e3\n } = resolveNestedOptions(options.heartbeat);\n const { pause, resume } = useIntervalFn(\n () => {\n send(toValue(message), false);\n if (pongTimeoutWait != null)\n return;\n pongTimeoutWait = setTimeout(() => {\n close();\n explicitlyClosed = false;\n }, pongTimeout);\n },\n interval,\n { immediate: false }\n );\n heartbeatPause = pause;\n heartbeatResume = resume;\n }\n if (autoClose) {\n if (isClient)\n useEventListener(\"beforeunload\", () => close(), { passive: true });\n tryOnScopeDispose(close);\n }\n const open = () => {\n if (!isClient && !isWorker)\n return;\n close();\n explicitlyClosed = false;\n retried = 0;\n _init();\n };\n if (immediate)\n open();\n if (autoConnect)\n watch(urlRef, open);\n return {\n data,\n status,\n close,\n send,\n open,\n ws: wsRef\n };\n}\n\nfunction useWebWorker(arg0, workerOptions, options) {\n const {\n window = defaultWindow\n } = options != null ? options : {};\n const data = ref(null);\n const worker = shallowRef();\n const post = (...args) => {\n if (!worker.value)\n return;\n worker.value.postMessage(...args);\n };\n const terminate = function terminate2() {\n if (!worker.value)\n return;\n worker.value.terminate();\n };\n if (window) {\n if (typeof arg0 === \"string\")\n worker.value = new Worker(arg0, workerOptions);\n else if (typeof arg0 === \"function\")\n worker.value = arg0();\n else\n worker.value = arg0;\n worker.value.onmessage = (e) => {\n data.value = e.data;\n };\n tryOnScopeDispose(() => {\n if (worker.value)\n worker.value.terminate();\n });\n }\n return {\n data,\n post,\n terminate,\n worker\n };\n}\n\nfunction depsParser(deps, localDeps) {\n if (deps.length === 0 && localDeps.length === 0)\n return \"\";\n const depsString = deps.map((dep) => `'${dep}'`).toString();\n const depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n const str = fn.toString();\n if (str.trim().startsWith(\"function\")) {\n return str;\n } else {\n const name = fn.name;\n return `const ${name} = ${str}`;\n }\n }).join(\";\");\n const importString = `importScripts(${depsString});`;\n return `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n\nfunction jobRunner(userFunc) {\n return (e) => {\n const userFuncArgs = e.data[0];\n return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n postMessage([\"SUCCESS\", result]);\n }).catch((error) => {\n postMessage([\"ERROR\", error]);\n });\n };\n}\n\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n const blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n const blob = new Blob([blobCode], { type: \"text/javascript\" });\n const url = URL.createObjectURL(blob);\n return url;\n}\n\nfunction useWebWorkerFn(fn, options = {}) {\n const {\n dependencies = [],\n localDependencies = [],\n timeout,\n window = defaultWindow\n } = options;\n const worker = ref();\n const workerStatus = shallowRef(\"PENDING\");\n const promise = ref({});\n const timeoutId = shallowRef();\n const workerTerminate = (status = \"PENDING\") => {\n if (worker.value && worker.value._url && window) {\n worker.value.terminate();\n URL.revokeObjectURL(worker.value._url);\n promise.value = {};\n worker.value = void 0;\n window.clearTimeout(timeoutId.value);\n workerStatus.value = status;\n }\n };\n workerTerminate();\n tryOnScopeDispose(workerTerminate);\n const generateWorker = () => {\n const blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n const newWorker = new Worker(blobUrl);\n newWorker._url = blobUrl;\n newWorker.onmessage = (e) => {\n const { resolve = () => {\n }, reject = () => {\n } } = promise.value;\n const [status, result] = e.data;\n switch (status) {\n case \"SUCCESS\":\n resolve(result);\n workerTerminate(status);\n break;\n default:\n reject(result);\n workerTerminate(\"ERROR\");\n break;\n }\n };\n newWorker.onerror = (e) => {\n const { reject = () => {\n } } = promise.value;\n e.preventDefault();\n reject(e);\n workerTerminate(\"ERROR\");\n };\n if (timeout) {\n timeoutId.value = setTimeout(\n () => workerTerminate(\"TIMEOUT_EXPIRED\"),\n timeout\n );\n }\n return newWorker;\n };\n const callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n var _a;\n promise.value = {\n resolve,\n reject\n };\n (_a = worker.value) == null ? void 0 : _a.postMessage([[...fnArgs]]);\n workerStatus.value = \"RUNNING\";\n });\n const workerFn = (...fnArgs) => {\n if (workerStatus.value === \"RUNNING\") {\n console.error(\n \"[useWebWorkerFn] You can only run one instance of the worker at a time.\"\n );\n return Promise.reject();\n }\n worker.value = generateWorker();\n return callWorker(...fnArgs);\n };\n return {\n workerFn,\n workerStatus,\n workerTerminate\n };\n}\n\nfunction useWindowFocus(options = {}) {\n const { window = defaultWindow } = options;\n if (!window)\n return shallowRef(false);\n const focused = shallowRef(window.document.hasFocus());\n const listenerOptions = { passive: true };\n useEventListener(window, \"blur\", () => {\n focused.value = false;\n }, listenerOptions);\n useEventListener(window, \"focus\", () => {\n focused.value = true;\n }, listenerOptions);\n return focused;\n}\n\nfunction useWindowScroll(options = {}) {\n const { window = defaultWindow, ...rest } = options;\n return useScroll(window, rest);\n}\n\nfunction useWindowSize(options = {}) {\n const {\n window = defaultWindow,\n initialWidth = Number.POSITIVE_INFINITY,\n initialHeight = Number.POSITIVE_INFINITY,\n listenOrientation = true,\n includeScrollbar = true,\n type = \"inner\"\n } = options;\n const width = shallowRef(initialWidth);\n const height = shallowRef(initialHeight);\n const update = () => {\n if (window) {\n if (type === \"outer\") {\n width.value = window.outerWidth;\n height.value = window.outerHeight;\n } else if (type === \"visual\" && window.visualViewport) {\n const { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport;\n width.value = Math.round(visualViewportWidth * scale);\n height.value = Math.round(visualViewportHeight * scale);\n } else if (includeScrollbar) {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n } else {\n width.value = window.document.documentElement.clientWidth;\n height.value = window.document.documentElement.clientHeight;\n }\n }\n };\n update();\n tryOnMounted(update);\n const listenerOptions = { passive: true };\n useEventListener(\"resize\", update, listenerOptions);\n if (window && type === \"visual\" && window.visualViewport) {\n useEventListener(window.visualViewport, \"resize\", update, listenerOptions);\n }\n if (listenOrientation) {\n const matches = useMediaQuery(\"(orientation: portrait)\");\n watch(matches, () => update());\n }\n return { width, height };\n}\n\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, templateRef, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","import { useEventListener } from \"@vueuse/core\";\n\nexport default function (el) {\n let dragging = false;\n let startX = 0;\n let startY = 0;\n let scrollLeft = 0;\n let scrollTop = 0;\n\n const onMouseDown = (e) => {\n dragging = true;\n startX = e.pageX;\n startY = e.pageY;\n scrollLeft = el.scrollLeft;\n scrollTop = el.scrollTop;\n el.style.cursor = 'grabbing';\n e.preventDefault();\n };\n\n const onMouseMove = (e) => {\n if (!dragging) return;\n const dx = e.pageX - startX;\n const dy = e.pageY - startY;\n el.scrollLeft = scrollLeft - dx;\n el.scrollTop = scrollTop - dy;\n };\n\n const onMouseUpOrLeave = () => {\n dragging = false;\n el.style.cursor = 'grab';\n };\n\n useEventListener(el, 'mousedown', onMouseDown);\n useEventListener(window, 'mousemove', onMouseMove);\n useEventListener(window, 'mouseup', onMouseUpOrLeave);\n useEventListener(el, 'mouseleave', onMouseUpOrLeave);\n}","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReCaptchaInstance = void 0;\nvar ReCaptchaInstance = (function () {\n function ReCaptchaInstance(siteKey, recaptchaID, recaptcha) {\n this.siteKey = siteKey;\n this.recaptchaID = recaptchaID;\n this.recaptcha = recaptcha;\n this.styleContainer = null;\n }\n ReCaptchaInstance.prototype.execute = function (action) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.recaptcha.enterprise) return [3, 2];\n return [4, this.recaptcha.enterprise.execute(this.recaptchaID, { action: action })];\n case 1:\n _a = _b.sent();\n return [3, 4];\n case 2: return [4, this.recaptcha.execute(this.recaptchaID, { action: action })];\n case 3:\n _a = _b.sent();\n _b.label = 4;\n case 4: return [2, _a];\n }\n });\n });\n };\n ReCaptchaInstance.prototype.getSiteKey = function () {\n return this.siteKey;\n };\n ReCaptchaInstance.prototype.hideBadge = function () {\n if (this.styleContainer !== null) {\n return;\n }\n this.styleContainer = document.createElement(\"style\");\n this.styleContainer.innerHTML =\n \".grecaptcha-badge{visibility:hidden !important;}\";\n document.head.appendChild(this.styleContainer);\n };\n ReCaptchaInstance.prototype.showBadge = function () {\n if (this.styleContainer === null) {\n return;\n }\n document.head.removeChild(this.styleContainer);\n this.styleContainer = null;\n };\n return ReCaptchaInstance;\n}());\nexports.ReCaptchaInstance = ReCaptchaInstance;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInstance = exports.load = void 0;\nvar ReCaptchaInstance_1 = require(\"./ReCaptchaInstance\");\nvar ELoadingState;\n(function (ELoadingState) {\n ELoadingState[ELoadingState[\"NOT_LOADED\"] = 0] = \"NOT_LOADED\";\n ELoadingState[ELoadingState[\"LOADING\"] = 1] = \"LOADING\";\n ELoadingState[ELoadingState[\"LOADED\"] = 2] = \"LOADED\";\n})(ELoadingState || (ELoadingState = {}));\nvar ReCaptchaLoader = (function () {\n function ReCaptchaLoader() {\n }\n ReCaptchaLoader.load = function (siteKey, options) {\n if (options === void 0) { options = {}; }\n if (typeof document === \"undefined\") {\n return Promise.reject(new Error(\"This is a library for the browser!\"));\n }\n if (ReCaptchaLoader.getLoadingState() === ELoadingState.LOADED) {\n if (ReCaptchaLoader.instance.getSiteKey() === siteKey) {\n return Promise.resolve(ReCaptchaLoader.instance);\n }\n else {\n return Promise.reject(new Error(\"reCAPTCHA already loaded with different site key!\"));\n }\n }\n if (ReCaptchaLoader.getLoadingState() === ELoadingState.LOADING) {\n if (siteKey !== ReCaptchaLoader.instanceSiteKey) {\n return Promise.reject(new Error(\"reCAPTCHA already loaded with different site key!\"));\n }\n return new Promise(function (resolve, reject) {\n ReCaptchaLoader.successfulLoadingConsumers.push(function (instance) { return resolve(instance); });\n ReCaptchaLoader.errorLoadingRunnable.push(function (reason) {\n return reject(reason);\n });\n });\n }\n ReCaptchaLoader.instanceSiteKey = siteKey;\n ReCaptchaLoader.setLoadingState(ELoadingState.LOADING);\n var loader = new ReCaptchaLoader();\n return new Promise(function (resolve, reject) {\n loader\n .loadScript(siteKey, options.useRecaptchaNet || false, options.useEnterprise || false, options.renderParameters ? options.renderParameters : {}, options.customUrl)\n .then(function () {\n ReCaptchaLoader.setLoadingState(ELoadingState.LOADED);\n var widgetID = loader.doExplicitRender(grecaptcha, siteKey, options.explicitRenderParameters\n ? options.explicitRenderParameters\n : {}, options.useEnterprise || false);\n var instance = new ReCaptchaInstance_1.ReCaptchaInstance(siteKey, widgetID, grecaptcha);\n ReCaptchaLoader.successfulLoadingConsumers.forEach(function (v) {\n return v(instance);\n });\n ReCaptchaLoader.successfulLoadingConsumers = [];\n if (options.autoHideBadge) {\n instance.hideBadge();\n }\n ReCaptchaLoader.instance = instance;\n resolve(instance);\n })\n .catch(function (error) {\n ReCaptchaLoader.errorLoadingRunnable.forEach(function (v) { return v(error); });\n ReCaptchaLoader.errorLoadingRunnable = [];\n reject(error);\n });\n });\n };\n ReCaptchaLoader.getInstance = function () {\n return ReCaptchaLoader.instance;\n };\n ReCaptchaLoader.setLoadingState = function (state) {\n ReCaptchaLoader.loadingState = state;\n };\n ReCaptchaLoader.getLoadingState = function () {\n if (ReCaptchaLoader.loadingState === null) {\n return ELoadingState.NOT_LOADED;\n }\n else {\n return ReCaptchaLoader.loadingState;\n }\n };\n ReCaptchaLoader.prototype.loadScript = function (siteKey, useRecaptchaNet, useEnterprise, renderParameters, customUrl) {\n var _this = this;\n if (useRecaptchaNet === void 0) { useRecaptchaNet = false; }\n if (useEnterprise === void 0) { useEnterprise = false; }\n if (renderParameters === void 0) { renderParameters = {}; }\n if (customUrl === void 0) { customUrl = \"\"; }\n var scriptElement = document.createElement(\"script\");\n scriptElement.setAttribute(\"recaptcha-v3-script\", \"\");\n scriptElement.setAttribute(\"async\", \"\");\n scriptElement.setAttribute(\"defer\", \"\");\n var scriptBase = \"https://www.google.com/recaptcha/api.js\";\n if (useRecaptchaNet) {\n if (useEnterprise) {\n scriptBase = \"https://recaptcha.net/recaptcha/enterprise.js\";\n }\n else {\n scriptBase = \"https://recaptcha.net/recaptcha/api.js\";\n }\n }\n else if (useEnterprise) {\n scriptBase = \"https://www.google.com/recaptcha/enterprise.js\";\n }\n if (customUrl) {\n scriptBase = customUrl;\n }\n if (renderParameters.render) {\n renderParameters.render = undefined;\n }\n var parametersQuery = this.buildQueryString(renderParameters);\n scriptElement.src = scriptBase + \"?render=explicit\" + parametersQuery;\n return new Promise(function (resolve, reject) {\n scriptElement.addEventListener(\"load\", _this.waitForScriptToLoad(function () {\n resolve(scriptElement);\n }, useEnterprise), false);\n scriptElement.onerror = function (error) {\n ReCaptchaLoader.setLoadingState(ELoadingState.NOT_LOADED);\n reject(error);\n };\n document.head.appendChild(scriptElement);\n });\n };\n ReCaptchaLoader.prototype.buildQueryString = function (parameters) {\n var parameterKeys = Object.keys(parameters);\n if (parameterKeys.length < 1) {\n return \"\";\n }\n return (\"&\" +\n Object.keys(parameters)\n .filter(function (parameterKey) {\n return !!parameters[parameterKey];\n })\n .map(function (parameterKey) {\n return parameterKey + \"=\" + parameters[parameterKey];\n })\n .join(\"&\"));\n };\n ReCaptchaLoader.prototype.waitForScriptToLoad = function (callback, useEnterprise) {\n var _this = this;\n return function () {\n if (window.grecaptcha === undefined) {\n setTimeout(function () {\n _this.waitForScriptToLoad(callback, useEnterprise);\n }, ReCaptchaLoader.SCRIPT_LOAD_DELAY);\n }\n else {\n if (useEnterprise) {\n window.grecaptcha.enterprise.ready(function () {\n callback();\n });\n }\n else {\n window.grecaptcha.ready(function () {\n callback();\n });\n }\n }\n };\n };\n ReCaptchaLoader.prototype.doExplicitRender = function (grecaptcha, siteKey, parameters, isEnterprise) {\n var augmentedParameters = __assign({ sitekey: siteKey }, parameters);\n if (parameters.container) {\n if (isEnterprise) {\n return grecaptcha.enterprise.render(parameters.container, augmentedParameters);\n }\n else {\n return grecaptcha.render(parameters.container, augmentedParameters);\n }\n }\n else {\n if (isEnterprise) {\n return grecaptcha.enterprise.render(augmentedParameters);\n }\n else {\n return grecaptcha.render(augmentedParameters);\n }\n }\n };\n ReCaptchaLoader.loadingState = null;\n ReCaptchaLoader.instance = null;\n ReCaptchaLoader.instanceSiteKey = null;\n ReCaptchaLoader.successfulLoadingConsumers = [];\n ReCaptchaLoader.errorLoadingRunnable = [];\n ReCaptchaLoader.SCRIPT_LOAD_DELAY = 25;\n return ReCaptchaLoader;\n}());\nexports.load = ReCaptchaLoader.load;\nexports.getInstance = ReCaptchaLoader.getInstance;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReCaptchaInstance = exports.getInstance = exports.load = void 0;\nvar ReCaptchaLoader_1 = require(\"./ReCaptchaLoader\");\nObject.defineProperty(exports, \"load\", { enumerable: true, get: function () { return ReCaptchaLoader_1.load; } });\nObject.defineProperty(exports, \"getInstance\", { enumerable: true, get: function () { return ReCaptchaLoader_1.getInstance; } });\nvar ReCaptchaInstance_1 = require(\"./ReCaptchaInstance\");\nObject.defineProperty(exports, \"ReCaptchaInstance\", { enumerable: true, get: function () { return ReCaptchaInstance_1.ReCaptchaInstance; } });\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useReCaptcha = exports.VueReCaptcha = void 0;\nvar recaptcha_v3_1 = require(\"recaptcha-v3\");\nvar vue_1 = require(\"vue\");\nvar VueReCaptchaInjectKey = Symbol('VueReCaptchaInjectKey');\nvar globalConfig = {\n loadedWaiters: [],\n error: null\n};\nexports.VueReCaptcha = {\n install: function (app, options) {\n var isLoaded = vue_1.ref(false);\n var instance = vue_1.ref(undefined);\n app.config.globalProperties.$recaptchaLoaded = recaptchaLoaded(isLoaded);\n initializeReCaptcha(options).then(function (wrapper) {\n isLoaded.value = true;\n instance.value = wrapper;\n app.config.globalProperties.$recaptcha = recaptcha(instance);\n app.config.globalProperties.$recaptchaInstance = instance;\n globalConfig.loadedWaiters.forEach(function (v) { return v.resolve(true); });\n }).catch(function (error) {\n globalConfig.error = error;\n globalConfig.loadedWaiters.forEach(function (v) { return v.reject(error); });\n });\n app.provide(VueReCaptchaInjectKey, {\n instance: instance,\n isLoaded: isLoaded,\n executeRecaptcha: recaptcha(instance),\n recaptchaLoaded: recaptchaLoaded(isLoaded)\n });\n }\n};\nfunction useReCaptcha() {\n return vue_1.inject(VueReCaptchaInjectKey);\n}\nexports.useReCaptcha = useReCaptcha;\nfunction initializeReCaptcha(options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, recaptcha_v3_1.load(options.siteKey, options.loaderOptions)];\n case 1: return [2, _a.sent()];\n }\n });\n });\n}\nfunction recaptchaLoaded(isLoaded) {\n return function () { return new Promise(function (resolve, reject) {\n if (globalConfig.error !== null) {\n return reject(globalConfig.error);\n }\n if (isLoaded.value) {\n return resolve(true);\n }\n globalConfig.loadedWaiters.push({ resolve: resolve, reject: reject });\n }); };\n}\nfunction recaptcha(instance) {\n var _this = this;\n return function (action) { return __awaiter(_this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4, ((_a = instance.value) === null || _a === void 0 ? void 0 : _a.execute(action))];\n case 1: return [2, _b.sent()];\n }\n });\n }); };\n}\n","import { h, createApp, markRaw } from 'vue';\nimport { appCreateI18n } from '@/i18n/setup';\nimport { initSentry } from '@/utils/sentry.js';\nimport { createHead } from '@vueuse/head';\nimport { createPinia } from \"pinia\";\nimport HideFooter from '@/directives/hideFooter.js';\nimport Contenteditable from '@/directives/contenteditable.js';\nimport openNewTab from '@/plugins/openNewTab.js';\nimport Dragscroll from '@/directives/dragscroll.js';\nimport { VueReCaptcha } from 'vue-recaptcha-v3';\n\nexport function initVueAppOnLoad(selector, component, beforeMount = async () => {}, deriveProps = async () => ({})) {\n const onLoad = async () => {\n const element = document.querySelector(selector);\n if (! element) return;\n\n const props = await deriveProps(element);\n\n const app = createApp({\n render: () => h(component, props),\n });\n const pinia = createPinia();\n\n app.use(createHead());\n app.use(appCreateI18n());\n await beforeMount(app, element);\n\n const router = app.config.globalProperties.$router;\n const user = JSON.parse(element.dataset.user ?? null);\n initSentry(app, router, user);\n\n pinia.use(({ store }) => {\n if (router) {\n store.router = markRaw(router);\n }\n })\n\n app.use(pinia);\n app.directive('hide-footer', HideFooter);\n app.directive('contenteditable', Contenteditable);\n app.directive('dragscroll', Dragscroll);\n app.use(openNewTab, {\n className: '.included-in-price-md a, .excluded-in-price-md a'\n });\n app.use(VueReCaptcha, { siteKey: RECAPTCHA_SITE_KEY });\n app.mount(selector);\n };\n\n document.addEventListener('DOMContentLoaded', onLoad);\n}\n"],"names":["policy","tt","val","unsafeToTrustedHTML","svgNS","mathmlNS","doc","templateContainer","nodeOps","child","parent","anchor","tag","namespace","is","props","el","text","node","selector","id","content","start","end","before","template","wrapper","TRANSITION","ANIMATION","vtcKey","DOMTransitionPropsValidators","TransitionPropsValidators","extend","BaseTransitionPropsValidators","decorate$1","t","Transition","slots","h","BaseTransition","resolveTransitionProps","callHook","hook","args","isArray","h2","hasExplicitCallback","rawProps","baseProps","key","name","type","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","normalizeDuration","enterDuration","leaveDuration","onBeforeEnter","onEnter","onEnterCancelled","onLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAppearCancelled","finishEnter","isAppear","done","isCancelled","removeTransitionClass","finishLeave","makeEnterHook","resolve","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","isObject","NumberOf","n","toNumber","cls","c","_vtc","cb","endId","expectedType","explicitTimeout","resolveIfNotStale","timeout","propCount","getTransitionInfo","endEvent","ended","onEnd","e","styles","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","d","i","toMs","s","patchClass","value","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","vShow","transition","setDisplay","oldValue","initVShowForSSR","CSS_VAR_TEXT","useCssVars","getter","instance","getCurrentInstance","updateTeleports","vars","setVarsOnNode","setVars","setVarsOnVNode","onBeforeUpdate","queuePostFlushCb","onMounted","watch","NOOP","ob","onUnmounted","vnode","suspense","Fragment","Static","style","cssText","displayRE","patchStyle","prev","next","isCssString","isString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","v","prefixed","autoPrefix","hyphenate","prefixes","prefixCache","rawName","cached","camelize","capitalize","xlinkNS","patchAttr","isBoolean","isSpecialBooleanAttr","includeBooleanAttr","isSymbol","patchDOMProp","parentComponent","attrName","newValue","needRemove","addEventListener","event","handler","options","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","m","cachedNow","p","getNow","initialValue","callWithAsyncErrorHandling","patchStopImmediatePropagation","originalStop","fn","e2","isNativeOn","patchProp","isOn","isModelListener","shouldSetAsProp","camelize$1","isFunction","REMOVAL","defineCustomElement","extraOptions","_createApp","Comp","defineComponent","isPlainObject","VueCustomElement","VueElement","initialProps","defineSSRCustomElement","createSSRApp","BaseClass","_def","_props","createApp","nextTick","mutations","def","isAsync","numberProps","opt","asyncDef","exposed","hasOwn","unref","declaredPropKeys","has","camelKey","shouldReflect","shouldUpdate","render","createVNode","dispatch","owner","nonce","slotName","outlets","scopeId","o","walker","comp","useHost","caller","useShadowRoot","useCssModule","EMPTY_OBJ","modules","mod","positionMap","newPositionMap","moveCbKey","enterCbKey","decorate","TransitionGroupImpl","state","useTransitionState","prevChildren","children","onUpdated","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","toRaw","cssTransitionProps","setTransitionHooks","resolveTransitionHooks","getTransitionRawChildren","TransitionGroup","oldPos","newPos","dx","dy","root","clone","container","getModelAssigner","invokeArrayFns","onCompositionStart","onCompositionEnd","target","assignKey","vModelText","lazy","trim","number","castToNumber","domValue","looseToNumber","elValue","vModelCheckbox","_","modelValue","elementValue","getValue","checked","assign","index","looseIndexOf","found","filtered","isSet","cloned","getCheckboxValue","setChecked","binding","looseEqual","vModelRadio","vModelSelect","isSetModel","selectedVal","setSelected","_binding","isMultiple","isArrayValue","l","option","optionValue","optionType","vModelDynamic","callModelHook","prevVNode","resolveDynamicModel","tagName","initVModelForSSR","modelToUse","systemModifiers","modifierGuards","modifiers","withModifiers","cache","cacheKey","guard","keyNames","withKeys","eventKey","k","rendererOptions","renderer","enabledHydration","ensureRenderer","createRenderer","ensureHydrationRenderer","createHydrationRenderer","hydrate","app","mount","containerOrSelector","normalizeContainer","component","proxy","resolveRootNamespace","ssrDirectiveInitialized","initDirectivesForSSR","compile","inBrowser","makeSymbol","shareable","generateFormatCacheKey","locale","source","friendlyJSONstringify","json","isNumber","isDate","toTypeString","isRegExp","isEmptyObject","_create","create","obj","_globalThis","getGlobalThis","escapeHtml","rawText","hasOwnProperty","isPromise","objectToString","toDisplayString","join","items","separator","str","item","warn","msg","err","isNotObjectOrIsArray","deepCopy","src","des","stack","createPosition","line","column","offset","createLocation","CompileErrorCodes","COMPILE_ERROR_CODES_EXTEND_POINT","createCompileError","code","loc","domain","messages","error","defaultOnError","CHAR_SP","CHAR_CR","CHAR_LF","CHAR_LS","CHAR_PS","createScanner","_buf","_index","_line","_column","_peekOffset","isCRLF","isLF","isPS","isLS","isLineEnd","peekOffset","charAt","currentChar","currentPeek","peek","reset","resetPeek","skipToPeek","EOF","DOT","LITERAL_DELIMITER","ERROR_DOMAIN$3","createTokenizer","location","_scnr","currentOffset","currentPosition","_initLoc","_initOffset","_context","context","onError","emitError","pos","ctx","getToken","token","getEndToken","eat","scnr","ch","peekSpaces","buf","skipSpaces","isIdentifierStart","cc","isNumberStart","isNamedIdentifierStart","currentType","ret","isListIdentifierStart","isLiteralStart","isLinkedDotStart","isLinkedModifierStart","isLinkedDelimiterStart","isLinkedReferStart","isTextStart","isPluralStart","hasSpace","takeChar","isIdentifier","takeIdentifierChar","isNamedIdentifier","takeNamedIdentifierChar","isDigit","takeDigit","isHexDigit","takeHexDigit","getDigits","num","readText","readNamedIdentifier","readListIdentifier","isLiteral","readLiteral","literal","readEscapeSequence","current","readUnicodeEscapeSequence","unicode","digits","sequence","isInvalidIdentifier","readInvalidIdentifier","identifiers","readLinkedModifier","readLinkedRefer","readPlural","plural","readTokenInPlaceholder","readTokenInLinked","validNamedIdentifier","validListIdentifier","validLiteral","readToken","nextToken","startLoc","endLoc","ERROR_DOMAIN$2","KNOWN_ESCAPES","fromEscapeSequence","match","codePoint4","codePoint6","codePoint","createParser","tokenzer","startNode","endNode","parseText","tokenizer","parseList","parseNamed","parseLiteral","parseLinkedModifier","getTokenCaption","parseLinkedKey","parseLinked","linkedNode","parsed","nextContext","emptyLinkedKeyNode","parseMessage","startOffset","endOffset","parsePlural","msgNode","hasEmptyMessage","parseResource","parse","createTransformer","ast","traverseNodes","nodes","transformer","traverseNode","transform","optimize","body","optimizeMessageNode","message","values","minify","resource","cases","valueNode","linked","list","named","createCodeGenerator","filename","breakLineCode","_needIndent","push","_newline","withBreakLine","_breakLineCode","indent","withNewLine","level","deindent","newline","generateLinkedNode","generator","helper","generateNode","generateMessageNode","needIndent","length","generatePluralNode","generateResource","generate","mode","helpers","map","baseCompile","assignedOptions","jit","enalbeMinify","enambeOptimize","initFeatureFlags","format","formatParts","resolveBody","createUnhandleNodeError","resolveType","resolveCases","formatMessageParts","PROPS_BODY","resolveProps","PROPS_CASES","static_","resolveStatic","resolveItems","acm","formatMessagePart","PROPS_STATIC","PROPS_ITEMS","resolveValue$1","modifier","resolveLinkedModifier","resolveLinkedKey","PROPS_TYPE","PROPS_VALUE","resolved","PROPS_MODIFIER","PROPS_KEY","defaultValue","prop","defaultOnCacheKey","compileCache","isMessageAST","detectError","baseCompile$1","devtools","setDevToolsHook","initI18nDevTools","i18n","version","meta","translateDevTools","createDevToolsHook","payloads","CoreErrorCodes","CORE_ERROR_CODES_EXTEND_POINT","createCoreError","getLocale","resolveLocale","_resolveLocale","fallbackWithSimple","fallback","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","chain","block","appendBlockToChain","defaults","blocks","follow","appendLocaleToChain","tokens","appendItemToChain","pathStateMachine","literalValueRE","exp","stripQuotes","a","b","getPathCharType","formatSubPath","path","trimmed","keys","subPathDepth","newChar","action","typeMap","actions","maybeUnescapeQuote","nextChar","resolveWithKeyValue","resolveValue","hit","len","last","VERSION","NOT_REOSLVED","MISSING_RESOLVE_VALUE","getDefaultLinkedModifiers","_compiler","registerMessageCompiler","compiler","_resolver","registerMessageResolver","resolver","_fallbacker","registerLocaleFallbacker","fallbacker","_additionalMeta","setAdditionalMeta","getAdditionalMeta","_fallbackContext","setFallbackContext","getFallbackContext","_cid","createCoreContext","onWarn","_locale","fallbackLocale","createResources","datetimeFormats","numberFormats","pluralRules","missing","missingWarn","fallbackWarn","fallbackFormat","unresolving","postTranslation","processor","warnHtmlMessage","escapeParameter","messageCompiler","messageResolver","localeFallbacker","fallbackContext","internalOptions","__datetimeFormatters","__numberFormatters","__meta","handleMissing","updateFallbackLocale","isAlmostSameLocale","compareLocale","isImplicitFallback","targetLocale","locales","datetime","overrides","parseDateTimeArgs","part","datetimeFormat","formatter","DATETIME_FORMAT_OPTIONS_KEYS","arg1","arg2","arg3","arg4","matches","dateTime","clearDateTimeFormat","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_MESSAGE_DATA_TYPE","DEFAULT_NORMALIZE","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","getPluralIndex","normalizeNamed","pluralIndex","createMessageContext","pluralRule","orgPluralRule","_list","_named","useLinked","_modifier","normalize","interpolate","NOOP_MESSAGE_FUNCTION","isMessageFunction","translate","parseTranslateArgs","resolvedMessage","defaultMsgOrKey","enableDefaultMsg","escapeParams","formatScope","resolveMessageFormat","cacheBaseKey","occurred","compileMessageFormat","ctxOptions","getMessageContextOptions","msgContext","messaged","evaluateMessage","missingRet","getCompileContext","msgCtx","I18nErrorCodes","createI18nError","TranslateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOptionSymbol","DisposeSymbol","handleFlatJson","subKeys","lastIndex","currentObj","hasStringValue","getLocaleMessages","__i18n","flatJson","custom","getComponentOptions","adjustI18nResources","gl","componentOptions","createTextNode","Text","DEVTOOLS_META","NOOP_RETURN_ARRAY","NOOP_RETURN_FALSE","composerID","defineCoreMissingHandler","getMetaInfo","createComposer","__root","__injectWithOption","_isGlobal","_ref","ref","shallowRef","_inheritLocale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_pluralRules","trackReactivityValues","computed","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","rt","translateVNode","numberParts","datetimeParts","setPluralRules","rules","te","getLocaleMessage","resolveMessages","targetLocaleMessages","messageValue","tm","setLocaleMessage","_message","mergeLocaleMessage","getDateTimeFormat","setDateTimeFormat","mergeDateTimeFormat","getNumberFormat","setNumberFormat","mergeNumberFormat","composer","baseFormatProps","getInterpolateArg","slot","arg","getFragmentableTag","TranslationImpl","attrs","useI18n","assignedAttrs","Translation","isVNode","renderFormatter","slotKeys","partFormatter","parts","NumberFormatImpl","NumberFormat","getComposer$1","i18nInternal","vueI18n","vTDirective","_process","parsedValue","parseValue","makeParams","textContent","apply","pluginOptions","DatetimeFormat","I18nInjectionKey","createI18n","__globalInjection","__instances","globalScope","__global","createGlobal","symbol","__getInstance","__setInstance","__deleteInstance","opts","globalReleaseHandler","injectGlobalFields","unmountApp","getI18nInstance","getGlobalComposer","scope","getScope","getComposer","composerOptions","setupLifeCycle","legacyMode","effectScope","inject","useComponent","getParentComponentInstance","_composer","dispose","globalExportProps","globalExportMethods","desc","wrap","isRef","method","DatetimeFormatImpl","en","ja","setDateTimeFormats","defaultLocale","appCreateI18n","currentLocale","Severity","SeverityLevels","forget","promise","setPrototypeOf","setProtoOf","mixinProperties","proto","SentryError","_super","__extends","_newTarget","_this","DSN_REGEX","isValidProtocol","protocol","dsnToString","dsn","withPassword","host","pass","port","projectId","publicKey","dsnFromString","_a","__read","_b","_c","lastPath","split","projectMatch","dsnFromComponents","components","validateDsn","isDebugBuild","requiredComponents","makeDsn","from","supportsFetch","getGlobalObject","isNativeFetch","func","supportsNativeFetch","global","result","sandbox","logger","supportsReferrerPolicy","supportsHistory","chrome","isChromePackagedApp","hasHistoryApi","handlers","instrumented","instrument","instrumentConsole","instrumentDOM","instrumentXHR","instrumentFetch","instrumentHistory","instrumentError","instrumentUnhandledRejection","addInstrumentationHandler","callback","triggerHandlers","data","e_1","__values","getFunctionName","e_1_1","fill","originalConsoleLevel","_i","originalFetch","handlerData","getFetchMethod","getFetchUrl","__assign","response","fetchArgs","isInstanceOf","xhrproto","originalOpen","xhr","url","xhrInfo","onreadystatechangeHandler","original","readyStateArgs","originalSend","lastHref","oldOnPopState","to","historyReplacementFunction","originalHistoryFunction","debounceDuration","debounceTimerID","lastCapturedEvent","shouldShortcircuitPreviousDebounce","previous","shouldSkipDOMEvent","makeDOMEventHandler","globalListener","triggerDOMHandler","globalDOMEventHandler","originalAddEventListener","listener","handlers_1","handlerForType","originalRemoveEventListener","handlers_2","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","makePromiseBuffer","limit","buffer","isReady","remove","task","add","taskProducer","rejectedSyncPromise","drain","SyncPromise","reject","counter","capturedSetTimeout","resolvedSyncPromise","isSupportedSeverity","severityFromString","eventStatusFromHttpCode","SENTRY_API_VERSION","initAPIDetails","metadata","tunnel","getBaseApiEndpoint","_getIngestEndpoint","_encodedAuth","urlEncode","getStoreEndpoint","getStoreEndpointWithUrlEncodedAuth","_getEnvelopeEndpoint","getEnvelopeEndpointWithUrlEncodedAuth","getReportDialogEndpoint","dsnLike","dialogOptions","endpoint","encodedOptions","installedIntegrations","filterDuplicates","integrations","acc","accIntegration","getIntegrationsToSetup","defaultIntegrations","__spread","userIntegrations","userIntegration","integrationsNames","alwaysLastToRun","setupIntegration","integration","addGlobalEventProcessor","getCurrentHub","setupIntegrations","addNonEnumerableProperty","ALREADY_SEEN_ERROR","BaseClient","backendClass","exception","hint","checkOrSetAlreadyCaught","eventId","promisedEvent","isPrimitive","session","clientFinished","transportFlushed","crashed","errored","exceptions","exceptions_1","exceptions_1_1","ex","mechanism","sessionNonTerminal","shouldUpdateAndSend","ticked","tick","interval","normalizeDepth","prepared","uuid4","dateTimestampInSeconds","finalScope","Scope","evt","depth","normalized","environment","release","dist","maxValueLength","truncate","request","integrationsArray","finalEvent","reason","beforeSend","sampleRate","transport","recordLostEvent","outcome","category","isTransaction","isInternalException","beforeSendResult","_ensureBeforeSendRv","processedEvent","rv","nullErr","isThenable","NoopTransport","BaseBackend","_exception","_hint","_level","getSdkMetadataForEnvelopeHeader","api","enhanceEventWithSdkInfo","sdkInfo","sessionToSentryRequest","envelopeHeaders","itemHeaders","eventToSentryRequest","eventType","useEnvelope","transactionSampling","samplingMethod","newErr","innerErr","req","envelope","initAndBind","clientClass","hub","client","SDK_VERSION","originalFunctionToString","FunctionToString","getOriginalFunction","DEFAULT_IGNORE_ERRORS","InboundFilters","_options","self","clientOptions","getEventDescription","pattern","isMatchingPattern","frames","frame","frames_1","UNKNOWN_FUNCTION","gecko","winjs","geckoEval","chromeEval","reactMinifiedRegexp","computeStackTrace","popSize","computeStackTraceFromStacktraceProp","popFrames","computeStackTraceFromStackProp","extractMessage","lines","isEval","submatch","element","isNative","extractSafariExtensionDetails","stacktrace","opera10Regex","opera11Regex","isSafariExtension","isSafariWebExtension","STACKTRACE_LIMIT","exceptionFromStacktrace","prepareFramesForEvent","eventFromPlainObject","syntheticException","rejection","isEvent","extractExceptionKeysForMessage","normalizeToSize","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","eventFromException","eventFromUnknownInput","addExceptionMechanism","eventFromMessage","eventFromString","isErrorEvent","errorEvent","isDOMError","isDOMException","domException","name_1","addExceptionTypeValue","isError","objectException","input","cachedFetchImpl","getNativeFetchImplementation","document","fetchImpl","contentWindow","sendReport","isRealNavigator","hasSendBeacon","sendBeacon","fetch_1","requestTypeToCategory","ty","tyStr","BaseTransport","outcomes","envelopeHeader","requestType","headers","status","limited","e_2","now","rlHeader","raHeader","_d","parameters","headerDelay","delay","_e","_f","e_2_1","parseRetryAfterHeader","FetchTransport","sentryRequest","originalPayload","XHRTransport","header","BrowserBackend","transportOptions","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","sentryWrapped","wrappedArguments","withScope","captureException","property","markFunctionWrapped","descriptor","injectReportDialog","script","injectionPoint","GlobalHandlers","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","installFunc","globalHandlerLog","getHubAndAttachStacktrace","attachStacktrace","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","addMechanismAndCapture","_eventFromRejectionWithPrimitive","ERROR_TYPES_RE","groups","ev","ev0","ev0s","ev0sf","colno","lineno","getLocationHref","DEFAULT_EVENT_TARGET","TryCatch","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","eventTarget","_wrapEventTarget","originalCallback","xmlHttpRequestProps","wrapOptions","originalFunction","eventName","wrappedEventHandler","originalEventHandler","Breadcrumbs","_consoleBreadcrumb","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","dom","_innerDomBreadcrumb","keyAttrs","htmlTreeAsString","breadcrumb","safeJoin","status_code","parsedLoc","parseUrl","parsedFrom","parsedTo","DEFAULT_KEY","DEFAULT_LIMIT","LinkedErrors","_handler","linkedErrors","_walkErrorTree","UserAgent","referrer","userAgent","Dedupe","currentEvent","_shouldDropEvent","previousEvent","_isSameMessageEvent","_isSameExceptionEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","previousException","_getExceptionFromEvent","currentException","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","BrowserClient","CoreIntegrations.InboundFilters","CoreIntegrations.FunctionToString","init","window_1","startSessionTracking","startSessionOnHub","window","DEFAULT_HOOKS","classifyRE","classify","ROOT_COMPONENT_NAME","ANONYMOUS_COMPONENT_NAME","repeat","res","formatComponentName","vm","includeFile","file","generateComponentTrace","tree","currentRecursiveSequence","formattedTree","attachErrorHandler","errorHandler","warnHandler","silent","lifecycleHook","componentName","trace","hasConsole","VUE_OP","HOOKS","getActiveTransaction","finishRootSpan","timestamp","createTracingMixins","hooks","mixins","_loop_1","operation","internalHooks","_loop_2","internalHook","isRoot","activeTransaction","shouldTrack","span","timestampInSeconds","internalHooks_1","internalHooks_1_1","hooks_1","hooks_1_1","DEFAULT_CONFIG","config","browserInit","apps","vueInit","vueRouterInstrumentation","router","startTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","isPageLoadNavigation","tags","TRACEPARENT_REGEXP","hasTracingEnabled","maybeOptions","extractTraceparentData","traceparent","parentSampled","maybeHub","msToSec","time","secToMs","registerErrorInstrumentation","errorCallback","status_1","FINISH_REASON_TAG","IDLE_TRANSACTION_FINISH_REASONS","SpanRecorder","maxlen","Span","spanContext","timestampWithMs","childSpan","httpStatus","spanStatus","spanStatusfromHttpCode","endTimestamp","sampledString","dropUndefinedKeys","Transaction","transactionContext","Hub","measurements","newMetadata","finishedSpans","transaction","hasMeasurements","SpanClass","DEFAULT_IDLE_TIMEOUT","HEARTBEAT_INTERVAL","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","IdleTransaction","_idleHub","_idleTimeout","_onScope","clearActiveTransaction","keepSpan","pushActivity","popActivity","spanId","end_1","heartbeatString","traceHeaders","sample","samplingContext","isValidSampleRate","rate","_startTransaction","customSamplingContext","startIdleTransaction","idleTimeout","onScope","_addTracingExtensions","carrier","getMainCarrier","_autoloadDatabaseIntegrations","packageToIntegrationMapping","dynamicRequire","mappedPackages","moduleName","loadModule","pkg","addExtensionMethods","isNodeEnv","registerBackgroundTabDetection","statusType","bindReporter","metric","reportAllChanges","forceReport","generateUniqueID","initMetric","observe","po","onHidden","once","onHiddenOrPageHide","getCLS","onReport","report","sessionValue","sessionEntries","entryHandler","entry","firstSessionEntry","lastSessionEntry","firstHiddenTime","initHiddenTime","trackChanges","timeStamp","getVisibilityWatcher","getFID","visibilityWatcher","reportedMetricIDs","getLCP","stopListening_1","MetricsInstrumentation","_reportAllChanges","browserPerformanceTimeOrigin","timeOrigin","responseStartTimestamp","requestStartTimestamp","startTime","addNavigationSpans","startTimestamp","addMeasureSpans","firstHidden","shouldRecord","resourceName","addResourceSpans","timeOrigin_1","measurementTimestamp","normalizedValue","delta","_startChild","tagMetricInfo","navigator","connection","isMeasurementValue","addPerformanceNavigationTiming","addRequest","measureStartTimestamp","measureEndTimestamp","description","eventEnd","__rest","lcpEntry","clsEntry","DEFAULT_TRACING_ORIGINS","defaultRequestInstrumentationOptions","instrumentOutgoingRequests","traceFetch","traceXHR","tracingOrigins","shouldCreateSpanForRequest","urlMap","defaultShouldCreateSpan","origins","origin","shouldCreateSpan","spans","fetchCallback","xhrCallback","instrumentRoutingWithDefaults","customStartTransaction","startingUrl","DEFAULT_MAX_TRANSACTION_DURATION_SECONDS","DEFAULT_BROWSER_TRACING_OPTIONS","BrowserTracing","_metricOptions","instrumentRouting","markBackgroundTransactions","beforeNavigate","maxTransactionDuration","parentContextFromHeader","getHeaderContext","expandedContext","modifiedContext","finalContext","idleTransaction","adjustTransactionDuration","getMetaContent","metaName","maxDuration","diff","isOutdatedTransaction","initSentry","user","metaTagContent","traceOptions","Sentry.vueRouterInstrumentation","Sentry.setUser","Sentry.init","Integrations.BrowserTracing","TagsWithInnerContent","HasElementTags","ValidHeadTags","UniqueTags","TagConfigKeys","IsBrowser","hashCode","hashTag","thenable","thenFn","normaliseTag","normalizedProps","normaliseProps","normaliseStyleClassProps","sep","v2","nestedNormaliseProps","virtual","startIndex","isDataKey","resolvedProps","TagEntityBits","nestedNormaliseEntryTags","headTags","tagPromises","normaliseEntryTags","NetworkEvents","TAG_WEIGHTS","TAG_ALIASES","tagWeight","priority","weight","SortModifiers","allowedMetaProperties","tagDedupeKey","sepSub","sub","isJson","dotIndex","sepSubRe","processTemplateParams","decoded","hasSepSub","re","resolveTitleTemplate","title","renderDOMHead","head","beforeRenderCtx","takenDedupeKeys","dedupeKey","track","trackCtx","$el","isAttrTag","ck","propIndex","k2","pending","frag","shouldRender","debouncedRenderDOMHead","fn2","DomPlugin","initialPayload","head2","flatHooks","configHooks","parentName","subHook","defaultTask","function_","_createTask","createTask","serialTaskCaller","hookFunction","parallelTaskCaller","callEachWith","callbacks","arg0","Hookable","originalName","dep","_unreg","_function","arguments_","deprecated","_hooks","deprecatedHooks","removeFns","unreg","createHooks","UsesMergeStrategy","DedupePlugin","generatedKey","dedupe","deduping","dupedTag","strategy","oldProps","newTags","dupes","ValidEventTags","EventHandlersPlugin","dataset","ek","DupeableTags","HashKeyedPlugin","PayloadPlugin","payload","hasPayload","SortPlugin","prefix","position","tag2","aWeight","bWeight","SupportedAttrs","contentAttrs","TemplateParamsPlugin","templateParams","params","TitleTemplatePlugin","titleTag","titleTemplateTag","newTitle","XSSPlugin","activeHead","createHead","createHeadCore","filterMode","ssr","updated","entryCount","entries","plugins","plugin","p2","entryOptions","input2","resolveCtx","tagCtx","getActiveHead","Vue3","resolveUnref","r","resolveUnrefHeadInput","VueReactivityPlugin","headSymbol","vueInstall","createHead$1","_global","globalKey","injectHead","useHead","clientUseHead","deactivated","resolvedInput","watchEffect","onBeforeUnmount","onDeactivated","onActivated","polyfillAsVueUseHead","polyfilled","initHeadObject","unhead","activePinia","setActivePinia","pinia","piniaSymbol","MutationType","createPinia","_p","toBeInstalled","markRaw","noop","addSubscription","subscriptions","detached","onCleanup","removeSubscription","idx","getCurrentScope","onScopeDispose","triggerSubscriptions","fallbackRunWithContext","ACTION_MARKER","ACTION_NAME","mergeReactiveObjects","patchToApply","subPatch","targetValue","isReactive","skipHydrateSymbol","shouldHydrate","isComputed","createOptionsStore","hot","getters","initialState","store","setup","localState","toRefs","computedGetters","createSetupStore","$id","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","actionSubscriptions","debuggerEvents","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","$reset","newState","$state","$dispose","wrappedAction","afterCallbackList","onErrorCallbackList","after","partialStore","stopWatcher","reactive","setupStore","actionValue","extender","defineStore","setupOptions","isSetupStore","useStore","hasContext","hasInjectionContext","storeToRefs","rawStore","refs","toRef","HideFooter","LIBVERSION","UA_MAX_LENGTH","USER_AGENT","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","UA_BROWSER","UA_CPU","UA_DEVICE","UA_ENGINE","UA_OS","UA_RESULT","NAME","TYPE","VENDOR","ARCHITECTURE","MAJOR","MODEL","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","XR","EMBEDDED","INAPP","BRANDS","FORMFACTORS","FULLVERLIST","PLATFORM","PLATFORMVER","BITNESS","CH_HEADER","CH_HEADER_FULL_VER_LIST","CH_HEADER_ARCH","CH_HEADER_BITNESS","CH_HEADER_FORM_FACTORS","CH_HEADER_MOBILE","CH_HEADER_MODEL","CH_HEADER_PLATFORM","CH_HEADER_PLATFORM_VER","CH_ALL_VALUES","AMAZON","APPLE","ASUS","BLACKBERRY","GOOGLE","HUAWEI","LENOVO","HONOR","LG","MICROSOFT","MOTOROLA","NVIDIA","ONEPLUS","OPPO","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","CHROME","CHROMIUM","CHROMECAST","EDGE","FIREFOX","OPERA","FACEBOOK","SOGOU","PREFIX_MOBILE","SUFFIX_BROWSER","WINDOWS","isWindow","NAVIGATOR","NAVIGATOR_UADATA","defaultRgx","extensions","mergedRgx","extraRgx","isExtensions","j","enumerize","arr","enums","str1","str2","lowerize","deep","itemListToArray","strip","majorize","setProps","propName","rgxMapper","ua","arrays","q","regex","strMapper","windowsVersionMap","formFactorsMap","defaultRegexes","defaultProps","createIData","itemType","init_props","is_ignoreProps","is_ignoreRgx","toString_props","IData","UACHData","strToCheck","that","IDataResolve","resolveData","uach","isHttpUACH","UAItem","rgxMap","uaCH","detect","brands","prevName","brandName","brandVersion","archName","reParse","ff","osName","osVersion","UAParser","kv","httpUACH","regexMap","createItemFunc","uap","sleep","ms","useBrowser","isChrome","isFirefox","isSafari","Contenteditable","openNewTab","OpenLink","computedWithControl","trigger","dirty","update","get","set","customRef","_track","_trigger","tryOnScopeDispose","createEventHook","fns","off","offFn","createGlobalState","stateFactory","initialized","localProvidedStateMap","injectLocal","provideLocal","localProvidedState","provide","createInjectionState","composable","isClient","notNullish","toString","isIOS","getIsIOS","toRef$1","readonly","refAutoReset","afterMs","toValue$1","timer","resetAfter","createFilterWrapper","filter","bypassFilter","invoke","debounceFilter","maxTimer","lastRejector","_clearTimeout","timer2","lastInvoker","throttleFilter","lastExec","isLeading","lastValue","trailing","leading","rejectOnCancel","clear","_invoke","elapsed","pausableFilter","extendFilter","isActive","pause","resume","eventFilter","promiseTimeout","throwOnTimeout","createSingletonPromise","_promise","_prev","increaseWithUnit","unit","pxValue","px","toArray","getLifeCycleTarget","useDebounceFn","useThrottleFn","watchWithFilter","watchOptions","watchPausable","syncRef","left","right","flush","immediate","direction","watchers","transformLTR","transformRTL","w","objectRef","toRefs$1","copy","newObject","tryOnMounted","sync","tryOnUnmounted","createUntil","isNot","toMatch","condition","stop","promises","toBe","v1","toBeTruthy","toBeNull","toBeUndefined","toBeNaN","toContains","array","changed","changedTimes","count","until","useIntervalFn","immediateCallback","clean","intervalValue","stopWatch","useTimeoutFn","isPending","watchDebounced","debounce","maxWait","watchDeep","watchIgnorable","filteredCb","ignoreUpdates","ignorePrevAsyncUpdates","ignore","updater","disposables","ignoreCounter","syncCounter","syncCounterPrev","watchImmediate","watchOnce","defaultWindow","defaultDocument","defaultNavigator","unrefElement","elRef","plain","toValue","useEventListener","cleanups","cleanup","register","firstParamTargets","test","raw_targets","raw_events","raw_listeners","raw_options","optionsClone","_iOSWorkaround","onClickOutside","capture","detectIframe","controls","listenerOptions","shouldListen","shouldIgnore","target2","hasMultipleRoots","checkMultipleRoots","isProcessingClick","useMounted","isMounted","useSupported","useMutationObserver","mutationOptions","observer","isSupported","targets","targets2","takeRecords","createKeyPredicate","keyFilter","onKeyStroke","passive","predicate","useRafFn","fpsLimit","intervalLimit","previousFrameTimestamp","rafId","loop","useAsyncState","onSuccess","resetOnExecute","shallow","throwError","isLoading","execute","delay2","shell","waitUntilIsLoaded","onFulfilled","onRejected","ssrWidthSymbol","useSSRWidth","ssrWidth","useMediaQuery","query","ssrSupport","mediaQuery","queryStrings","queryString","not","minWidth","maxWidth","useBreakpoints","breakpoints","mounted","size","greaterOrEqual","smallerOrEqual","shortcutMethods","shortcuts","points","bps","usePermission","permissionDesc","permissionStatus","useClipboard","read","copiedDuring","legacy","isClipboardApiSupported","permissionRead","permissionWrite","copied","updateText","useLegacy","isAllowed","legacyRead","legacyCopy","ta","getHandlers","getSSRHandler","guessSerializerType","rawInit","StorageSerializers","customStorageEventName","useStorage","storage","listenToStorageChanges","writeDefaults","mergeDefaults","initOnMounted","keyComputed","_a2","serializer","pauseWatch","resumeWatch","pausableWatch","write","updateFromCustomEvent","dispatchWriteEvent","serialized","rawValue","useCssVar","variable","updateCssVar","old","raw_prop","useCurrentElement","rootComponent","currentElement","useDraggable","pointerTypes","preventDefault","stopPropagation","exact","onMove","onStart","axis","draggingElement","containerElement","draggingHandle","buttons","pressedDelta","filterEvent","handleEvent","containerRect","targetRect","move","x","y","useDropZone","isOverDropZone","files","isValid","multiple","preventDefaultForUnhandled","getFiles","_b2","checkDataTypes","types","dataTypes","allowedType","checkValidity","dataTypesValid","multipleFilesValid","handleDragEvent","dataTransferItemList","currentFiles","useResizeObserver","observerOptions","_targets","els","_el","useElementBounding","windowResize","windowScroll","updateTiming","height","bottom","top","width","recalculate","rect","ele","useElementSize","initialSize","box","stop1","boxSize","$elem","formatBoxSize","inlineSize","blockSize","stop2","useIntersectionObserver","rootMargin","threshold","_target","root2","useElementVisibility","scrollTarget","elementIsVisible","intersectionObserverEntries","isIntersecting","latestTime","DEFAULT_OPTIONS","prepareInitialFiles","dt","useFileDialog","onChange","changeTrigger","onCancel","cancelTrigger","open","localOptions","loadImage","img","srcset","sizes","clazz","loading","crossorigin","referrerPolicy","decoding","fetchPriority","ismap","usemap","useImage","asyncStateOptions","resolveElement","ARRIVED_STATE_THRESHOLD_PIXELS","useScroll","throttle","idle","onStop","onScroll","eventListenerOptions","behavior","internalX","internalY","x2","scrollTo","y2","_x","_y","_element","scrollContainer","isScrolling","arrivedState","directions","onScrollEnd","onScrollEndDebounced","setArrivedState","display","flexDirection","directionMultipler","scrollLeft","scrollTop","onScrollHandler","useInfiniteScroll","onLoadMore","canLoadMore","observedElement","isElementVisible","checkAndLoad","scrollHeight","clientHeight","scrollWidth","clientWidth","isNarrower","usingElRef","timeRangeToArray","timeRanges","ranges","tracksToArray","tracks","label","kind","language","activeCues","cues","inBandMetadataTrackDispatchType","defaultOptions","useMediaControls","currentTime","seeking","volume","waiting","playing","stalled","buffered","selectedTrack","isPictureInPicture","muted","supportsPictureInPicture","sourceErrorEvent","playbackErrorEvent","disableTrack","enableTrack","disableTracks","togglePictureInPicture","sources","src2","media","textTracks","isDefault","srcLang","ignoreCurrentTimeUpdates","ignorePlayingUpdates","isPlaying","listeners","UseMouseBuiltinExtractors","useMouse","touch","resetOnTouchEnds","scroll","_prevMouseEvent","_prevScrollX","_prevScrollY","sourceType","extractor","mouseHandler","touchHandler","scrollHandler","mouseHandlerWrapper","touchHandlerWrapper","scrollHandlerWrapper","useMouseInElement","handleOutside","targetRef","elementX","elementY","elementPositionX","elementPositionY","elementHeight","elementWidth","isOutside","elX","elY","useObjectUrl","object","useParentElement","parentElement","useScriptTag","onLoaded","manual","async","crossOrigin","noModule","defer","scriptTag","loadScript","waitForScriptLoad","resolveWithElement","el2","shouldAppend","load","unload","checkOverflowScroll","rawEvent","elInitialOverflow","useScrollLock","isLocked","stopTouchMoveListener","initialOverflow","lock","unlock","_id","useStyleTag","css","isLoaded","cssRef","useSwipe","onSwipe","onSwipeEnd","onSwipeStart","coordsStart","coordsEnd","diffX","diffY","max","abs","isThresholdExceeded","isSwiping","getTouchEventCoords","updateCoordsStart","updateCoordsEnd","onTouchEnd","stops","tryRequestAnimationFrame","useTextareaAutosize","textarea","styleProp","textareaScrollHeight","textareaOldWidth","triggerResize","_styleTarget","contentRect","useTimeoutPoll","useWindowFocus","focused","useWindowScroll","rest","useWindowSize","initialWidth","initialHeight","listenOrientation","includeScrollbar","visualViewportWidth","visualViewportHeight","scale","Dragscroll","dragging","startX","startY","onMouseDown","onMouseMove","onMouseUpOrLeave","__awaiter","this","thisArg","_arguments","P","adopt","fulfilled","step","rejected","__generator","f","g","verb","op","ReCaptchaInstance_1","ReCaptchaInstance","siteKey","recaptchaID","recaptcha","ReCaptchaLoader_1","require$$0","ELoadingState","ReCaptchaLoader","loader","widgetID","useRecaptchaNet","useEnterprise","renderParameters","customUrl","scriptElement","scriptBase","parametersQuery","parameterKeys","parameterKey","grecaptcha","isEnterprise","augmentedParameters","exports","require$$1","ReCaptchaVuePlugin","useReCaptcha_1","VueReCaptcha","recaptcha_v3_1","vue_1","VueReCaptchaInjectKey","globalConfig","recaptchaLoaded","initializeReCaptcha","useReCaptcha","initVueAppOnLoad","beforeMount","deriveProps","onLoad"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,74,75,76,77,78,79,80,81,82,84,88,89,91,92,93,94]}