@htmlbricks/hb-tooltip 0.62.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.iife.js","sources":["../../../node_modules/svelte/src/internal/disclose-version.js","../../../node_modules/svelte/src/constants.js","../../../node_modules/esm-env/false.js","../../../node_modules/svelte/src/internal/shared/utils.js","../../../node_modules/svelte/src/internal/client/constants.js","../../../node_modules/svelte/src/internal/shared/errors.js","../../../node_modules/svelte/src/internal/client/errors.js","../../../node_modules/svelte/src/internal/client/warnings.js","../../../node_modules/svelte/src/internal/client/dom/hydration.js","../../../node_modules/svelte/src/internal/client/reactivity/equality.js","../../../node_modules/svelte/src/internal/flags/index.js","../../../node_modules/svelte/src/internal/client/context.js","../../../node_modules/svelte/src/internal/client/dom/task.js","../../../node_modules/svelte/src/internal/client/error-handling.js","../../../node_modules/svelte/src/internal/client/reactivity/batch.js","../../../node_modules/svelte/src/reactivity/create-subscriber.js","../../../node_modules/svelte/src/internal/client/dom/blocks/boundary.js","../../../node_modules/svelte/src/internal/client/reactivity/deriveds.js","../../../node_modules/svelte/src/internal/client/reactivity/sources.js","../../../node_modules/svelte/src/internal/client/proxy.js","../../../node_modules/svelte/src/internal/client/dom/operations.js","../../../node_modules/svelte/src/internal/client/dom/elements/bindings/shared.js","../../../node_modules/svelte/src/internal/client/reactivity/effects.js","../../../node_modules/svelte/src/internal/client/runtime.js","../../../node_modules/svelte/src/internal/client/dom/elements/events.js","../../../node_modules/svelte/src/internal/client/dom/reconciler.js","../../../node_modules/svelte/src/internal/client/dom/template.js","../../../node_modules/svelte/src/utils.js","../../../node_modules/svelte/src/internal/client/render.js","../../../node_modules/svelte/src/index-client.js","../../../node_modules/svelte/src/internal/client/dom/blocks/slot.js","../../../node_modules/svelte/src/internal/client/dom/css.js","../../../node_modules/svelte/src/internal/client/reactivity/props.js","../../../node_modules/svelte/src/legacy/legacy-client.js","../../../node_modules/svelte/src/internal/client/dom/elements/custom-element.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper-lite.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../node_modules/bootstrap/dist/js/bootstrap.esm.js","../../../src/wc/tooltip/component.wc.svelte"],"sourcesContent":["import { PUBLIC_VERSION } from '../version.js';\n\nif (typeof window !== 'undefined') {\n\t// @ts-expect-error\n\t((window.__svelte ??= {}).v ??= new Set()).add(PUBLIC_VERSION);\n}\n","export const EACH_ITEM_REACTIVE = 1;\nexport const EACH_INDEX_REACTIVE = 1 << 1;\n/** See EachBlock interface metadata.is_controlled for an explanation what this is */\nexport const EACH_IS_CONTROLLED = 1 << 2;\nexport const EACH_IS_ANIMATED = 1 << 3;\nexport const EACH_ITEM_IMMUTABLE = 1 << 4;\n\nexport const PROPS_IS_IMMUTABLE = 1;\nexport const PROPS_IS_RUNES = 1 << 1;\nexport const PROPS_IS_UPDATED = 1 << 2;\nexport const PROPS_IS_BINDABLE = 1 << 3;\nexport const PROPS_IS_LAZY_INITIAL = 1 << 4;\n\nexport const TRANSITION_IN = 1;\nexport const TRANSITION_OUT = 1 << 1;\nexport const TRANSITION_GLOBAL = 1 << 2;\n\nexport const TEMPLATE_FRAGMENT = 1;\nexport const TEMPLATE_USE_IMPORT_NODE = 1 << 1;\nexport const TEMPLATE_USE_SVG = 1 << 2;\nexport const TEMPLATE_USE_MATHML = 1 << 3;\n\nexport const HYDRATION_START = '[';\n/** used to indicate that an `{:else}...` block was rendered */\nexport const HYDRATION_START_ELSE = '[!';\nexport const HYDRATION_END = ']';\nexport const HYDRATION_ERROR = {};\n\nexport const ELEMENT_IS_NAMESPACED = 1;\nexport const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1;\nexport const ELEMENT_IS_INPUT = 1 << 2;\n\nexport const UNINITIALIZED = Symbol();\n\n// Dev-time component properties\nexport const FILENAME = Symbol('filename');\nexport const HMR = Symbol('hmr');\n\nexport const NAMESPACE_HTML = 'http://www.w3.org/1999/xhtml';\nexport const NAMESPACE_SVG = 'http://www.w3.org/2000/svg';\nexport const NAMESPACE_MATHML = 'http://www.w3.org/1998/Math/MathML';\n\n// we use a list of ignorable runtime warnings because not every runtime warning\n// can be ignored and we want to keep the validation for svelte-ignore in place\nexport const IGNORABLE_RUNTIME_WARNINGS = /** @type {const} */ ([\n\t'await_waterfall',\n\t'await_reactivity_loss',\n\t'state_snapshot_uncloneable',\n\t'binding_property_non_reactive',\n\t'hydration_attribute_changed',\n\t'hydration_html_changed',\n\t'ownership_invalid_binding',\n\t'ownership_invalid_mutation'\n]);\n\n/**\n * Whitespace inside one of these elements will not result in\n * a whitespace node being created in any circumstances. (This\n * list is almost certainly very incomplete)\n * TODO this is currently unused\n */\nexport const ELEMENTS_WITHOUT_TEXT = ['audio', 'datalist', 'dl', 'optgroup', 'select', 'video'];\n\nexport const ATTACHMENT_KEY = '@attach';\n","export default false;\n","// Store the references to globals in case someone tries to monkey patch these, causing the below\n// to de-opt (this occurs often when using popular extensions).\nexport var is_array = Array.isArray;\nexport var index_of = Array.prototype.indexOf;\nexport var array_from = Array.from;\nexport var object_keys = Object.keys;\nexport var define_property = Object.defineProperty;\nexport var get_descriptor = Object.getOwnPropertyDescriptor;\nexport var get_descriptors = Object.getOwnPropertyDescriptors;\nexport var object_prototype = Object.prototype;\nexport var array_prototype = Array.prototype;\nexport var get_prototype_of = Object.getPrototypeOf;\nexport var is_extensible = Object.isExtensible;\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\nexport const noop = () => {};\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n\n/**\n * @template [T=any]\n * @param {any} value\n * @returns {value is PromiseLike<T>}\n */\nexport function is_promise(value) {\n\treturn typeof value?.then === 'function';\n}\n\n/** @param {Function} fn */\nexport function run(fn) {\n\treturn fn();\n}\n\n/** @param {Array<() => void>} arr */\nexport function run_all(arr) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tarr[i]();\n\t}\n}\n\n/**\n * TODO replace with Promise.withResolvers once supported widely enough\n * @template T\n */\nexport function deferred() {\n\t/** @type {(value: T) => void} */\n\tvar resolve;\n\n\t/** @type {(reason: any) => void} */\n\tvar reject;\n\n\t/** @type {Promise<T>} */\n\tvar promise = new Promise((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\n\t// @ts-expect-error\n\treturn { promise, resolve, reject };\n}\n\n/**\n * @template V\n * @param {V} value\n * @param {V | (() => V)} fallback\n * @param {boolean} [lazy]\n * @returns {V}\n */\nexport function fallback(value, fallback, lazy = false) {\n\treturn value === undefined\n\t\t? lazy\n\t\t\t? /** @type {() => V} */ (fallback)()\n\t\t\t: /** @type {V} */ (fallback)\n\t\t: value;\n}\n\n/**\n * When encountering a situation like `let [a, b, c] = $derived(blah())`,\n * we need to stash an intermediate value that `a`, `b`, and `c` derive\n * from, in case it's an iterable\n * @template T\n * @param {ArrayLike<T> | Iterable<T>} value\n * @param {number} [n]\n * @returns {Array<T>}\n */\nexport function to_array(value, n) {\n\t// return arrays unchanged\n\tif (Array.isArray(value)) {\n\t\treturn value;\n\t}\n\n\t// if value is not iterable, or `n` is unspecified (indicates a rest\n\t// element, which means we're not concerned about unbounded iterables)\n\t// convert to an array with `Array.from`\n\tif (n === undefined || !(Symbol.iterator in value)) {\n\t\treturn Array.from(value);\n\t}\n\n\t// otherwise, populate an array with `n` values\n\n\t/** @type {T[]} */\n\tconst array = [];\n\n\tfor (const element of value) {\n\t\tarray.push(element);\n\t\tif (array.length === n) break;\n\t}\n\n\treturn array;\n}\n","// General flags\nexport const DERIVED = 1 << 1;\nexport const EFFECT = 1 << 2;\nexport const RENDER_EFFECT = 1 << 3;\nexport const BLOCK_EFFECT = 1 << 4;\nexport const BRANCH_EFFECT = 1 << 5;\nexport const ROOT_EFFECT = 1 << 6;\nexport const BOUNDARY_EFFECT = 1 << 7;\n/**\n * Indicates that a reaction is connected to an effect root — either it is an effect,\n * or it is a derived that is depended on by at least one effect. If a derived has\n * no dependents, we can disconnect it from the graph, allowing it to either be\n * GC'd or reconnected later if an effect comes to depend on it again\n */\nexport const CONNECTED = 1 << 9;\nexport const CLEAN = 1 << 10;\nexport const DIRTY = 1 << 11;\nexport const MAYBE_DIRTY = 1 << 12;\nexport const INERT = 1 << 13;\nexport const DESTROYED = 1 << 14;\n\n// Flags exclusive to effects\n/** Set once an effect that should run synchronously has run */\nexport const EFFECT_RAN = 1 << 15;\n/**\n * 'Transparent' effects do not create a transition boundary.\n * This is on a block effect 99% of the time but may also be on a branch effect if its parent block effect was pruned\n */\nexport const EFFECT_TRANSPARENT = 1 << 16;\nexport const EAGER_EFFECT = 1 << 17;\nexport const HEAD_EFFECT = 1 << 18;\nexport const EFFECT_PRESERVED = 1 << 19;\nexport const USER_EFFECT = 1 << 20;\n\n// Flags exclusive to deriveds\n/**\n * Tells that we marked this derived and its reactions as visited during the \"mark as (maybe) dirty\"-phase.\n * Will be lifted during execution of the derived and during checking its dirty state (both are necessary\n * because a derived might be checked but not executed).\n */\nexport const WAS_MARKED = 1 << 15;\n\n// Flags used for async\nexport const REACTION_IS_UPDATING = 1 << 21;\nexport const ASYNC = 1 << 22;\n\nexport const ERROR_VALUE = 1 << 23;\n\nexport const STATE_SYMBOL = Symbol('$state');\nexport const LEGACY_PROPS = Symbol('legacy props');\nexport const LOADING_ATTR_SYMBOL = Symbol('');\nexport const PROXY_PATH_SYMBOL = Symbol('proxy path');\n\n/** allow users to ignore aborted signal errors if `reason.name === 'StaleReactionError` */\nexport const STALE_REACTION = new (class StaleReactionError extends Error {\n\tname = 'StaleReactionError';\n\tmessage = 'The reaction that called `getAbortSignal()` was re-run or destroyed';\n})();\n\nexport const ELEMENT_NODE = 1;\nexport const TEXT_NODE = 3;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\n/**\n * Cannot use `{@render children(...)}` if the parent component uses `let:` directives. Consider using a named snippet instead\n * @returns {never}\n */\nexport function invalid_default_snippet() {\n\tif (DEV) {\n\t\tconst error = new Error(`invalid_default_snippet\\nCannot use \\`{@render children(...)}\\` if the parent component uses \\`let:\\` directives. Consider using a named snippet instead\\nhttps://svelte.dev/e/invalid_default_snippet`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invalid_default_snippet`);\n\t}\n}\n\n/**\n * A snippet function was passed invalid arguments. Snippets should only be instantiated via `{@render ...}`\n * @returns {never}\n */\nexport function invalid_snippet_arguments() {\n\tif (DEV) {\n\t\tconst error = new Error(`invalid_snippet_arguments\\nA snippet function was passed invalid arguments. Snippets should only be instantiated via \\`{@render ...}\\`\\nhttps://svelte.dev/e/invalid_snippet_arguments`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invalid_snippet_arguments`);\n\t}\n}\n\n/**\n * `%name%(...)` can only be used during component initialisation\n * @param {string} name\n * @returns {never}\n */\nexport function lifecycle_outside_component(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`lifecycle_outside_component\\n\\`${name}(...)\\` can only be used during component initialisation\\nhttps://svelte.dev/e/lifecycle_outside_component`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/lifecycle_outside_component`);\n\t}\n}\n\n/**\n * Context was not set in a parent component\n * @returns {never}\n */\nexport function missing_context() {\n\tif (DEV) {\n\t\tconst error = new Error(`missing_context\\nContext was not set in a parent component\\nhttps://svelte.dev/e/missing_context`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/missing_context`);\n\t}\n}\n\n/**\n * Attempted to render a snippet without a `{@render}` block. This would cause the snippet code to be stringified instead of its content being rendered to the DOM. To fix this, change `{snippet}` to `{@render snippet()}`.\n * @returns {never}\n */\nexport function snippet_without_render_tag() {\n\tif (DEV) {\n\t\tconst error = new Error(`snippet_without_render_tag\\nAttempted to render a snippet without a \\`{@render}\\` block. This would cause the snippet code to be stringified instead of its content being rendered to the DOM. To fix this, change \\`{snippet}\\` to \\`{@render snippet()}\\`.\\nhttps://svelte.dev/e/snippet_without_render_tag`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/snippet_without_render_tag`);\n\t}\n}\n\n/**\n * `%name%` is not a store with a `subscribe` method\n * @param {string} name\n * @returns {never}\n */\nexport function store_invalid_shape(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`store_invalid_shape\\n\\`${name}\\` is not a store with a \\`subscribe\\` method\\nhttps://svelte.dev/e/store_invalid_shape`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/store_invalid_shape`);\n\t}\n}\n\n/**\n * The `this` prop on `<svelte:element>` must be a string, if defined\n * @returns {never}\n */\nexport function svelte_element_invalid_this_value() {\n\tif (DEV) {\n\t\tconst error = new Error(`svelte_element_invalid_this_value\\nThe \\`this\\` prop on \\`<svelte:element>\\` must be a string, if defined\\nhttps://svelte.dev/e/svelte_element_invalid_this_value`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/svelte_element_invalid_this_value`);\n\t}\n}","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\nexport * from '../shared/errors.js';\n\n/**\n * Cannot create a `$derived(...)` with an `await` expression outside of an effect tree\n * @returns {never}\n */\nexport function async_derived_orphan() {\n\tif (DEV) {\n\t\tconst error = new Error(`async_derived_orphan\\nCannot create a \\`$derived(...)\\` with an \\`await\\` expression outside of an effect tree\\nhttps://svelte.dev/e/async_derived_orphan`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/async_derived_orphan`);\n\t}\n}\n\n/**\n * Using `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\n * @returns {never}\n */\nexport function bind_invalid_checkbox_value() {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_invalid_checkbox_value\\nUsing \\`bind:value\\` together with a checkbox input is not allowed. Use \\`bind:checked\\` instead\\nhttps://svelte.dev/e/bind_invalid_checkbox_value`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_invalid_checkbox_value`);\n\t}\n}\n\n/**\n * Component %component% has an export named `%key%` that a consumer component is trying to access using `bind:%key%`, which is disallowed. Instead, use `bind:this` (e.g. `<%name% bind:this={component} />`) and then access the property on the bound component instance (e.g. `component.%key%`)\n * @param {string} component\n * @param {string} key\n * @param {string} name\n * @returns {never}\n */\nexport function bind_invalid_export(component, key, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_invalid_export\\nComponent ${component} has an export named \\`${key}\\` that a consumer component is trying to access using \\`bind:${key}\\`, which is disallowed. Instead, use \\`bind:this\\` (e.g. \\`<${name} bind:this={component} />\\`) and then access the property on the bound component instance (e.g. \\`component.${key}\\`)\\nhttps://svelte.dev/e/bind_invalid_export`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_invalid_export`);\n\t}\n}\n\n/**\n * A component is attempting to bind to a non-bindable property `%key%` belonging to %component% (i.e. `<%name% bind:%key%={...}>`). To mark a property as bindable: `let { %key% = $bindable() } = $props()`\n * @param {string} key\n * @param {string} component\n * @param {string} name\n * @returns {never}\n */\nexport function bind_not_bindable(key, component, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_not_bindable\\nA component is attempting to bind to a non-bindable property \\`${key}\\` belonging to ${component} (i.e. \\`<${name} bind:${key}={...}>\\`). To mark a property as bindable: \\`let { ${key} = $bindable() } = $props()\\`\\nhttps://svelte.dev/e/bind_not_bindable`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_not_bindable`);\n\t}\n}\n\n/**\n * Calling `%method%` on a component instance (of %component%) is no longer valid in Svelte 5\n * @param {string} method\n * @param {string} component\n * @returns {never}\n */\nexport function component_api_changed(method, component) {\n\tif (DEV) {\n\t\tconst error = new Error(`component_api_changed\\nCalling \\`${method}\\` on a component instance (of ${component}) is no longer valid in Svelte 5\\nhttps://svelte.dev/e/component_api_changed`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/component_api_changed`);\n\t}\n}\n\n/**\n * Attempted to instantiate %component% with `new %name%`, which is no longer valid in Svelte 5. If this component is not under your control, set the `compatibility.componentApi` compiler option to `4` to keep it working.\n * @param {string} component\n * @param {string} name\n * @returns {never}\n */\nexport function component_api_invalid_new(component, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`component_api_invalid_new\\nAttempted to instantiate ${component} with \\`new ${name}\\`, which is no longer valid in Svelte 5. If this component is not under your control, set the \\`compatibility.componentApi\\` compiler option to \\`4\\` to keep it working.\\nhttps://svelte.dev/e/component_api_invalid_new`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/component_api_invalid_new`);\n\t}\n}\n\n/**\n * A derived value cannot reference itself recursively\n * @returns {never}\n */\nexport function derived_references_self() {\n\tif (DEV) {\n\t\tconst error = new Error(`derived_references_self\\nA derived value cannot reference itself recursively\\nhttps://svelte.dev/e/derived_references_self`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/derived_references_self`);\n\t}\n}\n\n/**\n * Keyed each block has duplicate key `%value%` at indexes %a% and %b%\n * @param {string} a\n * @param {string} b\n * @param {string | undefined | null} [value]\n * @returns {never}\n */\nexport function each_key_duplicate(a, b, value) {\n\tif (DEV) {\n\t\tconst error = new Error(`each_key_duplicate\\n${value\n\t\t\t? `Keyed each block has duplicate key \\`${value}\\` at indexes ${a} and ${b}`\n\t\t\t: `Keyed each block has duplicate key at indexes ${a} and ${b}`}\\nhttps://svelte.dev/e/each_key_duplicate`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/each_key_duplicate`);\n\t}\n}\n\n/**\n * `%rune%` cannot be used inside an effect cleanup function\n * @param {string} rune\n * @returns {never}\n */\nexport function effect_in_teardown(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_in_teardown\\n\\`${rune}\\` cannot be used inside an effect cleanup function\\nhttps://svelte.dev/e/effect_in_teardown`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_in_teardown`);\n\t}\n}\n\n/**\n * Effect cannot be created inside a `$derived` value that was not itself created inside an effect\n * @returns {never}\n */\nexport function effect_in_unowned_derived() {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_in_unowned_derived\\nEffect cannot be created inside a \\`$derived\\` value that was not itself created inside an effect\\nhttps://svelte.dev/e/effect_in_unowned_derived`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_in_unowned_derived`);\n\t}\n}\n\n/**\n * `%rune%` can only be used inside an effect (e.g. during component initialisation)\n * @param {string} rune\n * @returns {never}\n */\nexport function effect_orphan(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_orphan\\n\\`${rune}\\` can only be used inside an effect (e.g. during component initialisation)\\nhttps://svelte.dev/e/effect_orphan`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_orphan`);\n\t}\n}\n\n/**\n * `$effect.pending()` can only be called inside an effect or derived\n * @returns {never}\n */\nexport function effect_pending_outside_reaction() {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_pending_outside_reaction\\n\\`$effect.pending()\\` can only be called inside an effect or derived\\nhttps://svelte.dev/e/effect_pending_outside_reaction`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_pending_outside_reaction`);\n\t}\n}\n\n/**\n * Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state\n * @returns {never}\n */\nexport function effect_update_depth_exceeded() {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_update_depth_exceeded\\nMaximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state\\nhttps://svelte.dev/e/effect_update_depth_exceeded`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_update_depth_exceeded`);\n\t}\n}\n\n/**\n * Cannot use `fork(...)` unless the `experimental.async` compiler option is `true`\n * @returns {never}\n */\nexport function experimental_async_fork() {\n\tif (DEV) {\n\t\tconst error = new Error(`experimental_async_fork\\nCannot use \\`fork(...)\\` unless the \\`experimental.async\\` compiler option is \\`true\\`\\nhttps://svelte.dev/e/experimental_async_fork`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/experimental_async_fork`);\n\t}\n}\n\n/**\n * Cannot use `flushSync` inside an effect\n * @returns {never}\n */\nexport function flush_sync_in_effect() {\n\tif (DEV) {\n\t\tconst error = new Error(`flush_sync_in_effect\\nCannot use \\`flushSync\\` inside an effect\\nhttps://svelte.dev/e/flush_sync_in_effect`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/flush_sync_in_effect`);\n\t}\n}\n\n/**\n * Cannot commit a fork that was already discarded\n * @returns {never}\n */\nexport function fork_discarded() {\n\tif (DEV) {\n\t\tconst error = new Error(`fork_discarded\\nCannot commit a fork that was already discarded\\nhttps://svelte.dev/e/fork_discarded`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/fork_discarded`);\n\t}\n}\n\n/**\n * Cannot create a fork inside an effect or when state changes are pending\n * @returns {never}\n */\nexport function fork_timing() {\n\tif (DEV) {\n\t\tconst error = new Error(`fork_timing\\nCannot create a fork inside an effect or when state changes are pending\\nhttps://svelte.dev/e/fork_timing`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/fork_timing`);\n\t}\n}\n\n/**\n * `getAbortSignal()` can only be called inside an effect or derived\n * @returns {never}\n */\nexport function get_abort_signal_outside_reaction() {\n\tif (DEV) {\n\t\tconst error = new Error(`get_abort_signal_outside_reaction\\n\\`getAbortSignal()\\` can only be called inside an effect or derived\\nhttps://svelte.dev/e/get_abort_signal_outside_reaction`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`);\n\t}\n}\n\n/**\n * Failed to hydrate the application\n * @returns {never}\n */\nexport function hydration_failed() {\n\tif (DEV) {\n\t\tconst error = new Error(`hydration_failed\\nFailed to hydrate the application\\nhttps://svelte.dev/e/hydration_failed`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/hydration_failed`);\n\t}\n}\n\n/**\n * Could not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`\n * @returns {never}\n */\nexport function invalid_snippet() {\n\tif (DEV) {\n\t\tconst error = new Error(`invalid_snippet\\nCould not \\`{@render}\\` snippet due to the expression being \\`null\\` or \\`undefined\\`. Consider using optional chaining \\`{@render snippet?.()}\\`\\nhttps://svelte.dev/e/invalid_snippet`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invalid_snippet`);\n\t}\n}\n\n/**\n * `%name%(...)` cannot be used in runes mode\n * @param {string} name\n * @returns {never}\n */\nexport function lifecycle_legacy_only(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`lifecycle_legacy_only\\n\\`${name}(...)\\` cannot be used in runes mode\\nhttps://svelte.dev/e/lifecycle_legacy_only`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/lifecycle_legacy_only`);\n\t}\n}\n\n/**\n * Cannot do `bind:%key%={undefined}` when `%key%` has a fallback value\n * @param {string} key\n * @returns {never}\n */\nexport function props_invalid_value(key) {\n\tif (DEV) {\n\t\tconst error = new Error(`props_invalid_value\\nCannot do \\`bind:${key}={undefined}\\` when \\`${key}\\` has a fallback value\\nhttps://svelte.dev/e/props_invalid_value`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/props_invalid_value`);\n\t}\n}\n\n/**\n * Rest element properties of `$props()` such as `%property%` are readonly\n * @param {string} property\n * @returns {never}\n */\nexport function props_rest_readonly(property) {\n\tif (DEV) {\n\t\tconst error = new Error(`props_rest_readonly\\nRest element properties of \\`$props()\\` such as \\`${property}\\` are readonly\\nhttps://svelte.dev/e/props_rest_readonly`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/props_rest_readonly`);\n\t}\n}\n\n/**\n * The `%rune%` rune is only available inside `.svelte` and `.svelte.js/ts` files\n * @param {string} rune\n * @returns {never}\n */\nexport function rune_outside_svelte(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`rune_outside_svelte\\nThe \\`${rune}\\` rune is only available inside \\`.svelte\\` and \\`.svelte.js/ts\\` files\\nhttps://svelte.dev/e/rune_outside_svelte`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/rune_outside_svelte`);\n\t}\n}\n\n/**\n * `setContext` must be called when a component first initializes, not in a subsequent effect or after an `await` expression\n * @returns {never}\n */\nexport function set_context_after_init() {\n\tif (DEV) {\n\t\tconst error = new Error(`set_context_after_init\\n\\`setContext\\` must be called when a component first initializes, not in a subsequent effect or after an \\`await\\` expression\\nhttps://svelte.dev/e/set_context_after_init`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/set_context_after_init`);\n\t}\n}\n\n/**\n * Property descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\n * @returns {never}\n */\nexport function state_descriptors_fixed() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_descriptors_fixed\\nProperty descriptors defined on \\`$state\\` objects must contain \\`value\\` and always be \\`enumerable\\`, \\`configurable\\` and \\`writable\\`.\\nhttps://svelte.dev/e/state_descriptors_fixed`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_descriptors_fixed`);\n\t}\n}\n\n/**\n * Cannot set prototype of `$state` object\n * @returns {never}\n */\nexport function state_prototype_fixed() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_prototype_fixed\\nCannot set prototype of \\`$state\\` object\\nhttps://svelte.dev/e/state_prototype_fixed`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_prototype_fixed`);\n\t}\n}\n\n/**\n * Updating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\n * @returns {never}\n */\nexport function state_unsafe_mutation() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_unsafe_mutation\\nUpdating state inside \\`$derived(...)\\`, \\`$inspect(...)\\` or a template expression is forbidden. If the value should not be reactive, declare it without \\`$state\\`\\nhttps://svelte.dev/e/state_unsafe_mutation`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_unsafe_mutation`);\n\t}\n}\n\n/**\n * A `<svelte:boundary>` `reset` function cannot be called while an error is still being handled\n * @returns {never}\n */\nexport function svelte_boundary_reset_onerror() {\n\tif (DEV) {\n\t\tconst error = new Error(`svelte_boundary_reset_onerror\\nA \\`<svelte:boundary>\\` \\`reset\\` function cannot be called while an error is still being handled\\nhttps://svelte.dev/e/svelte_boundary_reset_onerror`);\n\n\t\terror.name = 'Svelte error';\n\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`);\n\t}\n}","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * Assignment to `%property%` property (%location%) will evaluate to the right-hand side, not the value of `%property%` following the assignment. This may result in unexpected behaviour.\n * @param {string} property\n * @param {string} location\n */\nexport function assignment_value_stale(property, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] assignment_value_stale\\n%cAssignment to \\`${property}\\` property (${location}) will evaluate to the right-hand side, not the value of \\`${property}\\` following the assignment. This may result in unexpected behaviour.\\nhttps://svelte.dev/e/assignment_value_stale`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/assignment_value_stale`);\n\t}\n}\n\n/**\n * Detected reactivity loss when reading `%name%`. This happens when state is read in an async function after an earlier `await`\n * @param {string} name\n */\nexport function await_reactivity_loss(name) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] await_reactivity_loss\\n%cDetected reactivity loss when reading \\`${name}\\`. This happens when state is read in an async function after an earlier \\`await\\`\\nhttps://svelte.dev/e/await_reactivity_loss`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/await_reactivity_loss`);\n\t}\n}\n\n/**\n * An async derived, `%name%` (%location%) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\n * @param {string} name\n * @param {string} location\n */\nexport function await_waterfall(name, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] await_waterfall\\n%cAn async derived, \\`${name}\\` (${location}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app\\nhttps://svelte.dev/e/await_waterfall`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/await_waterfall`);\n\t}\n}\n\n/**\n * `%binding%` (%location%) is binding to a non-reactive property\n * @param {string} binding\n * @param {string | undefined | null} [location]\n */\nexport function binding_property_non_reactive(binding, location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] binding_property_non_reactive\\n%c${location\n\t\t\t\t? `\\`${binding}\\` (${location}) is binding to a non-reactive property`\n\t\t\t\t: `\\`${binding}\\` is binding to a non-reactive property`}\\nhttps://svelte.dev/e/binding_property_non_reactive`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/binding_property_non_reactive`);\n\t}\n}\n\n/**\n * Your `console.%method%` contained `$state` proxies. Consider using `$inspect(...)` or `$state.snapshot(...)` instead\n * @param {string} method\n */\nexport function console_log_state(method) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] console_log_state\\n%cYour \\`console.${method}\\` contained \\`$state\\` proxies. Consider using \\`$inspect(...)\\` or \\`$state.snapshot(...)\\` instead\\nhttps://svelte.dev/e/console_log_state`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/console_log_state`);\n\t}\n}\n\n/**\n * %handler% should be a function. Did you mean to %suggestion%?\n * @param {string} handler\n * @param {string} suggestion\n */\nexport function event_handler_invalid(handler, suggestion) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] event_handler_invalid\\n%c${handler} should be a function. Did you mean to ${suggestion}?\\nhttps://svelte.dev/e/event_handler_invalid`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/event_handler_invalid`);\n\t}\n}\n\n/**\n * The `%attribute%` attribute on `%html%` changed its value between server and client renders. The client value, `%value%`, will be ignored in favour of the server value\n * @param {string} attribute\n * @param {string} html\n * @param {string} value\n */\nexport function hydration_attribute_changed(attribute, html, value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydration_attribute_changed\\n%cThe \\`${attribute}\\` attribute on \\`${html}\\` changed its value between server and client renders. The client value, \\`${value}\\`, will be ignored in favour of the server value\\nhttps://svelte.dev/e/hydration_attribute_changed`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_attribute_changed`);\n\t}\n}\n\n/**\n * The value of an `{@html ...}` block %location% changed between server and client renders. The client value will be ignored in favour of the server value\n * @param {string | undefined | null} [location]\n */\nexport function hydration_html_changed(location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] hydration_html_changed\\n%c${location\n\t\t\t\t? `The value of an \\`{@html ...}\\` block ${location} changed between server and client renders. The client value will be ignored in favour of the server value`\n\t\t\t\t: 'The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value'}\\nhttps://svelte.dev/e/hydration_html_changed`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_html_changed`);\n\t}\n}\n\n/**\n * Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near %location%\n * @param {string | undefined | null} [location]\n */\nexport function hydration_mismatch(location) {\n\tif (DEV) {\n\t\tconsole.warn(\n\t\t\t`%c[svelte] hydration_mismatch\\n%c${location\n\t\t\t\t? `Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}`\n\t\t\t\t: 'Hydration failed because the initial UI does not match what was rendered on the server'}\\nhttps://svelte.dev/e/hydration_mismatch`,\n\t\t\tbold,\n\t\t\tnormal\n\t\t);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_mismatch`);\n\t}\n}\n\n/**\n * The `render` function passed to `createRawSnippet` should return HTML for a single element\n */\nexport function invalid_raw_snippet_render() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] invalid_raw_snippet_render\\n%cThe \\`render\\` function passed to \\`createRawSnippet\\` should return HTML for a single element\\nhttps://svelte.dev/e/invalid_raw_snippet_render`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/invalid_raw_snippet_render`);\n\t}\n}\n\n/**\n * Detected a migrated `$:` reactive block in `%filename%` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an `$effect`.\n * @param {string} filename\n */\nexport function legacy_recursive_reactive_block(filename) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] legacy_recursive_reactive_block\\n%cDetected a migrated \\`$:\\` reactive block in \\`${filename}\\` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an \\`$effect\\`.\\nhttps://svelte.dev/e/legacy_recursive_reactive_block`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/legacy_recursive_reactive_block`);\n\t}\n}\n\n/**\n * Tried to unmount a component that was not mounted\n */\nexport function lifecycle_double_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] lifecycle_double_unmount\\n%cTried to unmount a component that was not mounted\\nhttps://svelte.dev/e/lifecycle_double_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/lifecycle_double_unmount`);\n\t}\n}\n\n/**\n * %parent% passed property `%prop%` to %child% with `bind:`, but its parent component %owner% did not declare `%prop%` as a binding. Consider creating a binding between %owner% and %parent% (e.g. `bind:%prop%={...}` instead of `%prop%={...}`)\n * @param {string} parent\n * @param {string} prop\n * @param {string} child\n * @param {string} owner\n */\nexport function ownership_invalid_binding(parent, prop, child, owner) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_binding\\n%c${parent} passed property \\`${prop}\\` to ${child} with \\`bind:\\`, but its parent component ${owner} did not declare \\`${prop}\\` as a binding. Consider creating a binding between ${owner} and ${parent} (e.g. \\`bind:${prop}={...}\\` instead of \\`${prop}={...}\\`)\\nhttps://svelte.dev/e/ownership_invalid_binding`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_binding`);\n\t}\n}\n\n/**\n * Mutating unbound props (`%name%`, at %location%) is strongly discouraged. Consider using `bind:%prop%={...}` in %parent% (or using a callback) instead\n * @param {string} name\n * @param {string} location\n * @param {string} prop\n * @param {string} parent\n */\nexport function ownership_invalid_mutation(name, location, prop, parent) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_mutation\\n%cMutating unbound props (\\`${name}\\`, at ${location}) is strongly discouraged. Consider using \\`bind:${prop}={...}\\` in ${parent} (or using a callback) instead\\nhttps://svelte.dev/e/ownership_invalid_mutation`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_mutation`);\n\t}\n}\n\n/**\n * The `value` property of a `<select multiple>` element should be an array, but it received a non-array value. The selection will be kept as is.\n */\nexport function select_multiple_invalid_value() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] select_multiple_invalid_value\\n%cThe \\`value\\` property of a \\`<select multiple>\\` element should be an array, but it received a non-array value. The selection will be kept as is.\\nhttps://svelte.dev/e/select_multiple_invalid_value`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/select_multiple_invalid_value`);\n\t}\n}\n\n/**\n * Reactive `$state(...)` proxies and the values they proxy have different identities. Because of this, comparisons with `%operator%` will produce unexpected results\n * @param {string} operator\n */\nexport function state_proxy_equality_mismatch(operator) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_equality_mismatch\\n%cReactive \\`$state(...)\\` proxies and the values they proxy have different identities. Because of this, comparisons with \\`${operator}\\` will produce unexpected results\\nhttps://svelte.dev/e/state_proxy_equality_mismatch`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`);\n\t}\n}\n\n/**\n * Tried to unmount a state proxy, rather than a component\n */\nexport function state_proxy_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_unmount\\n%cTried to unmount a state proxy, rather than a component\\nhttps://svelte.dev/e/state_proxy_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_unmount`);\n\t}\n}\n\n/**\n * A `<svelte:boundary>` `reset` function only resets the boundary the first time it is called\n */\nexport function svelte_boundary_reset_noop() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] svelte_boundary_reset_noop\\n%cA \\`<svelte:boundary>\\` \\`reset\\` function only resets the boundary the first time it is called\\nhttps://svelte.dev/e/svelte_boundary_reset_noop`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`);\n\t}\n}\n\n/**\n * The `slide` transition does not work correctly for elements with `display: %value%`\n * @param {string} value\n */\nexport function transition_slide_display(value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] transition_slide_display\\n%cThe \\`slide\\` transition does not work correctly for elements with \\`display: ${value}\\`\\nhttps://svelte.dev/e/transition_slide_display`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/transition_slide_display`);\n\t}\n}","/** @import { TemplateNode } from '#client' */\n\nimport { COMMENT_NODE } from '#client/constants';\nimport {\n\tHYDRATION_END,\n\tHYDRATION_ERROR,\n\tHYDRATION_START,\n\tHYDRATION_START_ELSE\n} from '../../../constants.js';\nimport * as w from '../warnings.js';\nimport { get_next_sibling } from './operations.js';\n\n/**\n * Use this variable to guard everything related to hydration code so it can be treeshaken out\n * if the user doesn't use the `hydrate` method and these code paths are therefore not needed.\n */\nexport let hydrating = false;\n\n/** @param {boolean} value */\nexport function set_hydrating(value) {\n\thydrating = value;\n}\n\n/**\n * The node that is currently being hydrated. This starts out as the first node inside the opening\n * <!--[--> comment, and updates each time a component calls `$.child(...)` or `$.sibling(...)`.\n * When entering a block (e.g. `{#if ...}`), `hydrate_node` is the block opening comment; by the\n * time we leave the block it is the closing comment, which serves as the block's anchor.\n * @type {TemplateNode}\n */\nexport let hydrate_node;\n\n/** @param {TemplateNode} node */\nexport function set_hydrate_node(node) {\n\tif (node === null) {\n\t\tw.hydration_mismatch();\n\t\tthrow HYDRATION_ERROR;\n\t}\n\n\treturn (hydrate_node = node);\n}\n\nexport function hydrate_next() {\n\treturn set_hydrate_node(/** @type {TemplateNode} */ (get_next_sibling(hydrate_node)));\n}\n\n/** @param {TemplateNode} node */\nexport function reset(node) {\n\tif (!hydrating) return;\n\n\t// If the node has remaining siblings, something has gone wrong\n\tif (get_next_sibling(hydrate_node) !== null) {\n\t\tw.hydration_mismatch();\n\t\tthrow HYDRATION_ERROR;\n\t}\n\n\thydrate_node = node;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n */\nexport function hydrate_template(template) {\n\tif (hydrating) {\n\t\t// @ts-expect-error TemplateNode doesn't include DocumentFragment, but it's actually fine\n\t\thydrate_node = template.content;\n\t}\n}\n\nexport function next(count = 1) {\n\tif (hydrating) {\n\t\tvar i = count;\n\t\tvar node = hydrate_node;\n\n\t\twhile (i--) {\n\t\t\tnode = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\t}\n\n\t\thydrate_node = node;\n\t}\n}\n\n/**\n * Skips or removes (depending on {@link remove}) all nodes starting at `hydrate_node` up until the next hydration end comment\n * @param {boolean} remove\n */\nexport function skip_nodes(remove = true) {\n\tvar depth = 0;\n\tvar node = hydrate_node;\n\n\twhile (true) {\n\t\tif (node.nodeType === COMMENT_NODE) {\n\t\t\tvar data = /** @type {Comment} */ (node).data;\n\n\t\t\tif (data === HYDRATION_END) {\n\t\t\t\tif (depth === 0) return node;\n\t\t\t\tdepth -= 1;\n\t\t\t} else if (data === HYDRATION_START || data === HYDRATION_START_ELSE) {\n\t\t\t\tdepth += 1;\n\t\t\t}\n\t\t}\n\n\t\tvar next = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\tif (remove) node.remove();\n\t\tnode = next;\n\t}\n}\n\n/**\n *\n * @param {TemplateNode} node\n */\nexport function read_hydration_instruction(node) {\n\tif (!node || node.nodeType !== COMMENT_NODE) {\n\t\tw.hydration_mismatch();\n\t\tthrow HYDRATION_ERROR;\n\t}\n\n\treturn /** @type {Comment} */ (node).data;\n}\n","/** @import { Equals } from '#client' */\n\n/** @type {Equals} */\nexport function equals(value) {\n\treturn value === this.v;\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function safe_not_equal(a, b) {\n\treturn a != a\n\t\t? b == b\n\t\t: a !== b || (a !== null && typeof a === 'object') || typeof a === 'function';\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function not_equal(a, b) {\n\treturn a !== b;\n}\n\n/** @type {Equals} */\nexport function safe_equals(value) {\n\treturn !safe_not_equal(value, this.v);\n}\n","/** True if experimental.async=true */\nexport let async_mode_flag = false;\n/** True if we're not certain that we only have Svelte 5 code in the compilation */\nexport let legacy_mode_flag = false;\n/** True if $inspect.trace is used */\nexport let tracing_mode_flag = false;\n\nexport function enable_async_mode_flag() {\n\tasync_mode_flag = true;\n}\n\n/** ONLY USE THIS DURING TESTING */\nexport function disable_async_mode_flag() {\n\tasync_mode_flag = false;\n}\n\nexport function enable_legacy_mode_flag() {\n\tlegacy_mode_flag = true;\n}\n\nexport function enable_tracing_mode_flag() {\n\ttracing_mode_flag = true;\n}\n","/** @import { ComponentContext, DevStackEntry, Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport * as e from './errors.js';\nimport { active_effect, active_reaction } from './runtime.js';\nimport { create_user_effect } from './reactivity/effects.js';\nimport { async_mode_flag, legacy_mode_flag } from '../flags/index.js';\nimport { FILENAME } from '../../constants.js';\nimport { BRANCH_EFFECT, EFFECT_RAN } from './constants.js';\n\n/** @type {ComponentContext | null} */\nexport let component_context = null;\n\n/** @param {ComponentContext | null} context */\nexport function set_component_context(context) {\n\tcomponent_context = context;\n}\n\n/** @type {DevStackEntry | null} */\nexport let dev_stack = null;\n\n/** @param {DevStackEntry | null} stack */\nexport function set_dev_stack(stack) {\n\tdev_stack = stack;\n}\n\n/**\n * Execute a callback with a new dev stack entry\n * @param {() => any} callback - Function to execute\n * @param {DevStackEntry['type']} type - Type of block/component\n * @param {any} component - Component function\n * @param {number} line - Line number\n * @param {number} column - Column number\n * @param {Record<string, any>} [additional] - Any additional properties to add to the dev stack entry\n * @returns {any}\n */\nexport function add_svelte_meta(callback, type, component, line, column, additional) {\n\tconst parent = dev_stack;\n\n\tdev_stack = {\n\t\ttype,\n\t\tfile: component[FILENAME],\n\t\tline,\n\t\tcolumn,\n\t\tparent,\n\t\t...additional\n\t};\n\n\ttry {\n\t\treturn callback();\n\t} finally {\n\t\tdev_stack = parent;\n\t}\n}\n\n/**\n * The current component function. Different from current component context:\n * ```html\n * <!-- App.svelte -->\n * <Foo>\n * <Bar /> <!-- context == Foo.svelte, function == App.svelte -->\n * </Foo>\n * ```\n * @type {ComponentContext['function']}\n */\nexport let dev_current_component_function = null;\n\n/** @param {ComponentContext['function']} fn */\nexport function set_dev_current_component_function(fn) {\n\tdev_current_component_function = fn;\n}\n\n/**\n * Returns a `[get, set]` pair of functions for working with context in a type-safe way.\n *\n * `get` will throw an error if no parent component called `set`.\n *\n * @template T\n * @returns {[() => T, (context: T) => T]}\n * @since 5.40.0\n */\nexport function createContext() {\n\tconst key = {};\n\n\treturn [\n\t\t() => {\n\t\t\tif (!hasContext(key)) {\n\t\t\t\te.missing_context();\n\t\t\t}\n\n\t\t\treturn getContext(key);\n\t\t},\n\t\t(context) => setContext(key, context)\n\t];\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * [`createContext`](https://svelte.dev/docs/svelte/svelte#createContext) is a type-safe alternative.\n *\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\tconst context_map = get_or_init_context_map('getContext');\n\tconst result = /** @type {T} */ (context_map.get(key));\n\treturn result;\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * [`createContext`](https://svelte.dev/docs/svelte/svelte#createContext) is a type-safe alternative.\n *\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tconst context_map = get_or_init_context_map('setContext');\n\n\tif (async_mode_flag) {\n\t\tvar flags = /** @type {Effect} */ (active_effect).f;\n\t\tvar valid =\n\t\t\t!active_reaction &&\n\t\t\t(flags & BRANCH_EFFECT) !== 0 &&\n\t\t\t// pop() runs synchronously, so this indicates we're setting context after an await\n\t\t\t!(/** @type {ComponentContext} */ (component_context).i);\n\n\t\tif (!valid) {\n\t\t\te.set_context_after_init();\n\t\t}\n\t}\n\n\tcontext_map.set(key, context);\n\treturn context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\tconst context_map = get_or_init_context_map('hasContext');\n\treturn context_map.has(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\tconst context_map = get_or_init_context_map('getAllContexts');\n\treturn /** @type {T} */ (context_map);\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {any} runes\n * @param {Function} [fn]\n * @returns {void}\n */\nexport function push(props, runes = false, fn) {\n\tcomponent_context = {\n\t\tp: component_context,\n\t\ti: false,\n\t\tc: null,\n\t\te: null,\n\t\ts: props,\n\t\tx: null,\n\t\tl: legacy_mode_flag && !runes ? { s: null, u: null, $: [] } : null\n\t};\n\n\tif (DEV) {\n\t\t// component function\n\t\tcomponent_context.function = fn;\n\t\tdev_current_component_function = fn;\n\t}\n}\n\n/**\n * @template {Record<string, any>} T\n * @param {T} [component]\n * @returns {T}\n */\nexport function pop(component) {\n\tvar context = /** @type {ComponentContext} */ (component_context);\n\tvar effects = context.e;\n\n\tif (effects !== null) {\n\t\tcontext.e = null;\n\n\t\tfor (var fn of effects) {\n\t\t\tcreate_user_effect(fn);\n\t\t}\n\t}\n\n\tif (component !== undefined) {\n\t\tcontext.x = component;\n\t}\n\n\tcontext.i = true;\n\n\tcomponent_context = context.p;\n\n\tif (DEV) {\n\t\tdev_current_component_function = component_context?.function ?? null;\n\t}\n\n\treturn component ?? /** @type {T} */ ({});\n}\n\n/** @returns {boolean} */\nexport function is_runes() {\n\treturn !legacy_mode_flag || (component_context !== null && component_context.l === null);\n}\n\n/**\n * @param {string} name\n * @returns {Map<unknown, unknown>}\n */\nfunction get_or_init_context_map(name) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component(name);\n\t}\n\n\treturn (component_context.c ??= new Map(get_parent_context(component_context) || undefined));\n}\n\n/**\n * @param {ComponentContext} component_context\n * @returns {Map<unknown, unknown> | null}\n */\nfunction get_parent_context(component_context) {\n\tlet parent = component_context.p;\n\twhile (parent !== null) {\n\t\tconst context_map = parent.c;\n\t\tif (context_map !== null) {\n\t\t\treturn context_map;\n\t\t}\n\t\tparent = parent.p;\n\t}\n\treturn null;\n}\n","import { run_all } from '../../shared/utils.js';\nimport { is_flushing_sync } from '../reactivity/batch.js';\n\n/** @type {Array<() => void>} */\nlet micro_tasks = [];\n\nfunction run_micro_tasks() {\n\tvar tasks = micro_tasks;\n\tmicro_tasks = [];\n\trun_all(tasks);\n}\n\n/**\n * @param {() => void} fn\n */\nexport function queue_micro_task(fn) {\n\tif (micro_tasks.length === 0 && !is_flushing_sync) {\n\t\tvar tasks = micro_tasks;\n\t\tqueueMicrotask(() => {\n\t\t\t// If this is false, a flushSync happened in the meantime. Do _not_ run new scheduled microtasks in that case\n\t\t\t// as the ordering of microtasks would be broken at that point - consider this case:\n\t\t\t// - queue_micro_task schedules microtask A to flush task X\n\t\t\t// - synchronously after, flushSync runs, processing task X\n\t\t\t// - synchronously after, some other microtask B is scheduled, but not through queue_micro_task but for example a Promise.resolve() in user code\n\t\t\t// - synchronously after, queue_micro_task schedules microtask C to flush task Y\n\t\t\t// - one tick later, microtask A now resolves, flushing task Y before microtask B, which is incorrect\n\t\t\t// This if check prevents that race condition (that realistically will only happen in tests)\n\t\t\tif (tasks === micro_tasks) run_micro_tasks();\n\t\t});\n\t}\n\n\tmicro_tasks.push(fn);\n}\n\n/**\n * Synchronously run any queued tasks.\n */\nexport function flush_tasks() {\n\twhile (micro_tasks.length > 0) {\n\t\trun_micro_tasks();\n\t}\n}\n","/** @import { Derived, Effect } from '#client' */\n/** @import { Boundary } from './dom/blocks/boundary.js' */\nimport { DEV } from 'esm-env';\nimport { FILENAME } from '../../constants.js';\nimport { is_firefox } from './dom/operations.js';\nimport { ERROR_VALUE, BOUNDARY_EFFECT, EFFECT_RAN } from './constants.js';\nimport { define_property, get_descriptor } from '../shared/utils.js';\nimport { active_effect, active_reaction } from './runtime.js';\n\nconst adjustments = new WeakMap();\n\n/**\n * @param {unknown} error\n */\nexport function handle_error(error) {\n\tvar effect = active_effect;\n\n\t// for unowned deriveds, don't throw until we read the value\n\tif (effect === null) {\n\t\t/** @type {Derived} */ (active_reaction).f |= ERROR_VALUE;\n\t\treturn error;\n\t}\n\n\tif (DEV && error instanceof Error && !adjustments.has(error)) {\n\t\tadjustments.set(error, get_adjustments(error, effect));\n\t}\n\n\tif ((effect.f & EFFECT_RAN) === 0) {\n\t\t// if the error occurred while creating this subtree, we let it\n\t\t// bubble up until it hits a boundary that can handle it\n\t\tif ((effect.f & BOUNDARY_EFFECT) === 0) {\n\t\t\tif (DEV && !effect.parent && error instanceof Error) {\n\t\t\t\tapply_adjustments(error);\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\n\t\t/** @type {Boundary} */ (effect.b).error(error);\n\t} else {\n\t\t// otherwise we bubble up the effect tree ourselves\n\t\tinvoke_error_boundary(error, effect);\n\t}\n}\n\n/**\n * @param {unknown} error\n * @param {Effect | null} effect\n */\nexport function invoke_error_boundary(error, effect) {\n\twhile (effect !== null) {\n\t\tif ((effect.f & BOUNDARY_EFFECT) !== 0) {\n\t\t\ttry {\n\t\t\t\t/** @type {Boundary} */ (effect.b).error(error);\n\t\t\t\treturn;\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\n\t\teffect = effect.parent;\n\t}\n\n\tif (DEV && error instanceof Error) {\n\t\tapply_adjustments(error);\n\t}\n\n\tthrow error;\n}\n\n/**\n * Add useful information to the error message/stack in development\n * @param {Error} error\n * @param {Effect} effect\n */\nfunction get_adjustments(error, effect) {\n\tconst message_descriptor = get_descriptor(error, 'message');\n\n\t// if the message was already changed and it's not configurable we can't change it\n\t// or it will throw a different error swallowing the original error\n\tif (message_descriptor && !message_descriptor.configurable) return;\n\n\tvar indent = is_firefox ? ' ' : '\\t';\n\tvar component_stack = `\\n${indent}in ${effect.fn?.name || '<unknown>'}`;\n\tvar context = effect.ctx;\n\n\twhile (context !== null) {\n\t\tcomponent_stack += `\\n${indent}in ${context.function?.[FILENAME].split('/').pop()}`;\n\t\tcontext = context.p;\n\t}\n\n\treturn {\n\t\tmessage: error.message + `\\n${component_stack}\\n`,\n\t\tstack: error.stack\n\t\t\t?.split('\\n')\n\t\t\t.filter((line) => !line.includes('svelte/src/internal'))\n\t\t\t.join('\\n')\n\t};\n}\n\n/**\n * @param {Error} error\n */\nfunction apply_adjustments(error) {\n\tconst adjusted = adjustments.get(error);\n\n\tif (adjusted) {\n\t\tdefine_property(error, 'message', {\n\t\t\tvalue: adjusted.message\n\t\t});\n\n\t\tdefine_property(error, 'stack', {\n\t\t\tvalue: adjusted.stack\n\t\t});\n\t}\n}\n","/** @import { Fork } from 'svelte' */\n/** @import { Derived, Effect, Reaction, Source, Value } from '#client' */\nimport {\n\tBLOCK_EFFECT,\n\tBRANCH_EFFECT,\n\tCLEAN,\n\tDESTROYED,\n\tDIRTY,\n\tEFFECT,\n\tASYNC,\n\tINERT,\n\tRENDER_EFFECT,\n\tROOT_EFFECT,\n\tMAYBE_DIRTY,\n\tDERIVED,\n\tBOUNDARY_EFFECT,\n\tEAGER_EFFECT,\n\tHEAD_EFFECT,\n\tERROR_VALUE,\n\tWAS_MARKED\n} from '#client/constants';\nimport { async_mode_flag } from '../../flags/index.js';\nimport { deferred, define_property } from '../../shared/utils.js';\nimport {\n\tactive_effect,\n\tget,\n\tis_dirty,\n\tis_updating_effect,\n\tset_is_updating_effect,\n\tset_signal_status,\n\tupdate_effect\n} from '../runtime.js';\nimport * as e from '../errors.js';\nimport { flush_tasks, queue_micro_task } from '../dom/task.js';\nimport { DEV } from 'esm-env';\nimport { invoke_error_boundary } from '../error-handling.js';\nimport { flush_eager_effects, old_values, set_eager_effects, source, update } from './sources.js';\nimport { eager_effect, unlink_effect } from './effects.js';\n\n/**\n * @typedef {{\n * parent: EffectTarget | null;\n * effect: Effect | null;\n * effects: Effect[];\n * render_effects: Effect[];\n * block_effects: Effect[];\n * }} EffectTarget\n */\n\n/** @type {Set<Batch>} */\nconst batches = new Set();\n\n/** @type {Batch | null} */\nexport let current_batch = null;\n\n/**\n * This is needed to avoid overwriting inputs in non-async mode\n * TODO 6.0 remove this, as non-async mode will go away\n * @type {Batch | null}\n */\nexport let previous_batch = null;\n\n/**\n * When time travelling (i.e. working in one batch, while other batches\n * still have ongoing work), we ignore the real values of affected\n * signals in favour of their values within the batch\n * @type {Map<Value, any> | null}\n */\nexport let batch_values = null;\n\n// TODO this should really be a property of `batch`\n/** @type {Effect[]} */\nlet queued_root_effects = [];\n\n/** @type {Effect | null} */\nlet last_scheduled_effect = null;\n\nlet is_flushing = false;\nexport let is_flushing_sync = false;\n\nexport class Batch {\n\tcommitted = false;\n\n\t/**\n\t * The current values of any sources that are updated in this batch\n\t * They keys of this map are identical to `this.#previous`\n\t * @type {Map<Source, any>}\n\t */\n\tcurrent = new Map();\n\n\t/**\n\t * The values of any sources that are updated in this batch _before_ those updates took place.\n\t * They keys of this map are identical to `this.#current`\n\t * @type {Map<Source, any>}\n\t */\n\tprevious = new Map();\n\n\t/**\n\t * When the batch is committed (and the DOM is updated), we need to remove old branches\n\t * and append new ones by calling the functions added inside (if/each/key/etc) blocks\n\t * @type {Set<() => void>}\n\t */\n\t#commit_callbacks = new Set();\n\n\t/**\n\t * If a fork is discarded, we need to destroy any effects that are no longer needed\n\t * @type {Set<(batch: Batch) => void>}\n\t */\n\t#discard_callbacks = new Set();\n\n\t/**\n\t * The number of async effects that are currently in flight\n\t */\n\t#pending = 0;\n\n\t/**\n\t * The number of async effects that are currently in flight, _not_ inside a pending boundary\n\t */\n\t#blocking_pending = 0;\n\n\t/**\n\t * A deferred that resolves when the batch is committed, used with `settled()`\n\t * TODO replace with Promise.withResolvers once supported widely enough\n\t * @type {{ promise: Promise<void>, resolve: (value?: any) => void, reject: (reason: unknown) => void } | null}\n\t */\n\t#deferred = null;\n\n\t/**\n\t * Deferred effects (which run after async work has completed) that are DIRTY\n\t * @type {Effect[]}\n\t */\n\t#dirty_effects = [];\n\n\t/**\n\t * Deferred effects that are MAYBE_DIRTY\n\t * @type {Effect[]}\n\t */\n\t#maybe_dirty_effects = [];\n\n\t/**\n\t * A set of branches that still exist, but will be destroyed when this batch\n\t * is committed — we skip over these during `process`\n\t * @type {Set<Effect>}\n\t */\n\tskipped_effects = new Set();\n\n\tis_fork = false;\n\n\tis_deferred() {\n\t\treturn this.is_fork || this.#blocking_pending > 0;\n\t}\n\n\t/**\n\t *\n\t * @param {Effect[]} root_effects\n\t */\n\tprocess(root_effects) {\n\t\tqueued_root_effects = [];\n\n\t\tprevious_batch = null;\n\n\t\tthis.apply();\n\n\t\t/** @type {EffectTarget} */\n\t\tvar target = {\n\t\t\tparent: null,\n\t\t\teffect: null,\n\t\t\teffects: [],\n\t\t\trender_effects: [],\n\t\t\tblock_effects: []\n\t\t};\n\n\t\tfor (const root of root_effects) {\n\t\t\tthis.#traverse_effect_tree(root, target);\n\t\t\t// Note: #traverse_effect_tree runs block effects eagerly, which can schedule effects,\n\t\t\t// which means queued_root_effects now may be filled again.\n\t\t}\n\n\t\tif (!this.is_fork) {\n\t\t\tthis.#resolve();\n\t\t}\n\n\t\tif (this.is_deferred()) {\n\t\t\tthis.#defer_effects(target.effects);\n\t\t\tthis.#defer_effects(target.render_effects);\n\t\t\tthis.#defer_effects(target.block_effects);\n\t\t} else {\n\t\t\t// If sources are written to, then work needs to happen in a separate batch, else prior sources would be mixed with\n\t\t\t// newly updated sources, which could lead to infinite loops when effects run over and over again.\n\t\t\tprevious_batch = this;\n\t\t\tcurrent_batch = null;\n\n\t\t\tflush_queued_effects(target.render_effects);\n\t\t\tflush_queued_effects(target.effects);\n\n\t\t\tprevious_batch = null;\n\n\t\t\tthis.#deferred?.resolve();\n\t\t}\n\n\t\tbatch_values = null;\n\t}\n\n\t/**\n\t * Traverse the effect tree, executing effects or stashing\n\t * them for later execution as appropriate\n\t * @param {Effect} root\n\t * @param {EffectTarget} target\n\t */\n\t#traverse_effect_tree(root, target) {\n\t\troot.f ^= CLEAN;\n\n\t\tvar effect = root.first;\n\n\t\twhile (effect !== null) {\n\t\t\tvar flags = effect.f;\n\t\t\tvar is_branch = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0;\n\t\t\tvar is_skippable_branch = is_branch && (flags & CLEAN) !== 0;\n\n\t\t\tvar skip = is_skippable_branch || (flags & INERT) !== 0 || this.skipped_effects.has(effect);\n\n\t\t\tif ((effect.f & BOUNDARY_EFFECT) !== 0 && effect.b?.is_pending()) {\n\t\t\t\ttarget = {\n\t\t\t\t\tparent: target,\n\t\t\t\t\teffect,\n\t\t\t\t\teffects: [],\n\t\t\t\t\trender_effects: [],\n\t\t\t\t\tblock_effects: []\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (!skip && effect.fn !== null) {\n\t\t\t\tif (is_branch) {\n\t\t\t\t\teffect.f ^= CLEAN;\n\t\t\t\t} else if ((flags & EFFECT) !== 0) {\n\t\t\t\t\ttarget.effects.push(effect);\n\t\t\t\t} else if (async_mode_flag && (flags & RENDER_EFFECT) !== 0) {\n\t\t\t\t\ttarget.render_effects.push(effect);\n\t\t\t\t} else if (is_dirty(effect)) {\n\t\t\t\t\tif ((effect.f & BLOCK_EFFECT) !== 0) target.block_effects.push(effect);\n\t\t\t\t\tupdate_effect(effect);\n\t\t\t\t}\n\n\t\t\t\tvar child = effect.first;\n\n\t\t\t\tif (child !== null) {\n\t\t\t\t\teffect = child;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar parent = effect.parent;\n\t\t\teffect = effect.next;\n\n\t\t\twhile (effect === null && parent !== null) {\n\t\t\t\tif (parent === target.effect) {\n\t\t\t\t\t// TODO rather than traversing into pending boundaries and deferring the effects,\n\t\t\t\t\t// could we just attach the effects _to_ the pending boundary and schedule them\n\t\t\t\t\t// once the boundary is ready?\n\t\t\t\t\tthis.#defer_effects(target.effects);\n\t\t\t\t\tthis.#defer_effects(target.render_effects);\n\t\t\t\t\tthis.#defer_effects(target.block_effects);\n\n\t\t\t\t\ttarget = /** @type {EffectTarget} */ (target.parent);\n\t\t\t\t}\n\n\t\t\t\teffect = parent.next;\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {Effect[]} effects\n\t */\n\t#defer_effects(effects) {\n\t\tfor (const e of effects) {\n\t\t\tconst target = (e.f & DIRTY) !== 0 ? this.#dirty_effects : this.#maybe_dirty_effects;\n\t\t\ttarget.push(e);\n\n\t\t\t// Since we're not executing these effects now, we need to clear any WAS_MARKED flags\n\t\t\t// so that other batches can correctly reach these effects during their own traversal\n\t\t\tthis.#clear_marked(e.deps);\n\n\t\t\t// mark as clean so they get scheduled if they depend on pending async state\n\t\t\tset_signal_status(e, CLEAN);\n\t\t}\n\t}\n\n\t/**\n\t * @param {Value[] | null} deps\n\t */\n\t#clear_marked(deps) {\n\t\tif (deps === null) return;\n\n\t\tfor (const dep of deps) {\n\t\t\tif ((dep.f & DERIVED) === 0 || (dep.f & WAS_MARKED) === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tdep.f ^= WAS_MARKED;\n\n\t\t\tthis.#clear_marked(/** @type {Derived} */ (dep).deps);\n\t\t}\n\t}\n\n\t/**\n\t * Associate a change to a given source with the current\n\t * batch, noting its previous and current values\n\t * @param {Source} source\n\t * @param {any} value\n\t */\n\tcapture(source, value) {\n\t\tif (!this.previous.has(source)) {\n\t\t\tthis.previous.set(source, value);\n\t\t}\n\n\t\t// Don't save errors in `batch_values`, or they won't be thrown in `runtime.js#get`\n\t\tif ((source.f & ERROR_VALUE) === 0) {\n\t\t\tthis.current.set(source, source.v);\n\t\t\tbatch_values?.set(source, source.v);\n\t\t}\n\t}\n\n\tactivate() {\n\t\tcurrent_batch = this;\n\t\tthis.apply();\n\t}\n\n\tdeactivate() {\n\t\t// If we're not the current batch, don't deactivate,\n\t\t// else we could create zombie batches that are never flushed\n\t\tif (current_batch !== this) return;\n\n\t\tcurrent_batch = null;\n\t\tbatch_values = null;\n\t}\n\n\tflush() {\n\t\tthis.activate();\n\n\t\tif (queued_root_effects.length > 0) {\n\t\t\tflush_effects();\n\n\t\t\tif (current_batch !== null && current_batch !== this) {\n\t\t\t\t// this can happen if a new batch was created during `flush_effects()`\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (this.#pending === 0) {\n\t\t\tthis.process([]); // TODO this feels awkward\n\t\t}\n\n\t\tthis.deactivate();\n\t}\n\n\tdiscard() {\n\t\tfor (const fn of this.#discard_callbacks) fn(this);\n\t\tthis.#discard_callbacks.clear();\n\t}\n\n\t#resolve() {\n\t\tif (this.#blocking_pending === 0) {\n\t\t\t// append/remove branches\n\t\t\tfor (const fn of this.#commit_callbacks) fn();\n\t\t\tthis.#commit_callbacks.clear();\n\t\t}\n\n\t\tif (this.#pending === 0) {\n\t\t\tthis.#commit();\n\t\t}\n\t}\n\n\t#commit() {\n\t\t// If there are other pending batches, they now need to be 'rebased' —\n\t\t// in other words, we re-run block/async effects with the newly\n\t\t// committed state, unless the batch in question has a more\n\t\t// recent value for a given source\n\t\tif (batches.size > 1) {\n\t\t\tthis.previous.clear();\n\n\t\t\tvar previous_batch_values = batch_values;\n\t\t\tvar is_earlier = true;\n\n\t\t\t/** @type {EffectTarget} */\n\t\t\tvar dummy_target = {\n\t\t\t\tparent: null,\n\t\t\t\teffect: null,\n\t\t\t\teffects: [],\n\t\t\t\trender_effects: [],\n\t\t\t\tblock_effects: []\n\t\t\t};\n\n\t\t\tfor (const batch of batches) {\n\t\t\t\tif (batch === this) {\n\t\t\t\t\tis_earlier = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t/** @type {Source[]} */\n\t\t\t\tconst sources = [];\n\n\t\t\t\tfor (const [source, value] of this.current) {\n\t\t\t\t\tif (batch.current.has(source)) {\n\t\t\t\t\t\tif (is_earlier && value !== batch.current.get(source)) {\n\t\t\t\t\t\t\t// bring the value up to date\n\t\t\t\t\t\t\tbatch.current.set(source, value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// same value or later batch has more recent value,\n\t\t\t\t\t\t\t// no need to re-run these effects\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsources.push(source);\n\t\t\t\t}\n\n\t\t\t\tif (sources.length === 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Re-run async/block effects that depend on distinct values changed in both batches\n\t\t\t\tconst others = [...batch.current.keys()].filter((s) => !this.current.has(s));\n\t\t\t\tif (others.length > 0) {\n\t\t\t\t\t// Avoid running queued root effects on the wrong branch\n\t\t\t\t\tvar prev_queued_root_effects = queued_root_effects;\n\t\t\t\t\tqueued_root_effects = [];\n\n\t\t\t\t\t/** @type {Set<Value>} */\n\t\t\t\t\tconst marked = new Set();\n\t\t\t\t\t/** @type {Map<Reaction, boolean>} */\n\t\t\t\t\tconst checked = new Map();\n\t\t\t\t\tfor (const source of sources) {\n\t\t\t\t\t\tmark_effects(source, others, marked, checked);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (queued_root_effects.length > 0) {\n\t\t\t\t\t\tcurrent_batch = batch;\n\t\t\t\t\t\tbatch.apply();\n\n\t\t\t\t\t\tfor (const root of queued_root_effects) {\n\t\t\t\t\t\t\tbatch.#traverse_effect_tree(root, dummy_target);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// TODO do we need to do anything with `target`? defer block effects?\n\n\t\t\t\t\t\tbatch.deactivate();\n\t\t\t\t\t}\n\n\t\t\t\t\tqueued_root_effects = prev_queued_root_effects;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcurrent_batch = null;\n\t\t\tbatch_values = previous_batch_values;\n\t\t}\n\n\t\tthis.committed = true;\n\t\tbatches.delete(this);\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} blocking\n\t */\n\tincrement(blocking) {\n\t\tthis.#pending += 1;\n\t\tif (blocking) this.#blocking_pending += 1;\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} blocking\n\t */\n\tdecrement(blocking) {\n\t\tthis.#pending -= 1;\n\t\tif (blocking) this.#blocking_pending -= 1;\n\n\t\tthis.revive();\n\t}\n\n\trevive() {\n\t\tfor (const e of this.#dirty_effects) {\n\t\t\tset_signal_status(e, DIRTY);\n\t\t\tschedule_effect(e);\n\t\t}\n\n\t\tfor (const e of this.#maybe_dirty_effects) {\n\t\t\tset_signal_status(e, MAYBE_DIRTY);\n\t\t\tschedule_effect(e);\n\t\t}\n\n\t\tthis.#dirty_effects = [];\n\t\tthis.#maybe_dirty_effects = [];\n\n\t\tthis.flush();\n\t}\n\n\t/** @param {() => void} fn */\n\toncommit(fn) {\n\t\tthis.#commit_callbacks.add(fn);\n\t}\n\n\t/** @param {(batch: Batch) => void} fn */\n\tondiscard(fn) {\n\t\tthis.#discard_callbacks.add(fn);\n\t}\n\n\tsettled() {\n\t\treturn (this.#deferred ??= deferred()).promise;\n\t}\n\n\tstatic ensure() {\n\t\tif (current_batch === null) {\n\t\t\tconst batch = (current_batch = new Batch());\n\t\t\tbatches.add(current_batch);\n\n\t\t\tif (!is_flushing_sync) {\n\t\t\t\tBatch.enqueue(() => {\n\t\t\t\t\tif (current_batch !== batch) {\n\t\t\t\t\t\t// a flushSync happened in the meantime\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbatch.flush();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current_batch;\n\t}\n\n\t/** @param {() => void} task */\n\tstatic enqueue(task) {\n\t\tqueue_micro_task(task);\n\t}\n\n\tapply() {\n\t\tif (!async_mode_flag || (!this.is_fork && batches.size === 1)) return;\n\n\t\t// if there are multiple batches, we are 'time travelling' —\n\t\t// we need to override values with the ones in this batch...\n\t\tbatch_values = new Map(this.current);\n\n\t\t// ...and undo changes belonging to other batches\n\t\tfor (const batch of batches) {\n\t\t\tif (batch === this) continue;\n\n\t\t\tfor (const [source, previous] of batch.previous) {\n\t\t\t\tif (!batch_values.has(source)) {\n\t\t\t\t\tbatch_values.set(source, previous);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Synchronously flush any pending updates.\n * Returns void if no callback is provided, otherwise returns the result of calling the callback.\n * @template [T=void]\n * @param {(() => T) | undefined} [fn]\n * @returns {T}\n */\nexport function flushSync(fn) {\n\tif (async_mode_flag && active_effect !== null) {\n\t\t// We disallow this because it creates super-hard to reason about stack trace and because it's generally a bad idea\n\t\te.flush_sync_in_effect();\n\t}\n\n\tvar was_flushing_sync = is_flushing_sync;\n\tis_flushing_sync = true;\n\n\ttry {\n\t\tvar result;\n\n\t\tif (fn) {\n\t\t\tif (current_batch !== null) {\n\t\t\t\tflush_effects();\n\t\t\t}\n\n\t\t\tresult = fn();\n\t\t}\n\n\t\twhile (true) {\n\t\t\tflush_tasks();\n\n\t\t\tif (queued_root_effects.length === 0) {\n\t\t\t\tcurrent_batch?.flush();\n\n\t\t\t\t// we need to check again, in case we just updated an `$effect.pending()`\n\t\t\t\tif (queued_root_effects.length === 0) {\n\t\t\t\t\t// this would be reset in `flush_effects()` but since we are early returning here,\n\t\t\t\t\t// we need to reset it here as well in case the first time there's 0 queued root effects\n\t\t\t\t\tlast_scheduled_effect = null;\n\n\t\t\t\t\treturn /** @type {T} */ (result);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tflush_effects();\n\t\t}\n\t} finally {\n\t\tis_flushing_sync = was_flushing_sync;\n\t}\n}\n\nfunction flush_effects() {\n\tvar was_updating_effect = is_updating_effect;\n\tis_flushing = true;\n\n\tvar source_stacks = DEV ? new Set() : null;\n\n\ttry {\n\t\tvar flush_count = 0;\n\t\tset_is_updating_effect(true);\n\n\t\twhile (queued_root_effects.length > 0) {\n\t\t\tvar batch = Batch.ensure();\n\n\t\t\tif (flush_count++ > 1000) {\n\t\t\t\tif (DEV) {\n\t\t\t\t\tvar updates = new Map();\n\n\t\t\t\t\tfor (const source of batch.current.keys()) {\n\t\t\t\t\t\tfor (const [stack, update] of source.updated ?? []) {\n\t\t\t\t\t\t\tvar entry = updates.get(stack);\n\n\t\t\t\t\t\t\tif (!entry) {\n\t\t\t\t\t\t\t\tentry = { error: update.error, count: 0 };\n\t\t\t\t\t\t\t\tupdates.set(stack, entry);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tentry.count += update.count;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (const update of updates.values()) {\n\t\t\t\t\t\tif (update.error) {\n\t\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\t\tconsole.error(update.error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tinfinite_loop_guard();\n\t\t\t}\n\n\t\t\tbatch.process(queued_root_effects);\n\t\t\told_values.clear();\n\n\t\t\tif (DEV) {\n\t\t\t\tfor (const source of batch.current.keys()) {\n\t\t\t\t\t/** @type {Set<Source>} */ (source_stacks).add(source);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tis_flushing = false;\n\t\tset_is_updating_effect(was_updating_effect);\n\n\t\tlast_scheduled_effect = null;\n\n\t\tif (DEV) {\n\t\t\tfor (const source of /** @type {Set<Source>} */ (source_stacks)) {\n\t\t\t\tsource.updated = null;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction infinite_loop_guard() {\n\ttry {\n\t\te.effect_update_depth_exceeded();\n\t} catch (error) {\n\t\tif (DEV) {\n\t\t\t// stack contains no useful information, replace it\n\t\t\tdefine_property(error, 'stack', { value: '' });\n\t\t}\n\n\t\t// Best effort: invoke the boundary nearest the most recent\n\t\t// effect and hope that it's relevant to the infinite loop\n\t\tinvoke_error_boundary(error, last_scheduled_effect);\n\t}\n}\n\n/** @type {Set<Effect> | null} */\nexport let eager_block_effects = null;\n\n/**\n * @param {Array<Effect>} effects\n * @returns {void}\n */\nfunction flush_queued_effects(effects) {\n\tvar length = effects.length;\n\tif (length === 0) return;\n\n\tvar i = 0;\n\n\twhile (i < length) {\n\t\tvar effect = effects[i++];\n\n\t\tif ((effect.f & (DESTROYED | INERT)) === 0 && is_dirty(effect)) {\n\t\t\teager_block_effects = new Set();\n\n\t\t\tupdate_effect(effect);\n\n\t\t\t// Effects with no dependencies or teardown do not get added to the effect tree.\n\t\t\t// Deferred effects (e.g. `$effect(...)`) _are_ added to the tree because we\n\t\t\t// don't know if we need to keep them until they are executed. Doing the check\n\t\t\t// here (rather than in `update_effect`) allows us to skip the work for\n\t\t\t// immediate effects.\n\t\t\tif (effect.deps === null && effect.first === null && effect.nodes_start === null) {\n\t\t\t\t// if there's no teardown or abort controller we completely unlink\n\t\t\t\t// the effect from the graph\n\t\t\t\tif (effect.teardown === null && effect.ac === null) {\n\t\t\t\t\t// remove this effect from the graph\n\t\t\t\t\tunlink_effect(effect);\n\t\t\t\t} else {\n\t\t\t\t\t// keep the effect in the graph, but free up some memory\n\t\t\t\t\teffect.fn = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If update_effect() has a flushSync() in it, we may have flushed another flush_queued_effects(),\n\t\t\t// which already handled this logic and did set eager_block_effects to null.\n\t\t\tif (eager_block_effects?.size > 0) {\n\t\t\t\told_values.clear();\n\n\t\t\t\tfor (const e of eager_block_effects) {\n\t\t\t\t\t// Skip eager effects that have already been unmounted\n\t\t\t\t\tif ((e.f & (DESTROYED | INERT)) !== 0) continue;\n\n\t\t\t\t\t// Run effects in order from ancestor to descendant, else we could run into nullpointers\n\t\t\t\t\t/** @type {Effect[]} */\n\t\t\t\t\tconst ordered_effects = [e];\n\t\t\t\t\tlet ancestor = e.parent;\n\t\t\t\t\twhile (ancestor !== null) {\n\t\t\t\t\t\tif (eager_block_effects.has(ancestor)) {\n\t\t\t\t\t\t\teager_block_effects.delete(ancestor);\n\t\t\t\t\t\t\tordered_effects.push(ancestor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tancestor = ancestor.parent;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let j = ordered_effects.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tconst e = ordered_effects[j];\n\t\t\t\t\t\t// Skip eager effects that have already been unmounted\n\t\t\t\t\t\tif ((e.f & (DESTROYED | INERT)) !== 0) continue;\n\t\t\t\t\t\tupdate_effect(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\teager_block_effects.clear();\n\t\t\t}\n\t\t}\n\t}\n\n\teager_block_effects = null;\n}\n\n/**\n * This is similar to `mark_reactions`, but it only marks async/block effects\n * depending on `value` and at least one of the other `sources`, so that\n * these effects can re-run after another batch has been committed\n * @param {Value} value\n * @param {Source[]} sources\n * @param {Set<Value>} marked\n * @param {Map<Reaction, boolean>} checked\n */\nfunction mark_effects(value, sources, marked, checked) {\n\tif (marked.has(value)) return;\n\tmarked.add(value);\n\n\tif (value.reactions !== null) {\n\t\tfor (const reaction of value.reactions) {\n\t\t\tconst flags = reaction.f;\n\n\t\t\tif ((flags & DERIVED) !== 0) {\n\t\t\t\tmark_effects(/** @type {Derived} */ (reaction), sources, marked, checked);\n\t\t\t} else if (\n\t\t\t\t(flags & (ASYNC | BLOCK_EFFECT)) !== 0 &&\n\t\t\t\t(flags & DIRTY) === 0 && // we may have scheduled this one already\n\t\t\t\tdepends_on(reaction, sources, checked)\n\t\t\t) {\n\t\t\t\tset_signal_status(reaction, DIRTY);\n\t\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * When committing a fork, we need to trigger eager effects so that\n * any `$state.eager(...)` expressions update immediately. This\n * function allows us to discover them\n * @param {Value} value\n * @param {Set<Effect>} effects\n */\nfunction mark_eager_effects(value, effects) {\n\tif (value.reactions === null) return;\n\n\tfor (const reaction of value.reactions) {\n\t\tconst flags = reaction.f;\n\n\t\tif ((flags & DERIVED) !== 0) {\n\t\t\tmark_eager_effects(/** @type {Derived} */ (reaction), effects);\n\t\t} else if ((flags & EAGER_EFFECT) !== 0) {\n\t\t\tset_signal_status(reaction, DIRTY);\n\t\t\teffects.add(/** @type {Effect} */ (reaction));\n\t\t}\n\t}\n}\n\n/**\n * @param {Reaction} reaction\n * @param {Source[]} sources\n * @param {Map<Reaction, boolean>} checked\n */\nfunction depends_on(reaction, sources, checked) {\n\tconst depends = checked.get(reaction);\n\tif (depends !== undefined) return depends;\n\n\tif (reaction.deps !== null) {\n\t\tfor (const dep of reaction.deps) {\n\t\t\tif (sources.includes(dep)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif ((dep.f & DERIVED) !== 0 && depends_on(/** @type {Derived} */ (dep), sources, checked)) {\n\t\t\t\tchecked.set(/** @type {Derived} */ (dep), true);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\tchecked.set(reaction, false);\n\n\treturn false;\n}\n\n/**\n * @param {Effect} signal\n * @returns {void}\n */\nexport function schedule_effect(signal) {\n\tvar effect = (last_scheduled_effect = signal);\n\n\twhile (effect.parent !== null) {\n\t\teffect = effect.parent;\n\t\tvar flags = effect.f;\n\n\t\t// if the effect is being scheduled because a parent (each/await/etc) block\n\t\t// updated an internal source, bail out or we'll cause a second flush\n\t\tif (\n\t\t\tis_flushing &&\n\t\t\teffect === active_effect &&\n\t\t\t(flags & BLOCK_EFFECT) !== 0 &&\n\t\t\t(flags & HEAD_EFFECT) === 0\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ((flags & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {\n\t\t\tif ((flags & CLEAN) === 0) return;\n\t\t\teffect.f ^= CLEAN;\n\t\t}\n\t}\n\n\tqueued_root_effects.push(effect);\n}\n\n/** @type {Source<number>[]} */\nlet eager_versions = [];\n\nfunction eager_flush() {\n\ttry {\n\t\tflushSync(() => {\n\t\t\tfor (const version of eager_versions) {\n\t\t\t\tupdate(version);\n\t\t\t}\n\t\t});\n\t} finally {\n\t\teager_versions = [];\n\t}\n}\n\n/**\n * Implementation of `$state.eager(fn())`\n * @template T\n * @param {() => T} fn\n * @returns {T}\n */\nexport function eager(fn) {\n\tvar version = source(0);\n\tvar initial = true;\n\tvar value = /** @type {T} */ (undefined);\n\n\tget(version);\n\n\teager_effect(() => {\n\t\tif (initial) {\n\t\t\t// the first time this runs, we create an eager effect\n\t\t\t// that will run eagerly whenever the expression changes\n\t\t\tvar previous_batch_values = batch_values;\n\n\t\t\ttry {\n\t\t\t\tbatch_values = null;\n\t\t\t\tvalue = fn();\n\t\t\t} finally {\n\t\t\t\tbatch_values = previous_batch_values;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// the second time this effect runs, it's to schedule a\n\t\t// `version` update. since this will recreate the effect,\n\t\t// we don't need to evaluate the expression here\n\t\tif (eager_versions.length === 0) {\n\t\t\tqueue_micro_task(eager_flush);\n\t\t}\n\n\t\teager_versions.push(version);\n\t});\n\n\tinitial = false;\n\n\treturn value;\n}\n\n/**\n * Creates a 'fork', in which state changes are evaluated but not applied to the DOM.\n * This is useful for speculatively loading data (for example) when you suspect that\n * the user is about to take some action.\n *\n * Frameworks like SvelteKit can use this to preload data when the user touches or\n * hovers over a link, making any subsequent navigation feel instantaneous.\n *\n * The `fn` parameter is a synchronous function that modifies some state. The\n * state changes will be reverted after the fork is initialised, then reapplied\n * if and when the fork is eventually committed.\n *\n * When it becomes clear that a fork will _not_ be committed (e.g. because the\n * user navigated elsewhere), it must be discarded to avoid leaking memory.\n *\n * @param {() => void} fn\n * @returns {Fork}\n * @since 5.42\n */\nexport function fork(fn) {\n\tif (!async_mode_flag) {\n\t\te.experimental_async_fork();\n\t}\n\n\tif (current_batch !== null) {\n\t\te.fork_timing();\n\t}\n\n\tvar batch = Batch.ensure();\n\tbatch.is_fork = true;\n\n\tvar committed = false;\n\tvar settled = batch.settled();\n\n\tflushSync(fn);\n\n\t// revert state changes\n\tfor (var [source, value] of batch.previous) {\n\t\tsource.v = value;\n\t}\n\n\treturn {\n\t\tcommit: async () => {\n\t\t\tif (committed) {\n\t\t\t\tawait settled;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!batches.has(batch)) {\n\t\t\t\te.fork_discarded();\n\t\t\t}\n\n\t\t\tcommitted = true;\n\n\t\t\tbatch.is_fork = false;\n\n\t\t\t// apply changes\n\t\t\tfor (var [source, value] of batch.current) {\n\t\t\t\tsource.v = value;\n\t\t\t}\n\n\t\t\t// trigger any `$state.eager(...)` expressions with the new state.\n\t\t\t// eager effects don't get scheduled like other effects, so we\n\t\t\t// can't just encounter them during traversal, we need to\n\t\t\t// proactively flush them\n\t\t\t// TODO maybe there's a better implementation?\n\t\t\tflushSync(() => {\n\t\t\t\t/** @type {Set<Effect>} */\n\t\t\t\tvar eager_effects = new Set();\n\n\t\t\t\tfor (var source of batch.current.keys()) {\n\t\t\t\t\tmark_eager_effects(source, eager_effects);\n\t\t\t\t}\n\n\t\t\t\tset_eager_effects(eager_effects);\n\t\t\t\tflush_eager_effects();\n\t\t\t});\n\n\t\t\tbatch.revive();\n\t\t\tawait settled;\n\t\t},\n\t\tdiscard: () => {\n\t\t\tif (!committed && batches.has(batch)) {\n\t\t\t\tbatches.delete(batch);\n\t\t\t\tbatch.discard();\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * Forcibly remove all current batches, to prevent cross-talk between tests\n */\nexport function clear() {\n\tbatches.clear();\n}\n","import { get, tick, untrack } from '../internal/client/runtime.js';\nimport { effect_tracking, render_effect } from '../internal/client/reactivity/effects.js';\nimport { source, increment } from '../internal/client/reactivity/sources.js';\nimport { tag } from '../internal/client/dev/tracing.js';\nimport { DEV } from 'esm-env';\nimport { queue_micro_task } from '../internal/client/dom/task.js';\n\n/**\n * Returns a `subscribe` function that integrates external event-based systems with Svelte's reactivity.\n * It's particularly useful for integrating with web APIs like `MediaQuery`, `IntersectionObserver`, or `WebSocket`.\n *\n * If `subscribe` is called inside an effect (including indirectly, for example inside a getter),\n * the `start` callback will be called with an `update` function. Whenever `update` is called, the effect re-runs.\n *\n * If `start` returns a cleanup function, it will be called when the effect is destroyed.\n *\n * If `subscribe` is called in multiple effects, `start` will only be called once as long as the effects\n * are active, and the returned teardown function will only be called when all effects are destroyed.\n *\n * It's best understood with an example. Here's an implementation of [`MediaQuery`](https://svelte.dev/docs/svelte/svelte-reactivity#MediaQuery):\n *\n * ```js\n * import { createSubscriber } from 'svelte/reactivity';\n * import { on } from 'svelte/events';\n *\n * export class MediaQuery {\n * \t#query;\n * \t#subscribe;\n *\n * \tconstructor(query) {\n * \t\tthis.#query = window.matchMedia(`(${query})`);\n *\n * \t\tthis.#subscribe = createSubscriber((update) => {\n * \t\t\t// when the `change` event occurs, re-run any effects that read `this.current`\n * \t\t\tconst off = on(this.#query, 'change', update);\n *\n * \t\t\t// stop listening when all the effects are destroyed\n * \t\t\treturn () => off();\n * \t\t});\n * \t}\n *\n * \tget current() {\n * \t\t// This makes the getter reactive, if read in an effect\n * \t\tthis.#subscribe();\n *\n * \t\t// Return the current state of the query, whether or not we're in an effect\n * \t\treturn this.#query.matches;\n * \t}\n * }\n * ```\n * @param {(update: () => void) => (() => void) | void} start\n * @since 5.7.0\n */\nexport function createSubscriber(start) {\n\tlet subscribers = 0;\n\tlet version = source(0);\n\t/** @type {(() => void) | void} */\n\tlet stop;\n\n\tif (DEV) {\n\t\ttag(version, 'createSubscriber version');\n\t}\n\n\treturn () => {\n\t\tif (effect_tracking()) {\n\t\t\tget(version);\n\n\t\t\trender_effect(() => {\n\t\t\t\tif (subscribers === 0) {\n\t\t\t\t\tstop = untrack(() => start(() => increment(version)));\n\t\t\t\t}\n\n\t\t\t\tsubscribers += 1;\n\n\t\t\t\treturn () => {\n\t\t\t\t\tqueue_micro_task(() => {\n\t\t\t\t\t\t// Only count down after a microtask, else we would reach 0 before our own render effect reruns,\n\t\t\t\t\t\t// but reach 1 again when the tick callback of the prior teardown runs. That would mean we\n\t\t\t\t\t\t// re-subcribe unnecessarily and create a memory leak because the old subscription is never cleaned up.\n\t\t\t\t\t\tsubscribers -= 1;\n\n\t\t\t\t\t\tif (subscribers === 0) {\n\t\t\t\t\t\t\tstop?.();\n\t\t\t\t\t\t\tstop = undefined;\n\t\t\t\t\t\t\t// Increment the version to ensure any dependent deriveds are marked dirty when the subscription is picked up again later.\n\t\t\t\t\t\t\t// If we didn't do this then the comparison of write versions would determine that the derived has a later version than\n\t\t\t\t\t\t\t// the subscriber, and it would not be re-run.\n\t\t\t\t\t\t\tincrement(version);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n}\n","/** @import { Effect, Source, TemplateNode, } from '#client' */\nimport {\n\tBOUNDARY_EFFECT,\n\tCOMMENT_NODE,\n\tEFFECT_PRESERVED,\n\tEFFECT_TRANSPARENT\n} from '#client/constants';\nimport { HYDRATION_START_ELSE } from '../../../../constants.js';\nimport { component_context, set_component_context } from '../../context.js';\nimport { handle_error, invoke_error_boundary } from '../../error-handling.js';\nimport {\n\tblock,\n\tbranch,\n\tdestroy_effect,\n\tmove_effect,\n\tpause_effect\n} from '../../reactivity/effects.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tget,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tnext,\n\tskip_nodes,\n\tset_hydrate_node\n} from '../hydration.js';\nimport { queue_micro_task } from '../task.js';\nimport * as e from '../../errors.js';\nimport * as w from '../../warnings.js';\nimport { DEV } from 'esm-env';\nimport { Batch } from '../../reactivity/batch.js';\nimport { internal_set, source } from '../../reactivity/sources.js';\nimport { tag } from '../../dev/tracing.js';\nimport { createSubscriber } from '../../../../reactivity/create-subscriber.js';\nimport { create_text } from '../operations.js';\n\n/**\n * @typedef {{\n * \t onerror?: (error: unknown, reset: () => void) => void;\n * failed?: (anchor: Node, error: () => unknown, reset: () => () => void) => void;\n * pending?: (anchor: Node) => void;\n * }} BoundaryProps\n */\n\nvar flags = EFFECT_TRANSPARENT | EFFECT_PRESERVED | BOUNDARY_EFFECT;\n\n/**\n * @param {TemplateNode} node\n * @param {BoundaryProps} props\n * @param {((anchor: Node) => void)} children\n * @returns {void}\n */\nexport function boundary(node, props, children) {\n\tnew Boundary(node, props, children);\n}\n\nexport class Boundary {\n\t/** @type {Boundary | null} */\n\tparent;\n\n\t#pending = false;\n\n\t/** @type {TemplateNode} */\n\t#anchor;\n\n\t/** @type {TemplateNode | null} */\n\t#hydrate_open = hydrating ? hydrate_node : null;\n\n\t/** @type {BoundaryProps} */\n\t#props;\n\n\t/** @type {((anchor: Node) => void)} */\n\t#children;\n\n\t/** @type {Effect} */\n\t#effect;\n\n\t/** @type {Effect | null} */\n\t#main_effect = null;\n\n\t/** @type {Effect | null} */\n\t#pending_effect = null;\n\n\t/** @type {Effect | null} */\n\t#failed_effect = null;\n\n\t/** @type {DocumentFragment | null} */\n\t#offscreen_fragment = null;\n\n\t/** @type {TemplateNode | null} */\n\t#pending_anchor = null;\n\n\t#local_pending_count = 0;\n\t#pending_count = 0;\n\n\t#is_creating_fallback = false;\n\n\t/**\n\t * A source containing the number of pending async deriveds/expressions.\n\t * Only created if `$effect.pending()` is used inside the boundary,\n\t * otherwise updating the source results in needless `Batch.ensure()`\n\t * calls followed by no-op flushes\n\t * @type {Source<number> | null}\n\t */\n\t#effect_pending = null;\n\n\t#effect_pending_subscriber = createSubscriber(() => {\n\t\tthis.#effect_pending = source(this.#local_pending_count);\n\n\t\tif (DEV) {\n\t\t\ttag(this.#effect_pending, '$effect.pending()');\n\t\t}\n\n\t\treturn () => {\n\t\t\tthis.#effect_pending = null;\n\t\t};\n\t});\n\n\t/**\n\t * @param {TemplateNode} node\n\t * @param {BoundaryProps} props\n\t * @param {((anchor: Node) => void)} children\n\t */\n\tconstructor(node, props, children) {\n\t\tthis.#anchor = node;\n\t\tthis.#props = props;\n\t\tthis.#children = children;\n\n\t\tthis.parent = /** @type {Effect} */ (active_effect).b;\n\n\t\tthis.#pending = !!this.#props.pending;\n\n\t\tthis.#effect = block(() => {\n\t\t\t/** @type {Effect} */ (active_effect).b = this;\n\n\t\t\tif (hydrating) {\n\t\t\t\tconst comment = this.#hydrate_open;\n\t\t\t\thydrate_next();\n\n\t\t\t\tconst server_rendered_pending =\n\t\t\t\t\t/** @type {Comment} */ (comment).nodeType === COMMENT_NODE &&\n\t\t\t\t\t/** @type {Comment} */ (comment).data === HYDRATION_START_ELSE;\n\n\t\t\t\tif (server_rendered_pending) {\n\t\t\t\t\tthis.#hydrate_pending_content();\n\t\t\t\t} else {\n\t\t\t\t\tthis.#hydrate_resolved_content();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar anchor = this.#get_anchor();\n\n\t\t\t\ttry {\n\t\t\t\t\tthis.#main_effect = branch(() => children(anchor));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.error(error);\n\t\t\t\t}\n\n\t\t\t\tif (this.#pending_count > 0) {\n\t\t\t\t\tthis.#show_pending_snippet();\n\t\t\t\t} else {\n\t\t\t\t\tthis.#pending = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tthis.#pending_anchor?.remove();\n\t\t\t};\n\t\t}, flags);\n\n\t\tif (hydrating) {\n\t\t\tthis.#anchor = hydrate_node;\n\t\t}\n\t}\n\n\t#hydrate_resolved_content() {\n\t\ttry {\n\t\t\tthis.#main_effect = branch(() => this.#children(this.#anchor));\n\t\t} catch (error) {\n\t\t\tthis.error(error);\n\t\t}\n\n\t\t// Since server rendered resolved content, we never show pending state\n\t\t// Even if client-side async operations are still running, the content is already displayed\n\t\tthis.#pending = false;\n\t}\n\n\t#hydrate_pending_content() {\n\t\tconst pending = this.#props.pending;\n\t\tif (!pending) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#pending_effect = branch(() => pending(this.#anchor));\n\n\t\tBatch.enqueue(() => {\n\t\t\tvar anchor = this.#get_anchor();\n\n\t\t\tthis.#main_effect = this.#run(() => {\n\t\t\t\tBatch.ensure();\n\t\t\t\treturn branch(() => this.#children(anchor));\n\t\t\t});\n\n\t\t\tif (this.#pending_count > 0) {\n\t\t\t\tthis.#show_pending_snippet();\n\t\t\t} else {\n\t\t\t\tpause_effect(/** @type {Effect} */ (this.#pending_effect), () => {\n\t\t\t\t\tthis.#pending_effect = null;\n\t\t\t\t});\n\n\t\t\t\tthis.#pending = false;\n\t\t\t}\n\t\t});\n\t}\n\n\t#get_anchor() {\n\t\tvar anchor = this.#anchor;\n\n\t\tif (this.#pending) {\n\t\t\tthis.#pending_anchor = create_text();\n\t\t\tthis.#anchor.before(this.#pending_anchor);\n\n\t\t\tanchor = this.#pending_anchor;\n\t\t}\n\n\t\treturn anchor;\n\t}\n\n\t/**\n\t * Returns `true` if the effect exists inside a boundary whose pending snippet is shown\n\t * @returns {boolean}\n\t */\n\tis_pending() {\n\t\treturn this.#pending || (!!this.parent && this.parent.is_pending());\n\t}\n\n\thas_pending_snippet() {\n\t\treturn !!this.#props.pending;\n\t}\n\n\t/**\n\t * @param {() => Effect | null} fn\n\t */\n\t#run(fn) {\n\t\tvar previous_effect = active_effect;\n\t\tvar previous_reaction = active_reaction;\n\t\tvar previous_ctx = component_context;\n\n\t\tset_active_effect(this.#effect);\n\t\tset_active_reaction(this.#effect);\n\t\tset_component_context(this.#effect.ctx);\n\n\t\ttry {\n\t\t\treturn fn();\n\t\t} catch (e) {\n\t\t\thandle_error(e);\n\t\t\treturn null;\n\t\t} finally {\n\t\t\tset_active_effect(previous_effect);\n\t\t\tset_active_reaction(previous_reaction);\n\t\t\tset_component_context(previous_ctx);\n\t\t}\n\t}\n\n\t#show_pending_snippet() {\n\t\tconst pending = /** @type {(anchor: Node) => void} */ (this.#props.pending);\n\n\t\tif (this.#main_effect !== null) {\n\t\t\tthis.#offscreen_fragment = document.createDocumentFragment();\n\t\t\tthis.#offscreen_fragment.append(/** @type {TemplateNode} */ (this.#pending_anchor));\n\t\t\tmove_effect(this.#main_effect, this.#offscreen_fragment);\n\t\t}\n\n\t\tif (this.#pending_effect === null) {\n\t\t\tthis.#pending_effect = branch(() => pending(this.#anchor));\n\t\t}\n\t}\n\n\t/**\n\t * Updates the pending count associated with the currently visible pending snippet,\n\t * if any, such that we can replace the snippet with content once work is done\n\t * @param {1 | -1} d\n\t */\n\t#update_pending_count(d) {\n\t\tif (!this.has_pending_snippet()) {\n\t\t\tif (this.parent) {\n\t\t\t\tthis.parent.#update_pending_count(d);\n\t\t\t}\n\n\t\t\t// if there's no parent, we're in a scope with no pending snippet\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#pending_count += d;\n\n\t\tif (this.#pending_count === 0) {\n\t\t\tthis.#pending = false;\n\n\t\t\tif (this.#pending_effect) {\n\t\t\t\tpause_effect(this.#pending_effect, () => {\n\t\t\t\t\tthis.#pending_effect = null;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.#offscreen_fragment) {\n\t\t\t\tthis.#anchor.before(this.#offscreen_fragment);\n\t\t\t\tthis.#offscreen_fragment = null;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Update the source that powers `$effect.pending()` inside this boundary,\n\t * and controls when the current `pending` snippet (if any) is removed.\n\t * Do not call from inside the class\n\t * @param {1 | -1} d\n\t */\n\tupdate_pending_count(d) {\n\t\tthis.#update_pending_count(d);\n\n\t\tthis.#local_pending_count += d;\n\n\t\tif (this.#effect_pending) {\n\t\t\tinternal_set(this.#effect_pending, this.#local_pending_count);\n\t\t}\n\t}\n\n\tget_effect_pending() {\n\t\tthis.#effect_pending_subscriber();\n\t\treturn get(/** @type {Source<number>} */ (this.#effect_pending));\n\t}\n\n\t/** @param {unknown} error */\n\terror(error) {\n\t\tvar onerror = this.#props.onerror;\n\t\tlet failed = this.#props.failed;\n\n\t\t// If we have nothing to capture the error, or if we hit an error while\n\t\t// rendering the fallback, re-throw for another boundary to handle\n\t\tif (this.#is_creating_fallback || (!onerror && !failed)) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (this.#main_effect) {\n\t\t\tdestroy_effect(this.#main_effect);\n\t\t\tthis.#main_effect = null;\n\t\t}\n\n\t\tif (this.#pending_effect) {\n\t\t\tdestroy_effect(this.#pending_effect);\n\t\t\tthis.#pending_effect = null;\n\t\t}\n\n\t\tif (this.#failed_effect) {\n\t\t\tdestroy_effect(this.#failed_effect);\n\t\t\tthis.#failed_effect = null;\n\t\t}\n\n\t\tif (hydrating) {\n\t\t\tset_hydrate_node(/** @type {TemplateNode} */ (this.#hydrate_open));\n\t\t\tnext();\n\t\t\tset_hydrate_node(skip_nodes());\n\t\t}\n\n\t\tvar did_reset = false;\n\t\tvar calling_on_error = false;\n\n\t\tconst reset = () => {\n\t\t\tif (did_reset) {\n\t\t\t\tw.svelte_boundary_reset_noop();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdid_reset = true;\n\n\t\t\tif (calling_on_error) {\n\t\t\t\te.svelte_boundary_reset_onerror();\n\t\t\t}\n\n\t\t\t// If the failure happened while flushing effects, current_batch can be null\n\t\t\tBatch.ensure();\n\n\t\t\tthis.#local_pending_count = 0;\n\n\t\t\tif (this.#failed_effect !== null) {\n\t\t\t\tpause_effect(this.#failed_effect, () => {\n\t\t\t\t\tthis.#failed_effect = null;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// we intentionally do not try to find the nearest pending boundary. If this boundary has one, we'll render it on reset\n\t\t\t// but it would be really weird to show the parent's boundary on a child reset.\n\t\t\tthis.#pending = this.has_pending_snippet();\n\n\t\t\tthis.#main_effect = this.#run(() => {\n\t\t\t\tthis.#is_creating_fallback = false;\n\t\t\t\treturn branch(() => this.#children(this.#anchor));\n\t\t\t});\n\n\t\t\tif (this.#pending_count > 0) {\n\t\t\t\tthis.#show_pending_snippet();\n\t\t\t} else {\n\t\t\t\tthis.#pending = false;\n\t\t\t}\n\t\t};\n\n\t\tvar previous_reaction = active_reaction;\n\n\t\ttry {\n\t\t\tset_active_reaction(null);\n\t\t\tcalling_on_error = true;\n\t\t\tonerror?.(error, reset);\n\t\t\tcalling_on_error = false;\n\t\t} catch (error) {\n\t\t\tinvoke_error_boundary(error, this.#effect && this.#effect.parent);\n\t\t} finally {\n\t\t\tset_active_reaction(previous_reaction);\n\t\t}\n\n\t\tif (failed) {\n\t\t\tqueue_micro_task(() => {\n\t\t\t\tthis.#failed_effect = this.#run(() => {\n\t\t\t\t\tBatch.ensure();\n\t\t\t\t\tthis.#is_creating_fallback = true;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn branch(() => {\n\t\t\t\t\t\t\tfailed(\n\t\t\t\t\t\t\t\tthis.#anchor,\n\t\t\t\t\t\t\t\t() => error,\n\t\t\t\t\t\t\t\t() => reset\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tinvoke_error_boundary(error, /** @type {Effect} */ (this.#effect.parent));\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.#is_creating_fallback = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n}\n\nexport function get_boundary() {\n\treturn /** @type {Boundary} */ (/** @type {Effect} */ (active_effect).b);\n}\n\nexport function pending() {\n\tif (active_effect === null) {\n\t\te.effect_pending_outside_reaction();\n\t}\n\n\tvar boundary = active_effect.b;\n\n\tif (boundary === null) {\n\t\treturn 0; // TODO eventually we will need this to be global\n\t}\n\n\treturn boundary.get_effect_pending();\n}\n","/** @import { Derived, Effect, Source } from '#client' */\n/** @import { Batch } from './batch.js'; */\nimport { DEV } from 'esm-env';\nimport {\n\tERROR_VALUE,\n\tCLEAN,\n\tDERIVED,\n\tDIRTY,\n\tEFFECT_PRESERVED,\n\tMAYBE_DIRTY,\n\tSTALE_REACTION,\n\tASYNC,\n\tWAS_MARKED,\n\tCONNECTED,\n\tDESTROYED\n} from '#client/constants';\nimport {\n\tactive_reaction,\n\tactive_effect,\n\tset_signal_status,\n\tupdate_reaction,\n\tincrement_write_version,\n\tset_active_effect,\n\tpush_reaction_value,\n\tis_destroying_effect\n} from '../runtime.js';\nimport { equals, safe_equals } from './equality.js';\nimport * as e from '../errors.js';\nimport * as w from '../warnings.js';\nimport { async_effect, destroy_effect, effect_tracking, teardown } from './effects.js';\nimport { eager_effects, internal_set, set_eager_effects, source } from './sources.js';\nimport { get_stack } from '../dev/tracing.js';\nimport { async_mode_flag, tracing_mode_flag } from '../../flags/index.js';\nimport { Boundary } from '../dom/blocks/boundary.js';\nimport { component_context } from '../context.js';\nimport { UNINITIALIZED } from '../../../constants.js';\nimport { batch_values, current_batch } from './batch.js';\nimport { unset_context } from './async.js';\nimport { deferred } from '../../shared/utils.js';\n\n/** @type {Effect | null} */\nexport let current_async_effect = null;\n\n/** @param {Effect | null} v */\nexport function set_from_async_derived(v) {\n\tcurrent_async_effect = v;\n}\n\nexport const recent_async_deriveds = new Set();\n\n/**\n * @template V\n * @param {() => V} fn\n * @returns {Derived<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function derived(fn) {\n\tvar flags = DERIVED | DIRTY;\n\tvar parent_derived =\n\t\tactive_reaction !== null && (active_reaction.f & DERIVED) !== 0\n\t\t\t? /** @type {Derived} */ (active_reaction)\n\t\t\t: null;\n\n\tif (active_effect !== null) {\n\t\t// Since deriveds are evaluated lazily, any effects created inside them are\n\t\t// created too late to ensure that the parent effect is added to the tree\n\t\tactive_effect.f |= EFFECT_PRESERVED;\n\t}\n\n\t/** @type {Derived<V>} */\n\tconst signal = {\n\t\tctx: component_context,\n\t\tdeps: null,\n\t\teffects: null,\n\t\tequals,\n\t\tf: flags,\n\t\tfn,\n\t\treactions: null,\n\t\trv: 0,\n\t\tv: /** @type {V} */ (UNINITIALIZED),\n\t\twv: 0,\n\t\tparent: parent_derived ?? active_effect,\n\t\tac: null\n\t};\n\n\tif (DEV && tracing_mode_flag) {\n\t\tsignal.created = get_stack('created at');\n\t}\n\n\treturn signal;\n}\n\n/**\n * @template V\n * @param {() => V | Promise<V>} fn\n * @param {string} [location] If provided, print a warning if the value is not read immediately after update\n * @returns {Promise<Source<V>>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function async_derived(fn, location) {\n\tlet parent = /** @type {Effect | null} */ (active_effect);\n\n\tif (parent === null) {\n\t\te.async_derived_orphan();\n\t}\n\n\tvar boundary = /** @type {Boundary} */ (parent.b);\n\n\tvar promise = /** @type {Promise<V>} */ (/** @type {unknown} */ (undefined));\n\tvar signal = source(/** @type {V} */ (UNINITIALIZED));\n\n\t// only suspend in async deriveds created on initialisation\n\tvar should_suspend = !active_reaction;\n\n\t/** @type {Map<Batch, ReturnType<typeof deferred<V>>>} */\n\tvar deferreds = new Map();\n\n\tasync_effect(() => {\n\t\tif (DEV) current_async_effect = active_effect;\n\n\t\t/** @type {ReturnType<typeof deferred<V>>} */\n\t\tvar d = deferred();\n\t\tpromise = d.promise;\n\n\t\ttry {\n\t\t\t// If this code is changed at some point, make sure to still access the then property\n\t\t\t// of fn() to read any signals it might access, so that we track them as dependencies.\n\t\t\t// We call `unset_context` to undo any `save` calls that happen inside `fn()`\n\t\t\tPromise.resolve(fn())\n\t\t\t\t.then(d.resolve, d.reject)\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (batch === current_batch && batch.committed) {\n\t\t\t\t\t\t// if the batch was rejected as stale, we need to cleanup\n\t\t\t\t\t\t// after any `$.save(...)` calls inside `fn()`\n\t\t\t\t\t\tbatch.deactivate();\n\t\t\t\t\t}\n\n\t\t\t\t\tunset_context();\n\t\t\t\t});\n\t\t} catch (error) {\n\t\t\td.reject(error);\n\t\t\tunset_context();\n\t\t}\n\n\t\tif (DEV) current_async_effect = null;\n\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\n\t\tif (should_suspend) {\n\t\t\tvar blocking = !boundary.is_pending();\n\n\t\t\tboundary.update_pending_count(1);\n\t\t\tbatch.increment(blocking);\n\n\t\t\tdeferreds.get(batch)?.reject(STALE_REACTION);\n\t\t\tdeferreds.delete(batch); // delete to ensure correct order in Map iteration below\n\t\t\tdeferreds.set(batch, d);\n\t\t}\n\n\t\t/**\n\t\t * @param {any} value\n\t\t * @param {unknown} error\n\t\t */\n\t\tconst handler = (value, error = undefined) => {\n\t\t\tcurrent_async_effect = null;\n\n\t\t\tbatch.activate();\n\n\t\t\tif (error) {\n\t\t\t\tif (error !== STALE_REACTION) {\n\t\t\t\t\tsignal.f |= ERROR_VALUE;\n\n\t\t\t\t\t// @ts-expect-error the error is the wrong type, but we don't care\n\t\t\t\t\tinternal_set(signal, error);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ((signal.f & ERROR_VALUE) !== 0) {\n\t\t\t\t\tsignal.f ^= ERROR_VALUE;\n\t\t\t\t}\n\n\t\t\t\tinternal_set(signal, value);\n\n\t\t\t\t// All prior async derived runs are now stale\n\t\t\t\tfor (const [b, d] of deferreds) {\n\t\t\t\t\tdeferreds.delete(b);\n\t\t\t\t\tif (b === batch) break;\n\t\t\t\t\td.reject(STALE_REACTION);\n\t\t\t\t}\n\n\t\t\t\tif (DEV && location !== undefined) {\n\t\t\t\t\trecent_async_deriveds.add(signal);\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (recent_async_deriveds.has(signal)) {\n\t\t\t\t\t\t\tw.await_waterfall(/** @type {string} */ (signal.label), location);\n\t\t\t\t\t\t\trecent_async_deriveds.delete(signal);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (should_suspend) {\n\t\t\t\tboundary.update_pending_count(-1);\n\t\t\t\tbatch.decrement(blocking);\n\t\t\t}\n\t\t};\n\n\t\td.promise.then(handler, (e) => handler(null, e || 'unknown'));\n\t});\n\n\tteardown(() => {\n\t\tfor (const d of deferreds.values()) {\n\t\t\td.reject(STALE_REACTION);\n\t\t}\n\t});\n\n\tif (DEV) {\n\t\t// add a flag that lets this be printed as a derived\n\t\t// when using `$inspect.trace()`\n\t\tsignal.f |= ASYNC;\n\t}\n\n\treturn new Promise((fulfil) => {\n\t\t/** @param {Promise<V>} p */\n\t\tfunction next(p) {\n\t\t\tfunction go() {\n\t\t\t\tif (p === promise) {\n\t\t\t\t\tfulfil(signal);\n\t\t\t\t} else {\n\t\t\t\t\t// if the effect re-runs before the initial promise\n\t\t\t\t\t// resolves, delay resolution until we have a value\n\t\t\t\t\tnext(promise);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tp.then(go, go);\n\t\t}\n\n\t\tnext(promise);\n\t});\n}\n\n/**\n * @template V\n * @param {() => V} fn\n * @returns {Derived<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function user_derived(fn) {\n\tconst d = derived(fn);\n\n\tif (!async_mode_flag) push_reaction_value(d);\n\n\treturn d;\n}\n\n/**\n * @template V\n * @param {() => V} fn\n * @returns {Derived<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function derived_safe_equal(fn) {\n\tconst signal = derived(fn);\n\tsignal.equals = safe_equals;\n\treturn signal;\n}\n\n/**\n * @param {Derived} derived\n * @returns {void}\n */\nexport function destroy_derived_effects(derived) {\n\tvar effects = derived.effects;\n\n\tif (effects !== null) {\n\t\tderived.effects = null;\n\n\t\tfor (var i = 0; i < effects.length; i += 1) {\n\t\t\tdestroy_effect(/** @type {Effect} */ (effects[i]));\n\t\t}\n\t}\n}\n\n/**\n * The currently updating deriveds, used to detect infinite recursion\n * in dev mode and provide a nicer error than 'too much recursion'\n * @type {Derived[]}\n */\nlet stack = [];\n\n/**\n * @param {Derived} derived\n * @returns {Effect | null}\n */\nfunction get_derived_parent_effect(derived) {\n\tvar parent = derived.parent;\n\twhile (parent !== null) {\n\t\tif ((parent.f & DERIVED) === 0) {\n\t\t\t// The original parent effect might've been destroyed but the derived\n\t\t\t// is used elsewhere now - do not return the destroyed effect in that case\n\t\t\treturn (parent.f & DESTROYED) === 0 ? /** @type {Effect} */ (parent) : null;\n\t\t}\n\t\tparent = parent.parent;\n\t}\n\treturn null;\n}\n\n/**\n * @template T\n * @param {Derived} derived\n * @returns {T}\n */\nexport function execute_derived(derived) {\n\tvar value;\n\tvar prev_active_effect = active_effect;\n\n\tset_active_effect(get_derived_parent_effect(derived));\n\n\tif (DEV) {\n\t\tlet prev_eager_effects = eager_effects;\n\t\tset_eager_effects(new Set());\n\t\ttry {\n\t\t\tif (stack.includes(derived)) {\n\t\t\t\te.derived_references_self();\n\t\t\t}\n\n\t\t\tstack.push(derived);\n\n\t\t\tderived.f &= ~WAS_MARKED;\n\t\t\tdestroy_derived_effects(derived);\n\t\t\tvalue = update_reaction(derived);\n\t\t} finally {\n\t\t\tset_active_effect(prev_active_effect);\n\t\t\tset_eager_effects(prev_eager_effects);\n\t\t\tstack.pop();\n\t\t}\n\t} else {\n\t\ttry {\n\t\t\tderived.f &= ~WAS_MARKED;\n\t\t\tdestroy_derived_effects(derived);\n\t\t\tvalue = update_reaction(derived);\n\t\t} finally {\n\t\t\tset_active_effect(prev_active_effect);\n\t\t}\n\t}\n\n\treturn value;\n}\n\n/**\n * @param {Derived} derived\n * @returns {void}\n */\nexport function update_derived(derived) {\n\tvar value = execute_derived(derived);\n\n\tif (!derived.equals(value)) {\n\t\t// in a fork, we don't update the underlying value, just `batch_values`.\n\t\t// the underlying value will be updated when the fork is committed.\n\t\t// otherwise, the next time we get here after a 'real world' state\n\t\t// change, `derived.equals` may incorrectly return `true`\n\t\tif (!current_batch?.is_fork) {\n\t\t\tderived.v = value;\n\t\t}\n\n\t\tderived.wv = increment_write_version();\n\t}\n\n\t// don't mark derived clean if we're reading it inside a\n\t// cleanup function, or it will cache a stale value\n\tif (is_destroying_effect) {\n\t\treturn;\n\t}\n\n\t// During time traveling we don't want to reset the status so that\n\t// traversal of the graph in the other batches still happens\n\tif (batch_values !== null) {\n\t\t// only cache the value if we're in a tracking context, otherwise we won't\n\t\t// clear the cache in `mark_reactions` when dependencies are updated\n\t\tif (effect_tracking()) {\n\t\t\tbatch_values.set(derived, value);\n\t\t}\n\t} else {\n\t\tvar status = (derived.f & CONNECTED) === 0 ? MAYBE_DIRTY : CLEAN;\n\t\tset_signal_status(derived, status);\n\t}\n}\n","/** @import { Derived, Effect, Source, Value } from '#client' */\nimport { DEV } from 'esm-env';\nimport {\n\tactive_reaction,\n\tactive_effect,\n\tuntracked_writes,\n\tget,\n\tset_untracked_writes,\n\tset_signal_status,\n\tuntrack,\n\tincrement_write_version,\n\tupdate_effect,\n\tcurrent_sources,\n\tis_dirty,\n\tuntracking,\n\tis_destroying_effect,\n\tpush_reaction_value,\n\tset_is_updating_effect,\n\tis_updating_effect\n} from '../runtime.js';\nimport { equals, safe_equals } from './equality.js';\nimport {\n\tCLEAN,\n\tDERIVED,\n\tDIRTY,\n\tBRANCH_EFFECT,\n\tEAGER_EFFECT,\n\tMAYBE_DIRTY,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tASYNC,\n\tWAS_MARKED,\n\tCONNECTED\n} from '#client/constants';\nimport * as e from '../errors.js';\nimport { legacy_mode_flag, tracing_mode_flag } from '../../flags/index.js';\nimport { get_stack, tag_proxy } from '../dev/tracing.js';\nimport { component_context, is_runes } from '../context.js';\nimport { Batch, batch_values, eager_block_effects, schedule_effect } from './batch.js';\nimport { proxy } from '../proxy.js';\nimport { execute_derived } from './deriveds.js';\n\n/** @type {Set<any>} */\nexport let eager_effects = new Set();\n\n/** @type {Map<Source, any>} */\nexport const old_values = new Map();\n\n/**\n * @param {Set<any>} v\n */\nexport function set_eager_effects(v) {\n\teager_effects = v;\n}\n\nlet eager_effects_deferred = false;\n\nexport function set_eager_effects_deferred() {\n\teager_effects_deferred = true;\n}\n\n/**\n * @template V\n * @param {V} v\n * @param {Error | null} [stack]\n * @returns {Source<V>}\n */\n// TODO rename this to `state` throughout the codebase\nexport function source(v, stack) {\n\t/** @type {Value} */\n\tvar signal = {\n\t\tf: 0, // TODO ideally we could skip this altogether, but it causes type errors\n\t\tv,\n\t\treactions: null,\n\t\tequals,\n\t\trv: 0,\n\t\twv: 0\n\t};\n\n\tif (DEV && tracing_mode_flag) {\n\t\tsignal.created = stack ?? get_stack('created at');\n\t\tsignal.updated = null;\n\t\tsignal.set_during_effect = false;\n\t\tsignal.trace = null;\n\t}\n\n\treturn signal;\n}\n\n/**\n * @template V\n * @param {V} v\n * @param {Error | null} [stack]\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function state(v, stack) {\n\tconst s = source(v, stack);\n\n\tpush_reaction_value(s);\n\n\treturn s;\n}\n\n/**\n * @template V\n * @param {V} initial_value\n * @param {boolean} [immutable]\n * @returns {Source<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function mutable_source(initial_value, immutable = false, trackable = true) {\n\tconst s = source(initial_value);\n\tif (!immutable) {\n\t\ts.equals = safe_equals;\n\t}\n\n\t// bind the signal to the component context, in case we need to\n\t// track updates to trigger beforeUpdate/afterUpdate callbacks\n\tif (legacy_mode_flag && trackable && component_context !== null && component_context.l !== null) {\n\t\t(component_context.l.s ??= []).push(s);\n\t}\n\n\treturn s;\n}\n\n/**\n * @template V\n * @param {Value<V>} source\n * @param {V} value\n */\nexport function mutate(source, value) {\n\tset(\n\t\tsource,\n\t\tuntrack(() => get(source))\n\t);\n\treturn value;\n}\n\n/**\n * @template V\n * @param {Source<V>} source\n * @param {V} value\n * @param {boolean} [should_proxy]\n * @returns {V}\n */\nexport function set(source, value, should_proxy = false) {\n\tif (\n\t\tactive_reaction !== null &&\n\t\t// since we are untracking the function inside `$inspect.with` we need to add this check\n\t\t// to ensure we error if state is set inside an inspect effect\n\t\t(!untracking || (active_reaction.f & EAGER_EFFECT) !== 0) &&\n\t\tis_runes() &&\n\t\t(active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | EAGER_EFFECT)) !== 0 &&\n\t\t!current_sources?.includes(source)\n\t) {\n\t\te.state_unsafe_mutation();\n\t}\n\n\tlet new_value = should_proxy ? proxy(value) : value;\n\n\tif (DEV) {\n\t\ttag_proxy(new_value, /** @type {string} */ (source.label));\n\t}\n\n\treturn internal_set(source, new_value);\n}\n\n/**\n * @template V\n * @param {Source<V>} source\n * @param {V} value\n * @returns {V}\n */\nexport function internal_set(source, value) {\n\tif (!source.equals(value)) {\n\t\tvar old_value = source.v;\n\n\t\tif (is_destroying_effect) {\n\t\t\told_values.set(source, value);\n\t\t} else {\n\t\t\told_values.set(source, old_value);\n\t\t}\n\n\t\tsource.v = value;\n\n\t\tvar batch = Batch.ensure();\n\t\tbatch.capture(source, old_value);\n\n\t\tif (DEV) {\n\t\t\tif (tracing_mode_flag || active_effect !== null) {\n\t\t\t\tsource.updated ??= new Map();\n\n\t\t\t\t// For performance reasons, when not using $inspect.trace, we only start collecting stack traces\n\t\t\t\t// after the same source has been updated more than 5 times in the same flush cycle.\n\t\t\t\tconst count = (source.updated.get('')?.count ?? 0) + 1;\n\t\t\t\tsource.updated.set('', { error: /** @type {any} */ (null), count });\n\n\t\t\t\tif (tracing_mode_flag || count > 5) {\n\t\t\t\t\tconst error = get_stack('updated at');\n\n\t\t\t\t\tif (error !== null) {\n\t\t\t\t\t\tlet entry = source.updated.get(error.stack);\n\n\t\t\t\t\t\tif (!entry) {\n\t\t\t\t\t\t\tentry = { error, count: 0 };\n\t\t\t\t\t\t\tsource.updated.set(error.stack, entry);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tentry.count++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (active_effect !== null) {\n\t\t\t\tsource.set_during_effect = true;\n\t\t\t}\n\t\t}\n\n\t\tif ((source.f & DERIVED) !== 0) {\n\t\t\t// if we are assigning to a dirty derived we set it to clean/maybe dirty but we also eagerly execute it to track the dependencies\n\t\t\tif ((source.f & DIRTY) !== 0) {\n\t\t\t\texecute_derived(/** @type {Derived} */ (source));\n\t\t\t}\n\n\t\t\tset_signal_status(source, (source.f & CONNECTED) !== 0 ? CLEAN : MAYBE_DIRTY);\n\t\t}\n\n\t\tsource.wv = increment_write_version();\n\n\t\tmark_reactions(source, DIRTY);\n\n\t\t// It's possible that the current reaction might not have up-to-date dependencies\n\t\t// whilst it's actively running. So in the case of ensuring it registers the reaction\n\t\t// properly for itself, we need to ensure the current effect actually gets\n\t\t// scheduled. i.e: `$effect(() => x++)`\n\t\tif (\n\t\t\tis_runes() &&\n\t\t\tactive_effect !== null &&\n\t\t\t(active_effect.f & CLEAN) !== 0 &&\n\t\t\t(active_effect.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0\n\t\t) {\n\t\t\tif (untracked_writes === null) {\n\t\t\t\tset_untracked_writes([source]);\n\t\t\t} else {\n\t\t\t\tuntracked_writes.push(source);\n\t\t\t}\n\t\t}\n\n\t\tif (!batch.is_fork && eager_effects.size > 0 && !eager_effects_deferred) {\n\t\t\tflush_eager_effects();\n\t\t}\n\t}\n\n\treturn value;\n}\n\nexport function flush_eager_effects() {\n\teager_effects_deferred = false;\n\tvar prev_is_updating_effect = is_updating_effect;\n\tset_is_updating_effect(true);\n\n\tconst inspects = Array.from(eager_effects);\n\n\ttry {\n\t\tfor (const effect of inspects) {\n\t\t\t// Mark clean inspect-effects as maybe dirty and then check their dirtiness\n\t\t\t// instead of just updating the effects - this way we avoid overfiring.\n\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t}\n\n\t\t\tif (is_dirty(effect)) {\n\t\t\t\tupdate_effect(effect);\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tset_is_updating_effect(prev_is_updating_effect);\n\t}\n\n\teager_effects.clear();\n}\n\n/**\n * @template {number | bigint} T\n * @param {Source<T>} source\n * @param {1 | -1} [d]\n * @returns {T}\n */\nexport function update(source, d = 1) {\n\tvar value = get(source);\n\tvar result = d === 1 ? value++ : value--;\n\n\tset(source, value);\n\n\t// @ts-expect-error\n\treturn result;\n}\n\n/**\n * @template {number | bigint} T\n * @param {Source<T>} source\n * @param {1 | -1} [d]\n * @returns {T}\n */\nexport function update_pre(source, d = 1) {\n\tvar value = get(source);\n\n\t// @ts-expect-error\n\treturn set(source, d === 1 ? ++value : --value);\n}\n\n/**\n * Silently (without using `get`) increment a source\n * @param {Source<number>} source\n */\nexport function increment(source) {\n\tset(source, source.v + 1);\n}\n\n/**\n * @param {Value} signal\n * @param {number} status should be DIRTY or MAYBE_DIRTY\n * @returns {void}\n */\nfunction mark_reactions(signal, status) {\n\tvar reactions = signal.reactions;\n\tif (reactions === null) return;\n\n\tvar runes = is_runes();\n\tvar length = reactions.length;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tvar reaction = reactions[i];\n\t\tvar flags = reaction.f;\n\n\t\t// In legacy mode, skip the current effect to prevent infinite loops\n\t\tif (!runes && reaction === active_effect) continue;\n\n\t\t// Inspect effects need to run immediately, so that the stack trace makes sense\n\t\tif (DEV && (flags & EAGER_EFFECT) !== 0) {\n\t\t\teager_effects.add(reaction);\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar not_dirty = (flags & DIRTY) === 0;\n\n\t\t// don't set a DIRTY reaction to MAYBE_DIRTY\n\t\tif (not_dirty) {\n\t\t\tset_signal_status(reaction, status);\n\t\t}\n\n\t\tif ((flags & DERIVED) !== 0) {\n\t\t\tvar derived = /** @type {Derived} */ (reaction);\n\n\t\t\tbatch_values?.delete(derived);\n\n\t\t\tif ((flags & WAS_MARKED) === 0) {\n\t\t\t\t// Only connected deriveds can be reliably unmarked right away\n\t\t\t\tif (flags & CONNECTED) {\n\t\t\t\t\treaction.f |= WAS_MARKED;\n\t\t\t\t}\n\n\t\t\t\tmark_reactions(derived, MAYBE_DIRTY);\n\t\t\t}\n\t\t} else if (not_dirty) {\n\t\t\tif ((flags & BLOCK_EFFECT) !== 0) {\n\t\t\t\tif (eager_block_effects !== null) {\n\t\t\t\t\teager_block_effects.add(/** @type {Effect} */ (reaction));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t}\n\t}\n}\n","/** @import { Source } from '#client' */\nimport { DEV } from 'esm-env';\nimport {\n\tget,\n\tactive_effect,\n\tupdate_version,\n\tactive_reaction,\n\tset_update_version,\n\tset_active_reaction\n} from './runtime.js';\nimport {\n\tarray_prototype,\n\tget_descriptor,\n\tget_prototype_of,\n\tis_array,\n\tobject_prototype\n} from '../shared/utils.js';\nimport {\n\tstate as source,\n\tset,\n\tincrement,\n\tflush_eager_effects,\n\tset_eager_effects_deferred\n} from './reactivity/sources.js';\nimport { PROXY_PATH_SYMBOL, STATE_SYMBOL } from '#client/constants';\nimport { UNINITIALIZED } from '../../constants.js';\nimport * as e from './errors.js';\nimport { get_stack, tag } from './dev/tracing.js';\nimport { tracing_mode_flag } from '../flags/index.js';\n\n// TODO move all regexes into shared module?\nconst regex_is_valid_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;\n\n/**\n * @template T\n * @param {T} value\n * @returns {T}\n */\nexport function proxy(value) {\n\t// if non-proxyable, or is already a proxy, return `value`\n\tif (typeof value !== 'object' || value === null || STATE_SYMBOL in value) {\n\t\treturn value;\n\t}\n\n\tconst prototype = get_prototype_of(value);\n\n\tif (prototype !== object_prototype && prototype !== array_prototype) {\n\t\treturn value;\n\t}\n\n\t/** @type {Map<any, Source<any>>} */\n\tvar sources = new Map();\n\tvar is_proxied_array = is_array(value);\n\tvar version = source(0);\n\n\tvar stack = DEV && tracing_mode_flag ? get_stack('created at') : null;\n\tvar parent_version = update_version;\n\n\t/**\n\t * Executes the proxy in the context of the reaction it was originally created in, if any\n\t * @template T\n\t * @param {() => T} fn\n\t */\n\tvar with_parent = (fn) => {\n\t\tif (update_version === parent_version) {\n\t\t\treturn fn();\n\t\t}\n\n\t\t// child source is being created after the initial proxy —\n\t\t// prevent it from being associated with the current reaction\n\t\tvar reaction = active_reaction;\n\t\tvar version = update_version;\n\n\t\tset_active_reaction(null);\n\t\tset_update_version(parent_version);\n\n\t\tvar result = fn();\n\n\t\tset_active_reaction(reaction);\n\t\tset_update_version(version);\n\n\t\treturn result;\n\t};\n\n\tif (is_proxied_array) {\n\t\t// We need to create the length source eagerly to ensure that\n\t\t// mutations to the array are properly synced with our proxy\n\t\tsources.set('length', source(/** @type {any[]} */ (value).length, stack));\n\t\tif (DEV) {\n\t\t\tvalue = /** @type {any} */ (inspectable_array(/** @type {any[]} */ (value)));\n\t\t}\n\t}\n\n\t/** Used in dev for $inspect.trace() */\n\tvar path = '';\n\tlet updating = false;\n\t/** @param {string} new_path */\n\tfunction update_path(new_path) {\n\t\tif (updating) return;\n\t\tupdating = true;\n\t\tpath = new_path;\n\n\t\ttag(version, `${path} version`);\n\n\t\t// rename all child sources and child proxies\n\t\tfor (const [prop, source] of sources) {\n\t\t\ttag(source, get_label(path, prop));\n\t\t}\n\t\tupdating = false;\n\t}\n\n\treturn new Proxy(/** @type {any} */ (value), {\n\t\tdefineProperty(_, prop, descriptor) {\n\t\t\tif (\n\t\t\t\t!('value' in descriptor) ||\n\t\t\t\tdescriptor.configurable === false ||\n\t\t\t\tdescriptor.enumerable === false ||\n\t\t\t\tdescriptor.writable === false\n\t\t\t) {\n\t\t\t\t// we disallow non-basic descriptors, because unless they are applied to the\n\t\t\t\t// target object — which we avoid, so that state can be forked — we will run\n\t\t\t\t// afoul of the various invariants\n\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor#invariants\n\t\t\t\te.state_descriptors_fixed();\n\t\t\t}\n\t\t\tvar s = sources.get(prop);\n\t\t\tif (s === undefined) {\n\t\t\t\ts = with_parent(() => {\n\t\t\t\t\tvar s = source(descriptor.value, stack);\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t\tif (DEV && typeof prop === 'string') {\n\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t}\n\t\t\t\t\treturn s;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tset(s, descriptor.value, true);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\tdeleteProperty(target, prop) {\n\t\t\tvar s = sources.get(prop);\n\n\t\t\tif (s === undefined) {\n\t\t\t\tif (prop in target) {\n\t\t\t\t\tconst s = with_parent(() => source(UNINITIALIZED, stack));\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t\tincrement(version);\n\n\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tset(s, UNINITIALIZED);\n\t\t\t\tincrement(version);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\tget(target, prop, receiver) {\n\t\t\tif (prop === STATE_SYMBOL) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (DEV && prop === PROXY_PATH_SYMBOL) {\n\t\t\t\treturn update_path;\n\t\t\t}\n\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar exists = prop in target;\n\n\t\t\t// create a source, but only if it's an own property and not a prototype property\n\t\t\tif (s === undefined && (!exists || get_descriptor(target, prop)?.writable)) {\n\t\t\t\ts = with_parent(() => {\n\t\t\t\t\tvar p = proxy(exists ? target[prop] : UNINITIALIZED);\n\t\t\t\t\tvar s = source(p, stack);\n\n\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn s;\n\t\t\t\t});\n\n\t\t\t\tsources.set(prop, s);\n\t\t\t}\n\n\t\t\tif (s !== undefined) {\n\t\t\t\tvar v = get(s);\n\t\t\t\treturn v === UNINITIALIZED ? undefined : v;\n\t\t\t}\n\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t},\n\n\t\tgetOwnPropertyDescriptor(target, prop) {\n\t\t\tvar descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\t\t\tif (descriptor && 'value' in descriptor) {\n\t\t\t\tvar s = sources.get(prop);\n\t\t\t\tif (s) descriptor.value = get(s);\n\t\t\t} else if (descriptor === undefined) {\n\t\t\t\tvar source = sources.get(prop);\n\t\t\t\tvar value = source?.v;\n\n\t\t\t\tif (source !== undefined && value !== UNINITIALIZED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\twritable: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn descriptor;\n\t\t},\n\n\t\thas(target, prop) {\n\t\t\tif (prop === STATE_SYMBOL) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar has = (s !== undefined && s.v !== UNINITIALIZED) || Reflect.has(target, prop);\n\n\t\t\tif (\n\t\t\t\ts !== undefined ||\n\t\t\t\t(active_effect !== null && (!has || get_descriptor(target, prop)?.writable))\n\t\t\t) {\n\t\t\t\tif (s === undefined) {\n\t\t\t\t\ts = with_parent(() => {\n\t\t\t\t\t\tvar p = has ? proxy(target[prop]) : UNINITIALIZED;\n\t\t\t\t\t\tvar s = source(p, stack);\n\n\t\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t}\n\n\t\t\t\tvar value = get(s);\n\t\t\t\tif (value === UNINITIALIZED) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn has;\n\t\t},\n\n\t\tset(target, prop, value, receiver) {\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar has = prop in target;\n\n\t\t\t// variable.length = value -> clear all signals with index >= value\n\t\t\tif (is_proxied_array && prop === 'length') {\n\t\t\t\tfor (var i = value; i < /** @type {Source<number>} */ (s).v; i += 1) {\n\t\t\t\t\tvar other_s = sources.get(i + '');\n\t\t\t\t\tif (other_s !== undefined) {\n\t\t\t\t\t\tset(other_s, UNINITIALIZED);\n\t\t\t\t\t} else if (i in target) {\n\t\t\t\t\t\t// If the item exists in the original, we need to create an uninitialized source,\n\t\t\t\t\t\t// else a later read of the property would result in a source being created with\n\t\t\t\t\t\t// the value of the original item at that index.\n\t\t\t\t\t\tother_s = with_parent(() => source(UNINITIALIZED, stack));\n\t\t\t\t\t\tsources.set(i + '', other_s);\n\n\t\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\t\ttag(other_s, get_label(path, i));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we haven't yet created a source for this property, we need to ensure\n\t\t\t// we do so otherwise if we read it later, then the write won't be tracked and\n\t\t\t// the heuristics of effects will be different vs if we had read the proxied\n\t\t\t// object property before writing to that property.\n\t\t\tif (s === undefined) {\n\t\t\t\tif (!has || get_descriptor(target, prop)?.writable) {\n\t\t\t\t\ts = with_parent(() => source(undefined, stack));\n\n\t\t\t\t\tif (DEV) {\n\t\t\t\t\t\ttag(s, get_label(path, prop));\n\t\t\t\t\t}\n\t\t\t\t\tset(s, proxy(value));\n\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thas = s.v !== UNINITIALIZED;\n\n\t\t\t\tvar p = with_parent(() => proxy(value));\n\t\t\t\tset(s, p);\n\t\t\t}\n\n\t\t\tvar descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\t\t\t// Set the new value before updating any signals so that any listeners get the new value\n\t\t\tif (descriptor?.set) {\n\t\t\t\tdescriptor.set.call(receiver, value);\n\t\t\t}\n\n\t\t\tif (!has) {\n\t\t\t\t// If we have mutated an array directly, we might need to\n\t\t\t\t// signal that length has also changed. Do it before updating metadata\n\t\t\t\t// to ensure that iterating over the array as a result of a metadata update\n\t\t\t\t// will not cause the length to be out of sync.\n\t\t\t\tif (is_proxied_array && typeof prop === 'string') {\n\t\t\t\t\tvar ls = /** @type {Source<number>} */ (sources.get('length'));\n\t\t\t\t\tvar n = Number(prop);\n\n\t\t\t\t\tif (Number.isInteger(n) && n >= ls.v) {\n\t\t\t\t\t\tset(ls, n + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tincrement(version);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\townKeys(target) {\n\t\t\tget(version);\n\n\t\t\tvar own_keys = Reflect.ownKeys(target).filter((key) => {\n\t\t\t\tvar source = sources.get(key);\n\t\t\t\treturn source === undefined || source.v !== UNINITIALIZED;\n\t\t\t});\n\n\t\t\tfor (var [key, source] of sources) {\n\t\t\t\tif (source.v !== UNINITIALIZED && !(key in target)) {\n\t\t\t\t\town_keys.push(key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn own_keys;\n\t\t},\n\n\t\tsetPrototypeOf() {\n\t\t\te.state_prototype_fixed();\n\t\t}\n\t});\n}\n\n/**\n * @param {string} path\n * @param {string | symbol} prop\n */\nfunction get_label(path, prop) {\n\tif (typeof prop === 'symbol') return `${path}[Symbol(${prop.description ?? ''})]`;\n\tif (regex_is_valid_identifier.test(prop)) return `${path}.${prop}`;\n\treturn /^\\d+$/.test(prop) ? `${path}[${prop}]` : `${path}['${prop}']`;\n}\n\n/**\n * @param {any} value\n */\nexport function get_proxied_value(value) {\n\ttry {\n\t\tif (value !== null && typeof value === 'object' && STATE_SYMBOL in value) {\n\t\t\treturn value[STATE_SYMBOL];\n\t\t}\n\t} catch {\n\t\t// the above if check can throw an error if the value in question\n\t\t// is the contentWindow of an iframe on another domain, in which\n\t\t// case we want to just return the value (because it's definitely\n\t\t// not a proxied value) so we don't break any JavaScript interacting\n\t\t// with that iframe (such as various payment companies client side\n\t\t// JavaScript libraries interacting with their iframes on the same\n\t\t// domain)\n\t}\n\n\treturn value;\n}\n\n/**\n * @param {any} a\n * @param {any} b\n */\nexport function is(a, b) {\n\treturn Object.is(get_proxied_value(a), get_proxied_value(b));\n}\n\nconst ARRAY_MUTATING_METHODS = new Set([\n\t'copyWithin',\n\t'fill',\n\t'pop',\n\t'push',\n\t'reverse',\n\t'shift',\n\t'sort',\n\t'splice',\n\t'unshift'\n]);\n\n/**\n * Wrap array mutating methods so $inspect is triggered only once and\n * to prevent logging an array in intermediate state (e.g. with an empty slot)\n * @param {any[]} array\n */\nfunction inspectable_array(array) {\n\treturn new Proxy(array, {\n\t\tget(target, prop, receiver) {\n\t\t\tvar value = Reflect.get(target, prop, receiver);\n\t\t\tif (!ARRAY_MUTATING_METHODS.has(/** @type {string} */ (prop))) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * @this {any[]}\n\t\t\t * @param {any[]} args\n\t\t\t */\n\t\t\treturn function (...args) {\n\t\t\t\tset_eager_effects_deferred();\n\t\t\t\tvar result = value.apply(this, args);\n\t\t\t\tflush_eager_effects();\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t});\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { hydrate_node, hydrating, set_hydrate_node } from './hydration.js';\nimport { DEV } from 'esm-env';\nimport { init_array_prototype_warnings } from '../dev/equality.js';\nimport { get_descriptor, is_extensible } from '../../shared/utils.js';\nimport { active_effect } from '../runtime.js';\nimport { async_mode_flag } from '../../flags/index.js';\nimport { TEXT_NODE, EFFECT_RAN } from '#client/constants';\nimport { eager_block_effects } from '../reactivity/batch.js';\n\n// export these for reference in the compiled code, making global name deduplication unnecessary\n/** @type {Window} */\nexport var $window;\n\n/** @type {Document} */\nexport var $document;\n\n/** @type {boolean} */\nexport var is_firefox;\n\n/** @type {() => Node | null} */\nvar first_child_getter;\n/** @type {() => Node | null} */\nvar next_sibling_getter;\n\n/**\n * Initialize these lazily to avoid issues when using the runtime in a server context\n * where these globals are not available while avoiding a separate server entry point\n */\nexport function init_operations() {\n\tif ($window !== undefined) {\n\t\treturn;\n\t}\n\n\t$window = window;\n\t$document = document;\n\tis_firefox = /Firefox/.test(navigator.userAgent);\n\n\tvar element_prototype = Element.prototype;\n\tvar node_prototype = Node.prototype;\n\tvar text_prototype = Text.prototype;\n\n\t// @ts-ignore\n\tfirst_child_getter = get_descriptor(node_prototype, 'firstChild').get;\n\t// @ts-ignore\n\tnext_sibling_getter = get_descriptor(node_prototype, 'nextSibling').get;\n\n\tif (is_extensible(element_prototype)) {\n\t\t// the following assignments improve perf of lookups on DOM nodes\n\t\t// @ts-expect-error\n\t\telement_prototype.__click = undefined;\n\t\t// @ts-expect-error\n\t\telement_prototype.__className = undefined;\n\t\t// @ts-expect-error\n\t\telement_prototype.__attributes = null;\n\t\t// @ts-expect-error\n\t\telement_prototype.__style = undefined;\n\t\t// @ts-expect-error\n\t\telement_prototype.__e = undefined;\n\t}\n\n\tif (is_extensible(text_prototype)) {\n\t\t// @ts-expect-error\n\t\ttext_prototype.__t = undefined;\n\t}\n\n\tif (DEV) {\n\t\t// @ts-expect-error\n\t\telement_prototype.__svelte_meta = null;\n\n\t\tinit_array_prototype_warnings();\n\t}\n}\n\n/**\n * @param {string} value\n * @returns {Text}\n */\nexport function create_text(value = '') {\n\treturn document.createTextNode(value);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {Node | null}\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function get_first_child(node) {\n\treturn first_child_getter.call(node);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {Node | null}\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function get_next_sibling(node) {\n\treturn next_sibling_getter.call(node);\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @template {Node} N\n * @param {N} node\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function child(node, is_text) {\n\tif (!hydrating) {\n\t\treturn get_first_child(node);\n\t}\n\n\tvar child = /** @type {TemplateNode} */ (get_first_child(hydrate_node));\n\n\t// Child can be null if we have an element with a single child, like `<p>{text}</p>`, where `text` is empty\n\tif (child === null) {\n\t\tchild = hydrate_node.appendChild(create_text());\n\t} else if (is_text && child.nodeType !== TEXT_NODE) {\n\t\tvar text = create_text();\n\t\tchild?.before(text);\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\tset_hydrate_node(child);\n\treturn child;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {DocumentFragment | TemplateNode | TemplateNode[]} fragment\n * @param {boolean} [is_text]\n * @returns {Node | null}\n */\nexport function first_child(fragment, is_text = false) {\n\tif (!hydrating) {\n\t\t// when not hydrating, `fragment` is a `DocumentFragment` (the result of calling `open_frag`)\n\t\tvar first = /** @type {DocumentFragment} */ (get_first_child(/** @type {Node} */ (fragment)));\n\n\t\t// TODO prevent user comments with the empty string when preserveComments is true\n\t\tif (first instanceof Comment && first.data === '') return get_next_sibling(first);\n\n\t\treturn first;\n\t}\n\n\t// if an {expression} is empty during SSR, there might be no\n\t// text node to hydrate — we must therefore create one\n\tif (is_text && hydrate_node?.nodeType !== TEXT_NODE) {\n\t\tvar text = create_text();\n\n\t\thydrate_node?.before(text);\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\treturn hydrate_node;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {TemplateNode} node\n * @param {number} count\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function sibling(node, count = 1, is_text = false) {\n\tlet next_sibling = hydrating ? hydrate_node : node;\n\tvar last_sibling;\n\n\twhile (count--) {\n\t\tlast_sibling = next_sibling;\n\t\tnext_sibling = /** @type {TemplateNode} */ (get_next_sibling(next_sibling));\n\t}\n\n\tif (!hydrating) {\n\t\treturn next_sibling;\n\t}\n\n\t// if a sibling {expression} is empty during SSR, there might be no\n\t// text node to hydrate — we must therefore create one\n\tif (is_text && next_sibling?.nodeType !== TEXT_NODE) {\n\t\tvar text = create_text();\n\t\t// If the next sibling is `null` and we're handling text then it's because\n\t\t// the SSR content was empty for the text, so we need to generate a new text\n\t\t// node and insert it after the last sibling\n\t\tif (next_sibling === null) {\n\t\t\tlast_sibling?.after(text);\n\t\t} else {\n\t\t\tnext_sibling.before(text);\n\t\t}\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\tset_hydrate_node(next_sibling);\n\treturn /** @type {TemplateNode} */ (next_sibling);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {void}\n */\nexport function clear_text_content(node) {\n\tnode.textContent = '';\n}\n\n/**\n * Returns `true` if we're updating the current block, for example `condition` in\n * an `{#if condition}` block just changed. In this case, the branch should be\n * appended (or removed) at the same time as other updates within the\n * current `<svelte:boundary>`\n */\nexport function should_defer_append() {\n\tif (!async_mode_flag) return false;\n\tif (eager_block_effects !== null) return false;\n\n\tvar flags = /** @type {Effect} */ (active_effect).f;\n\treturn (flags & EFFECT_RAN) !== 0;\n}\n\n/**\n *\n * @param {string} tag\n * @param {string} [namespace]\n * @param {string} [is]\n * @returns\n */\nexport function create_element(tag, namespace, is) {\n\tlet options = is ? { is } : undefined;\n\tif (namespace) {\n\t\treturn document.createElementNS(namespace, tag, options);\n\t}\n\treturn document.createElement(tag, options);\n}\n\nexport function create_fragment() {\n\treturn document.createDocumentFragment();\n}\n\n/**\n * @param {string} data\n * @returns\n */\nexport function create_comment(data = '') {\n\treturn document.createComment(data);\n}\n\n/**\n * @param {Element} element\n * @param {string} key\n * @param {string} value\n * @returns\n */\nexport function set_attribute(element, key, value = '') {\n\tif (key.startsWith('xlink:')) {\n\t\telement.setAttributeNS('http://www.w3.org/1999/xlink', key, value);\n\t\treturn;\n\t}\n\treturn element.setAttribute(key, value);\n}\n","import { teardown } from '../../../reactivity/effects.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../../runtime.js';\nimport { add_form_reset_listener } from '../misc.js';\n\n/**\n * Fires the handler once immediately (unless corresponding arg is set to `false`),\n * then listens to the given events until the render effect context is destroyed\n * @param {EventTarget} target\n * @param {Array<string>} events\n * @param {(event?: Event) => void} handler\n * @param {any} call_handler_immediately\n */\nexport function listen(target, events, handler, call_handler_immediately = true) {\n\tif (call_handler_immediately) {\n\t\thandler();\n\t}\n\n\tfor (var name of events) {\n\t\ttarget.addEventListener(name, handler);\n\t}\n\n\tteardown(() => {\n\t\tfor (var name of events) {\n\t\t\ttarget.removeEventListener(name, handler);\n\t\t}\n\t});\n}\n\n/**\n * @template T\n * @param {() => T} fn\n */\nexport function without_reactive_context(fn) {\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t}\n}\n\n/**\n * Listen to the given event, and then instantiate a global form reset listener if not already done,\n * to notify all bindings when the form is reset\n * @param {HTMLElement} element\n * @param {string} event\n * @param {(is_reset?: true) => void} handler\n * @param {(is_reset?: true) => void} [on_reset]\n */\nexport function listen_to_event_and_reset_event(element, event, handler, on_reset = handler) {\n\telement.addEventListener(event, () => without_reactive_context(handler));\n\t// @ts-expect-error\n\tconst prev = element.__on_r;\n\tif (prev) {\n\t\t// special case for checkbox that can have multiple binds (group & checked)\n\t\t// @ts-expect-error\n\t\telement.__on_r = () => {\n\t\t\tprev();\n\t\t\ton_reset(true);\n\t\t};\n\t} else {\n\t\t// @ts-expect-error\n\t\telement.__on_r = () => on_reset(true);\n\t}\n\n\tadd_form_reset_listener();\n}\n","/** @import { ComponentContext, ComponentContextLegacy, Derived, Effect, TemplateNode, TransitionManager } from '#client' */\nimport {\n\tis_dirty,\n\tactive_effect,\n\tactive_reaction,\n\tupdate_effect,\n\tget,\n\tis_destroying_effect,\n\tremove_reactions,\n\tset_active_reaction,\n\tset_is_destroying_effect,\n\tset_signal_status,\n\tuntrack,\n\tuntracking\n} from '../runtime.js';\nimport {\n\tDIRTY,\n\tBRANCH_EFFECT,\n\tRENDER_EFFECT,\n\tEFFECT,\n\tDESTROYED,\n\tINERT,\n\tEFFECT_RAN,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tEFFECT_TRANSPARENT,\n\tDERIVED,\n\tCLEAN,\n\tEAGER_EFFECT,\n\tHEAD_EFFECT,\n\tMAYBE_DIRTY,\n\tEFFECT_PRESERVED,\n\tSTALE_REACTION,\n\tUSER_EFFECT,\n\tASYNC,\n\tCONNECTED\n} from '#client/constants';\nimport * as e from '../errors.js';\nimport { DEV } from 'esm-env';\nimport { define_property } from '../../shared/utils.js';\nimport { get_next_sibling } from '../dom/operations.js';\nimport { component_context, dev_current_component_function, dev_stack } from '../context.js';\nimport { Batch, current_batch, schedule_effect } from './batch.js';\nimport { flatten } from './async.js';\nimport { without_reactive_context } from '../dom/elements/bindings/shared.js';\n\n/**\n * @param {'$effect' | '$effect.pre' | '$inspect'} rune\n */\nexport function validate_effect(rune) {\n\tif (active_effect === null) {\n\t\tif (active_reaction === null) {\n\t\t\te.effect_orphan(rune);\n\t\t}\n\n\t\te.effect_in_unowned_derived();\n\t}\n\n\tif (is_destroying_effect) {\n\t\te.effect_in_teardown(rune);\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {Effect} parent_effect\n */\nfunction push_effect(effect, parent_effect) {\n\tvar parent_last = parent_effect.last;\n\tif (parent_last === null) {\n\t\tparent_effect.last = parent_effect.first = effect;\n\t} else {\n\t\tparent_last.next = effect;\n\t\teffect.prev = parent_last;\n\t\tparent_effect.last = effect;\n\t}\n}\n\n/**\n * @param {number} type\n * @param {null | (() => void | (() => void))} fn\n * @param {boolean} sync\n * @returns {Effect}\n */\nfunction create_effect(type, fn, sync) {\n\tvar parent = active_effect;\n\n\tif (DEV) {\n\t\t// Ensure the parent is never an inspect effect\n\t\twhile (parent !== null && (parent.f & EAGER_EFFECT) !== 0) {\n\t\t\tparent = parent.parent;\n\t\t}\n\t}\n\n\tif (parent !== null && (parent.f & INERT) !== 0) {\n\t\ttype |= INERT;\n\t}\n\n\t/** @type {Effect} */\n\tvar effect = {\n\t\tctx: component_context,\n\t\tdeps: null,\n\t\tnodes_start: null,\n\t\tnodes_end: null,\n\t\tf: type | DIRTY | CONNECTED,\n\t\tfirst: null,\n\t\tfn,\n\t\tlast: null,\n\t\tnext: null,\n\t\tparent,\n\t\tb: parent && parent.b,\n\t\tprev: null,\n\t\tteardown: null,\n\t\ttransitions: null,\n\t\twv: 0,\n\t\tac: null\n\t};\n\n\tif (DEV) {\n\t\teffect.component_function = dev_current_component_function;\n\t}\n\n\tif (sync) {\n\t\ttry {\n\t\t\tupdate_effect(effect);\n\t\t\teffect.f |= EFFECT_RAN;\n\t\t} catch (e) {\n\t\t\tdestroy_effect(effect);\n\t\t\tthrow e;\n\t\t}\n\t} else if (fn !== null) {\n\t\tschedule_effect(effect);\n\t}\n\n\t/** @type {Effect | null} */\n\tvar e = effect;\n\n\t// if an effect has already ran and doesn't need to be kept in the tree\n\t// (because it won't re-run, has no DOM, and has no teardown etc)\n\t// then we skip it and go to its child (if any)\n\tif (\n\t\tsync &&\n\t\te.deps === null &&\n\t\te.teardown === null &&\n\t\te.nodes_start === null &&\n\t\te.first === e.last && // either `null`, or a singular child\n\t\t(e.f & EFFECT_PRESERVED) === 0\n\t) {\n\t\te = e.first;\n\t\tif ((type & BLOCK_EFFECT) !== 0 && (type & EFFECT_TRANSPARENT) !== 0 && e !== null) {\n\t\t\te.f |= EFFECT_TRANSPARENT;\n\t\t}\n\t}\n\n\tif (e !== null) {\n\t\te.parent = parent;\n\n\t\tif (parent !== null) {\n\t\t\tpush_effect(e, parent);\n\t\t}\n\n\t\t// if we're in a derived, add the effect there too\n\t\tif (\n\t\t\tactive_reaction !== null &&\n\t\t\t(active_reaction.f & DERIVED) !== 0 &&\n\t\t\t(type & ROOT_EFFECT) === 0\n\t\t) {\n\t\t\tvar derived = /** @type {Derived} */ (active_reaction);\n\t\t\t(derived.effects ??= []).push(e);\n\t\t}\n\t}\n\n\treturn effect;\n}\n\n/**\n * Internal representation of `$effect.tracking()`\n * @returns {boolean}\n */\nexport function effect_tracking() {\n\treturn active_reaction !== null && !untracking;\n}\n\n/**\n * @param {() => void} fn\n */\nexport function teardown(fn) {\n\tconst effect = create_effect(RENDER_EFFECT, null, false);\n\tset_signal_status(effect, CLEAN);\n\teffect.teardown = fn;\n\treturn effect;\n}\n\n/**\n * Internal representation of `$effect(...)`\n * @param {() => void | (() => void)} fn\n */\nexport function user_effect(fn) {\n\tvalidate_effect('$effect');\n\n\tif (DEV) {\n\t\tdefine_property(fn, 'name', {\n\t\t\tvalue: '$effect'\n\t\t});\n\t}\n\n\t// Non-nested `$effect(...)` in a component should be deferred\n\t// until the component is mounted\n\tvar flags = /** @type {Effect} */ (active_effect).f;\n\tvar defer = !active_reaction && (flags & BRANCH_EFFECT) !== 0 && (flags & EFFECT_RAN) === 0;\n\n\tif (defer) {\n\t\t// Top-level `$effect(...)` in an unmounted component — defer until mount\n\t\tvar context = /** @type {ComponentContext} */ (component_context);\n\t\t(context.e ??= []).push(fn);\n\t} else {\n\t\t// Everything else — create immediately\n\t\treturn create_user_effect(fn);\n\t}\n}\n\n/**\n * @param {() => void | (() => void)} fn\n */\nexport function create_user_effect(fn) {\n\treturn create_effect(EFFECT | USER_EFFECT, fn, false);\n}\n\n/**\n * Internal representation of `$effect.pre(...)`\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function user_pre_effect(fn) {\n\tvalidate_effect('$effect.pre');\n\tif (DEV) {\n\t\tdefine_property(fn, 'name', {\n\t\t\tvalue: '$effect.pre'\n\t\t});\n\t}\n\treturn create_effect(RENDER_EFFECT | USER_EFFECT, fn, true);\n}\n\n/** @param {() => void | (() => void)} fn */\nexport function eager_effect(fn) {\n\treturn create_effect(EAGER_EFFECT, fn, true);\n}\n\n/**\n * Internal representation of `$effect.root(...)`\n * @param {() => void | (() => void)} fn\n * @returns {() => void}\n */\nexport function effect_root(fn) {\n\tBatch.ensure();\n\tconst effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true);\n\n\treturn () => {\n\t\tdestroy_effect(effect);\n\t};\n}\n\n/**\n * An effect root whose children can transition out\n * @param {() => void} fn\n * @returns {(options?: { outro?: boolean }) => Promise<void>}\n */\nexport function component_root(fn) {\n\tBatch.ensure();\n\tconst effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true);\n\n\treturn (options = {}) => {\n\t\treturn new Promise((fulfil) => {\n\t\t\tif (options.outro) {\n\t\t\t\tpause_effect(effect, () => {\n\t\t\t\t\tdestroy_effect(effect);\n\t\t\t\t\tfulfil(undefined);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdestroy_effect(effect);\n\t\t\t\tfulfil(undefined);\n\t\t\t}\n\t\t});\n\t};\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function effect(fn) {\n\treturn create_effect(EFFECT, fn, false);\n}\n\n/**\n * Internal representation of `$: ..`\n * @param {() => any} deps\n * @param {() => void | (() => void)} fn\n */\nexport function legacy_pre_effect(deps, fn) {\n\tvar context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\t/** @type {{ effect: null | Effect, ran: boolean, deps: () => any }} */\n\tvar token = { effect: null, ran: false, deps };\n\n\tcontext.l.$.push(token);\n\n\ttoken.effect = render_effect(() => {\n\t\tdeps();\n\n\t\t// If this legacy pre effect has already run before the end of the reset, then\n\t\t// bail out to emulate the same behavior.\n\t\tif (token.ran) return;\n\n\t\ttoken.ran = true;\n\t\tuntrack(fn);\n\t});\n}\n\nexport function legacy_pre_effect_reset() {\n\tvar context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\trender_effect(() => {\n\t\t// Run dirty `$:` statements\n\t\tfor (var token of context.l.$) {\n\t\t\ttoken.deps();\n\n\t\t\tvar effect = token.effect;\n\n\t\t\t// If the effect is CLEAN, then make it MAYBE_DIRTY. This ensures we traverse through\n\t\t\t// the effects dependencies and correctly ensure each dependency is up-to-date.\n\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t}\n\n\t\t\tif (is_dirty(effect)) {\n\t\t\t\tupdate_effect(effect);\n\t\t\t}\n\n\t\t\ttoken.ran = false;\n\t\t}\n\t});\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function async_effect(fn) {\n\treturn create_effect(ASYNC | EFFECT_PRESERVED, fn, true);\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function render_effect(fn, flags = 0) {\n\treturn create_effect(RENDER_EFFECT | flags, fn, true);\n}\n\n/**\n * @param {(...expressions: any) => void | (() => void)} fn\n * @param {Array<() => any>} sync\n * @param {Array<() => Promise<any>>} async\n * @param {Array<Promise<void>>} blockers\n */\nexport function template_effect(fn, sync = [], async = [], blockers = []) {\n\tflatten(blockers, sync, async, (values) => {\n\t\tcreate_effect(RENDER_EFFECT, () => fn(...values.map(get)), true);\n\t});\n}\n\n/**\n * Like `template_effect`, but with an effect which is deferred until the batch commits\n * @param {(...expressions: any) => void | (() => void)} fn\n * @param {Array<() => any>} sync\n * @param {Array<() => Promise<any>>} async\n * @param {Array<Promise<void>>} blockers\n */\nexport function deferred_template_effect(fn, sync = [], async = [], blockers = []) {\n\tvar batch = /** @type {Batch} */ (current_batch);\n\tvar is_async = async.length > 0 || blockers.length > 0;\n\n\tif (is_async) batch.increment(true);\n\n\tflatten(blockers, sync, async, (values) => {\n\t\tcreate_effect(EFFECT, () => fn(...values.map(get)), false);\n\t\tif (is_async) batch.decrement(true);\n\t});\n}\n\n/**\n * @param {(() => void)} fn\n * @param {number} flags\n */\nexport function block(fn, flags = 0) {\n\tvar effect = create_effect(BLOCK_EFFECT | flags, fn, true);\n\tif (DEV) {\n\t\teffect.dev_stack = dev_stack;\n\t}\n\treturn effect;\n}\n\n/**\n * @param {(() => void)} fn\n */\nexport function branch(fn) {\n\treturn create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn, true);\n}\n\n/**\n * @param {Effect} effect\n */\nexport function execute_effect_teardown(effect) {\n\tvar teardown = effect.teardown;\n\tif (teardown !== null) {\n\t\tconst previously_destroying_effect = is_destroying_effect;\n\t\tconst previous_reaction = active_reaction;\n\t\tset_is_destroying_effect(true);\n\t\tset_active_reaction(null);\n\t\ttry {\n\t\t\tteardown.call(null);\n\t\t} finally {\n\t\t\tset_is_destroying_effect(previously_destroying_effect);\n\t\t\tset_active_reaction(previous_reaction);\n\t\t}\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @param {boolean} remove_dom\n * @returns {void}\n */\nexport function destroy_effect_children(signal, remove_dom = false) {\n\tvar effect = signal.first;\n\tsignal.first = signal.last = null;\n\n\twhile (effect !== null) {\n\t\tconst controller = effect.ac;\n\n\t\tif (controller !== null) {\n\t\t\twithout_reactive_context(() => {\n\t\t\t\tcontroller.abort(STALE_REACTION);\n\t\t\t});\n\t\t}\n\n\t\tvar next = effect.next;\n\n\t\tif ((effect.f & ROOT_EFFECT) !== 0) {\n\t\t\t// this is now an independent root\n\t\t\teffect.parent = null;\n\t\t} else {\n\t\t\tdestroy_effect(effect, remove_dom);\n\t\t}\n\n\t\teffect = next;\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @returns {void}\n */\nexport function destroy_block_effect_children(signal) {\n\tvar effect = signal.first;\n\n\twhile (effect !== null) {\n\t\tvar next = effect.next;\n\t\tif ((effect.f & BRANCH_EFFECT) === 0) {\n\t\t\tdestroy_effect(effect);\n\t\t}\n\t\teffect = next;\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {boolean} [remove_dom]\n * @returns {void}\n */\nexport function destroy_effect(effect, remove_dom = true) {\n\tvar removed = false;\n\n\tif (\n\t\t(remove_dom || (effect.f & HEAD_EFFECT) !== 0) &&\n\t\teffect.nodes_start !== null &&\n\t\teffect.nodes_end !== null\n\t) {\n\t\tremove_effect_dom(effect.nodes_start, /** @type {TemplateNode} */ (effect.nodes_end));\n\t\tremoved = true;\n\t}\n\n\tdestroy_effect_children(effect, remove_dom && !removed);\n\tremove_reactions(effect, 0);\n\tset_signal_status(effect, DESTROYED);\n\n\tvar transitions = effect.transitions;\n\n\tif (transitions !== null) {\n\t\tfor (const transition of transitions) {\n\t\t\ttransition.stop();\n\t\t}\n\t}\n\n\texecute_effect_teardown(effect);\n\n\tvar parent = effect.parent;\n\n\t// If the parent doesn't have any children, then skip this work altogether\n\tif (parent !== null && parent.first !== null) {\n\t\tunlink_effect(effect);\n\t}\n\n\tif (DEV) {\n\t\teffect.component_function = null;\n\t}\n\n\t// `first` and `child` are nulled out in destroy_effect_children\n\t// we don't null out `parent` so that error propagation can work correctly\n\teffect.next =\n\t\teffect.prev =\n\t\teffect.teardown =\n\t\teffect.ctx =\n\t\teffect.deps =\n\t\teffect.fn =\n\t\teffect.nodes_start =\n\t\teffect.nodes_end =\n\t\teffect.ac =\n\t\t\tnull;\n}\n\n/**\n *\n * @param {TemplateNode | null} node\n * @param {TemplateNode} end\n */\nexport function remove_effect_dom(node, end) {\n\twhile (node !== null) {\n\t\t/** @type {TemplateNode | null} */\n\t\tvar next = node === end ? null : /** @type {TemplateNode} */ (get_next_sibling(node));\n\n\t\tnode.remove();\n\t\tnode = next;\n\t}\n}\n\n/**\n * Detach an effect from the effect tree, freeing up memory and\n * reducing the amount of work that happens on subsequent traversals\n * @param {Effect} effect\n */\nexport function unlink_effect(effect) {\n\tvar parent = effect.parent;\n\tvar prev = effect.prev;\n\tvar next = effect.next;\n\n\tif (prev !== null) prev.next = next;\n\tif (next !== null) next.prev = prev;\n\n\tif (parent !== null) {\n\t\tif (parent.first === effect) parent.first = next;\n\t\tif (parent.last === effect) parent.last = prev;\n\t}\n}\n\n/**\n * When a block effect is removed, we don't immediately destroy it or yank it\n * out of the DOM, because it might have transitions. Instead, we 'pause' it.\n * It stays around (in memory, and in the DOM) until outro transitions have\n * completed, and if the state change is reversed then we _resume_ it.\n * A paused effect does not update, and the DOM subtree becomes inert.\n * @param {Effect} effect\n * @param {() => void} [callback]\n * @param {boolean} [destroy]\n */\nexport function pause_effect(effect, callback, destroy = true) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\n\tpause_children(effect, transitions, true);\n\n\trun_out_transitions(transitions, () => {\n\t\tif (destroy) destroy_effect(effect);\n\t\tif (callback) callback();\n\t});\n}\n\n/**\n * @param {TransitionManager[]} transitions\n * @param {() => void} fn\n */\nexport function run_out_transitions(transitions, fn) {\n\tvar remaining = transitions.length;\n\tif (remaining > 0) {\n\t\tvar check = () => --remaining || fn();\n\t\tfor (var transition of transitions) {\n\t\t\ttransition.out(check);\n\t\t}\n\t} else {\n\t\tfn();\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {TransitionManager[]} transitions\n * @param {boolean} local\n */\nexport function pause_children(effect, transitions, local) {\n\tif ((effect.f & INERT) !== 0) return;\n\teffect.f ^= INERT;\n\n\tif (effect.transitions !== null) {\n\t\tfor (const transition of effect.transitions) {\n\t\t\tif (transition.is_global || local) {\n\t\t\t\ttransitions.push(transition);\n\t\t\t}\n\t\t}\n\t}\n\n\tvar child = effect.first;\n\n\twhile (child !== null) {\n\t\tvar sibling = child.next;\n\t\tvar transparent =\n\t\t\t(child.f & EFFECT_TRANSPARENT) !== 0 ||\n\t\t\t// If this is a branch effect without a block effect parent,\n\t\t\t// it means the parent block effect was pruned. In that case,\n\t\t\t// transparency information was transferred to the branch effect.\n\t\t\t((child.f & BRANCH_EFFECT) !== 0 && (effect.f & BLOCK_EFFECT) !== 0);\n\t\t// TODO we don't need to call pause_children recursively with a linked list in place\n\t\t// it's slightly more involved though as we have to account for `transparent` changing\n\t\t// through the tree.\n\t\tpause_children(child, transitions, transparent ? local : false);\n\t\tchild = sibling;\n\t}\n}\n\n/**\n * The opposite of `pause_effect`. We call this if (for example)\n * `x` becomes falsy then truthy: `{#if x}...{/if}`\n * @param {Effect} effect\n */\nexport function resume_effect(effect) {\n\tresume_children(effect, true);\n}\n\n/**\n * @param {Effect} effect\n * @param {boolean} local\n */\nfunction resume_children(effect, local) {\n\tif ((effect.f & INERT) === 0) return;\n\teffect.f ^= INERT;\n\n\t// If a dependency of this effect changed while it was paused,\n\t// schedule the effect to update. we don't use `is_dirty`\n\t// here because we don't want to eagerly recompute a derived like\n\t// `{#if foo}{foo.bar()}{/if}` if `foo` is now `undefined\n\tif ((effect.f & CLEAN) === 0) {\n\t\tset_signal_status(effect, DIRTY);\n\t\tschedule_effect(effect);\n\t}\n\n\tvar child = effect.first;\n\n\twhile (child !== null) {\n\t\tvar sibling = child.next;\n\t\tvar transparent = (child.f & EFFECT_TRANSPARENT) !== 0 || (child.f & BRANCH_EFFECT) !== 0;\n\t\t// TODO we don't need to call resume_children recursively with a linked list in place\n\t\t// it's slightly more involved though as we have to account for `transparent` changing\n\t\t// through the tree.\n\t\tresume_children(child, transparent ? local : false);\n\t\tchild = sibling;\n\t}\n\n\tif (effect.transitions !== null) {\n\t\tfor (const transition of effect.transitions) {\n\t\t\tif (transition.is_global || local) {\n\t\t\t\ttransition.in();\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function aborted(effect = /** @type {Effect} */ (active_effect)) {\n\treturn (effect.f & DESTROYED) !== 0;\n}\n\n/**\n * @param {Effect} effect\n * @param {DocumentFragment} fragment\n */\nexport function move_effect(effect, fragment) {\n\tvar node = effect.nodes_start;\n\tvar end = effect.nodes_end;\n\n\twhile (node !== null) {\n\t\t/** @type {TemplateNode | null} */\n\t\tvar next = node === end ? null : /** @type {TemplateNode} */ (get_next_sibling(node));\n\n\t\tfragment.append(node);\n\t\tnode = next;\n\t}\n}\n","/** @import { Derived, Effect, Reaction, Signal, Source, Value } from '#client' */\nimport { DEV } from 'esm-env';\nimport { get_descriptors, get_prototype_of, index_of } from '../shared/utils.js';\nimport {\n\tdestroy_block_effect_children,\n\tdestroy_effect_children,\n\teffect_tracking,\n\texecute_effect_teardown\n} from './reactivity/effects.js';\nimport {\n\tDIRTY,\n\tMAYBE_DIRTY,\n\tCLEAN,\n\tDERIVED,\n\tDESTROYED,\n\tBRANCH_EFFECT,\n\tSTATE_SYMBOL,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tCONNECTED,\n\tREACTION_IS_UPDATING,\n\tSTALE_REACTION,\n\tERROR_VALUE,\n\tWAS_MARKED\n} from './constants.js';\nimport { old_values } from './reactivity/sources.js';\nimport {\n\tdestroy_derived_effects,\n\texecute_derived,\n\tcurrent_async_effect,\n\trecent_async_deriveds,\n\tupdate_derived\n} from './reactivity/deriveds.js';\nimport { async_mode_flag, tracing_mode_flag } from '../flags/index.js';\nimport { tracing_expressions, get_stack } from './dev/tracing.js';\nimport {\n\tcomponent_context,\n\tdev_current_component_function,\n\tdev_stack,\n\tis_runes,\n\tset_component_context,\n\tset_dev_current_component_function,\n\tset_dev_stack\n} from './context.js';\nimport * as w from './warnings.js';\nimport { Batch, batch_values, flushSync, schedule_effect } from './reactivity/batch.js';\nimport { handle_error } from './error-handling.js';\nimport { UNINITIALIZED } from '../../constants.js';\nimport { captured_signals } from './legacy.js';\nimport { without_reactive_context } from './dom/elements/bindings/shared.js';\n\nexport let is_updating_effect = false;\n\n/** @param {boolean} value */\nexport function set_is_updating_effect(value) {\n\tis_updating_effect = value;\n}\n\nexport let is_destroying_effect = false;\n\n/** @param {boolean} value */\nexport function set_is_destroying_effect(value) {\n\tis_destroying_effect = value;\n}\n\n/** @type {null | Reaction} */\nexport let active_reaction = null;\n\nexport let untracking = false;\n\n/** @param {null | Reaction} reaction */\nexport function set_active_reaction(reaction) {\n\tactive_reaction = reaction;\n}\n\n/** @type {null | Effect} */\nexport let active_effect = null;\n\n/** @param {null | Effect} effect */\nexport function set_active_effect(effect) {\n\tactive_effect = effect;\n}\n\n/**\n * When sources are created within a reaction, reading and writing\n * them within that reaction should not cause a re-run\n * @type {null | Source[]}\n */\nexport let current_sources = null;\n\n/** @param {Value} value */\nexport function push_reaction_value(value) {\n\tif (active_reaction !== null && (!async_mode_flag || (active_reaction.f & DERIVED) !== 0)) {\n\t\tif (current_sources === null) {\n\t\t\tcurrent_sources = [value];\n\t\t} else {\n\t\t\tcurrent_sources.push(value);\n\t\t}\n\t}\n}\n\n/**\n * The dependencies of the reaction that is currently being executed. In many cases,\n * the dependencies are unchanged between runs, and so this will be `null` unless\n * and until a new dependency is accessed — we track this via `skipped_deps`\n * @type {null | Value[]}\n */\nlet new_deps = null;\n\nlet skipped_deps = 0;\n\n/**\n * Tracks writes that the effect it's executed in doesn't listen to yet,\n * so that the dependency can be added to the effect later on if it then reads it\n * @type {null | Source[]}\n */\nexport let untracked_writes = null;\n\n/** @param {null | Source[]} value */\nexport function set_untracked_writes(value) {\n\tuntracked_writes = value;\n}\n\n/**\n * @type {number} Used by sources and deriveds for handling updates.\n * Version starts from 1 so that unowned deriveds differentiate between a created effect and a run one for tracing\n **/\nexport let write_version = 1;\n\n/** @type {number} Used to version each read of a source of derived to avoid duplicating depedencies inside a reaction */\nlet read_version = 0;\n\nexport let update_version = read_version;\n\n/** @param {number} value */\nexport function set_update_version(value) {\n\tupdate_version = value;\n}\n\nexport function increment_write_version() {\n\treturn ++write_version;\n}\n\n/**\n * Determines whether a derived or effect is dirty.\n * If it is MAYBE_DIRTY, will set the status to CLEAN\n * @param {Reaction} reaction\n * @returns {boolean}\n */\nexport function is_dirty(reaction) {\n\tvar flags = reaction.f;\n\n\tif ((flags & DIRTY) !== 0) {\n\t\treturn true;\n\t}\n\n\tif (flags & DERIVED) {\n\t\treaction.f &= ~WAS_MARKED;\n\t}\n\n\tif ((flags & MAYBE_DIRTY) !== 0) {\n\t\tvar dependencies = reaction.deps;\n\n\t\tif (dependencies !== null) {\n\t\t\tvar length = dependencies.length;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tvar dependency = dependencies[i];\n\n\t\t\t\tif (is_dirty(/** @type {Derived} */ (dependency))) {\n\t\t\t\t\tupdate_derived(/** @type {Derived} */ (dependency));\n\t\t\t\t}\n\n\t\t\t\tif (dependency.wv > reaction.wv) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t(flags & CONNECTED) !== 0 &&\n\t\t\t// During time traveling we don't want to reset the status so that\n\t\t\t// traversal of the graph in the other batches still happens\n\t\t\tbatch_values === null\n\t\t) {\n\t\t\tset_signal_status(reaction, CLEAN);\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @param {Value} signal\n * @param {Effect} effect\n * @param {boolean} [root]\n */\nfunction schedule_possible_effect_self_invalidation(signal, effect, root = true) {\n\tvar reactions = signal.reactions;\n\tif (reactions === null) return;\n\n\tif (!async_mode_flag && current_sources?.includes(signal)) {\n\t\treturn;\n\t}\n\n\tfor (var i = 0; i < reactions.length; i++) {\n\t\tvar reaction = reactions[i];\n\n\t\tif ((reaction.f & DERIVED) !== 0) {\n\t\t\tschedule_possible_effect_self_invalidation(/** @type {Derived} */ (reaction), effect, false);\n\t\t} else if (effect === reaction) {\n\t\t\tif (root) {\n\t\t\t\tset_signal_status(reaction, DIRTY);\n\t\t\t} else if ((reaction.f & CLEAN) !== 0) {\n\t\t\t\tset_signal_status(reaction, MAYBE_DIRTY);\n\t\t\t}\n\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t}\n\t}\n}\n\n/** @param {Reaction} reaction */\nexport function update_reaction(reaction) {\n\tvar previous_deps = new_deps;\n\tvar previous_skipped_deps = skipped_deps;\n\tvar previous_untracked_writes = untracked_writes;\n\tvar previous_reaction = active_reaction;\n\tvar previous_sources = current_sources;\n\tvar previous_component_context = component_context;\n\tvar previous_untracking = untracking;\n\tvar previous_update_version = update_version;\n\n\tvar flags = reaction.f;\n\n\tnew_deps = /** @type {null | Value[]} */ (null);\n\tskipped_deps = 0;\n\tuntracked_writes = null;\n\tactive_reaction = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;\n\n\tcurrent_sources = null;\n\tset_component_context(reaction.ctx);\n\tuntracking = false;\n\tupdate_version = ++read_version;\n\n\tif (reaction.ac !== null) {\n\t\twithout_reactive_context(() => {\n\t\t\t/** @type {AbortController} */ (reaction.ac).abort(STALE_REACTION);\n\t\t});\n\n\t\treaction.ac = null;\n\t}\n\n\ttry {\n\t\treaction.f |= REACTION_IS_UPDATING;\n\t\tvar fn = /** @type {Function} */ (reaction.fn);\n\t\tvar result = fn();\n\t\tvar deps = reaction.deps;\n\n\t\tif (new_deps !== null) {\n\t\t\tvar i;\n\n\t\t\tremove_reactions(reaction, skipped_deps);\n\n\t\t\tif (deps !== null && skipped_deps > 0) {\n\t\t\t\tdeps.length = skipped_deps + new_deps.length;\n\t\t\t\tfor (i = 0; i < new_deps.length; i++) {\n\t\t\t\t\tdeps[skipped_deps + i] = new_deps[i];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treaction.deps = deps = new_deps;\n\t\t\t}\n\n\t\t\tif (is_updating_effect && effect_tracking() && (reaction.f & CONNECTED) !== 0) {\n\t\t\t\tfor (i = skipped_deps; i < deps.length; i++) {\n\t\t\t\t\t(deps[i].reactions ??= []).push(reaction);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (deps !== null && skipped_deps < deps.length) {\n\t\t\tremove_reactions(reaction, skipped_deps);\n\t\t\tdeps.length = skipped_deps;\n\t\t}\n\n\t\t// If we're inside an effect and we have untracked writes, then we need to\n\t\t// ensure that if any of those untracked writes result in re-invalidation\n\t\t// of the current effect, then that happens accordingly\n\t\tif (\n\t\t\tis_runes() &&\n\t\t\tuntracked_writes !== null &&\n\t\t\t!untracking &&\n\t\t\tdeps !== null &&\n\t\t\t(reaction.f & (DERIVED | MAYBE_DIRTY | DIRTY)) === 0\n\t\t) {\n\t\t\tfor (i = 0; i < /** @type {Source[]} */ (untracked_writes).length; i++) {\n\t\t\t\tschedule_possible_effect_self_invalidation(\n\t\t\t\t\tuntracked_writes[i],\n\t\t\t\t\t/** @type {Effect} */ (reaction)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// If we are returning to an previous reaction then\n\t\t// we need to increment the read version to ensure that\n\t\t// any dependencies in this reaction aren't marked with\n\t\t// the same version\n\t\tif (previous_reaction !== null && previous_reaction !== reaction) {\n\t\t\tread_version++;\n\n\t\t\tif (untracked_writes !== null) {\n\t\t\t\tif (previous_untracked_writes === null) {\n\t\t\t\t\tprevious_untracked_writes = untracked_writes;\n\t\t\t\t} else {\n\t\t\t\t\tprevious_untracked_writes.push(.../** @type {Source[]} */ (untracked_writes));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ((reaction.f & ERROR_VALUE) !== 0) {\n\t\t\treaction.f ^= ERROR_VALUE;\n\t\t}\n\n\t\treturn result;\n\t} catch (error) {\n\t\treturn handle_error(error);\n\t} finally {\n\t\treaction.f ^= REACTION_IS_UPDATING;\n\t\tnew_deps = previous_deps;\n\t\tskipped_deps = previous_skipped_deps;\n\t\tuntracked_writes = previous_untracked_writes;\n\t\tactive_reaction = previous_reaction;\n\t\tcurrent_sources = previous_sources;\n\t\tset_component_context(previous_component_context);\n\t\tuntracking = previous_untracking;\n\t\tupdate_version = previous_update_version;\n\t}\n}\n\n/**\n * @template V\n * @param {Reaction} signal\n * @param {Value<V>} dependency\n * @returns {void}\n */\nfunction remove_reaction(signal, dependency) {\n\tlet reactions = dependency.reactions;\n\tif (reactions !== null) {\n\t\tvar index = index_of.call(reactions, signal);\n\t\tif (index !== -1) {\n\t\t\tvar new_length = reactions.length - 1;\n\t\t\tif (new_length === 0) {\n\t\t\t\treactions = dependency.reactions = null;\n\t\t\t} else {\n\t\t\t\t// Swap with last element and then remove.\n\t\t\t\treactions[index] = reactions[new_length];\n\t\t\t\treactions.pop();\n\t\t\t}\n\t\t}\n\t}\n\n\t// If the derived has no reactions, then we can disconnect it from the graph,\n\t// allowing it to either reconnect in the future, or be GC'd by the VM.\n\tif (\n\t\treactions === null &&\n\t\t(dependency.f & DERIVED) !== 0 &&\n\t\t// Destroying a child effect while updating a parent effect can cause a dependency to appear\n\t\t// to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps`\n\t\t// allows us to skip the expensive work of disconnecting and immediately reconnecting it\n\t\t(new_deps === null || !new_deps.includes(dependency))\n\t) {\n\t\tset_signal_status(dependency, MAYBE_DIRTY);\n\t\t// If we are working with a derived that is owned by an effect, then mark it as being\n\t\t// disconnected and remove the mark flag, as it cannot be reliably removed otherwise\n\t\tif ((dependency.f & CONNECTED) !== 0) {\n\t\t\tdependency.f ^= CONNECTED;\n\t\t\tdependency.f &= ~WAS_MARKED;\n\t\t}\n\t\t// Disconnect any reactions owned by this reaction\n\t\tdestroy_derived_effects(/** @type {Derived} **/ (dependency));\n\t\tremove_reactions(/** @type {Derived} **/ (dependency), 0);\n\t}\n}\n\n/**\n * @param {Reaction} signal\n * @param {number} start_index\n * @returns {void}\n */\nexport function remove_reactions(signal, start_index) {\n\tvar dependencies = signal.deps;\n\tif (dependencies === null) return;\n\n\tfor (var i = start_index; i < dependencies.length; i++) {\n\t\tremove_reaction(signal, dependencies[i]);\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @returns {void}\n */\nexport function update_effect(effect) {\n\tvar flags = effect.f;\n\n\tif ((flags & DESTROYED) !== 0) {\n\t\treturn;\n\t}\n\n\tset_signal_status(effect, CLEAN);\n\n\tvar previous_effect = active_effect;\n\tvar was_updating_effect = is_updating_effect;\n\n\tactive_effect = effect;\n\tis_updating_effect = true;\n\n\tif (DEV) {\n\t\tvar previous_component_fn = dev_current_component_function;\n\t\tset_dev_current_component_function(effect.component_function);\n\t\tvar previous_stack = /** @type {any} */ (dev_stack);\n\t\t// only block effects have a dev stack, keep the current one otherwise\n\t\tset_dev_stack(effect.dev_stack ?? dev_stack);\n\t}\n\n\ttry {\n\t\tif ((flags & BLOCK_EFFECT) !== 0) {\n\t\t\tdestroy_block_effect_children(effect);\n\t\t} else {\n\t\t\tdestroy_effect_children(effect);\n\t\t}\n\n\t\texecute_effect_teardown(effect);\n\t\tvar teardown = update_reaction(effect);\n\t\teffect.teardown = typeof teardown === 'function' ? teardown : null;\n\t\teffect.wv = write_version;\n\n\t\t// In DEV, increment versions of any sources that were written to during the effect,\n\t\t// so that they are correctly marked as dirty when the effect re-runs\n\t\tif (DEV && tracing_mode_flag && (effect.f & DIRTY) !== 0 && effect.deps !== null) {\n\t\t\tfor (var dep of effect.deps) {\n\t\t\t\tif (dep.set_during_effect) {\n\t\t\t\t\tdep.wv = increment_write_version();\n\t\t\t\t\tdep.set_during_effect = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tis_updating_effect = was_updating_effect;\n\t\tactive_effect = previous_effect;\n\n\t\tif (DEV) {\n\t\t\tset_dev_current_component_function(previous_component_fn);\n\t\t\tset_dev_stack(previous_stack);\n\t\t}\n\t}\n}\n\n/**\n * Returns a promise that resolves once any pending state changes have been applied.\n * @returns {Promise<void>}\n */\nexport async function tick() {\n\tif (async_mode_flag) {\n\t\treturn new Promise((f) => {\n\t\t\t// Race them against each other - in almost all cases requestAnimationFrame will fire first,\n\t\t\t// but e.g. in case the window is not focused or a view transition happens, requestAnimationFrame\n\t\t\t// will be delayed and setTimeout helps us resolve fast enough in that case\n\t\t\trequestAnimationFrame(() => f());\n\t\t\tsetTimeout(() => f());\n\t\t});\n\t}\n\n\tawait Promise.resolve();\n\n\t// By calling flushSync we guarantee that any pending state changes are applied after one tick.\n\t// TODO look into whether we can make flushing subsequent updates synchronously in the future.\n\tflushSync();\n}\n\n/**\n * Returns a promise that resolves once any state changes, and asynchronous work resulting from them,\n * have resolved and the DOM has been updated\n * @returns {Promise<void>}\n * @since 5.36\n */\nexport function settled() {\n\treturn Batch.ensure().settled();\n}\n\n/**\n * @template V\n * @param {Value<V>} signal\n * @returns {V}\n */\nexport function get(signal) {\n\tvar flags = signal.f;\n\tvar is_derived = (flags & DERIVED) !== 0;\n\n\tcaptured_signals?.add(signal);\n\n\t// Register the dependency on the current reaction signal.\n\tif (active_reaction !== null && !untracking) {\n\t\t// if we're in a derived that is being read inside an _async_ derived,\n\t\t// it's possible that the effect was already destroyed. In this case,\n\t\t// we don't add the dependency, because that would create a memory leak\n\t\tvar destroyed = active_effect !== null && (active_effect.f & DESTROYED) !== 0;\n\n\t\tif (!destroyed && !current_sources?.includes(signal)) {\n\t\t\tvar deps = active_reaction.deps;\n\n\t\t\tif ((active_reaction.f & REACTION_IS_UPDATING) !== 0) {\n\t\t\t\t// we're in the effect init/update cycle\n\t\t\t\tif (signal.rv < read_version) {\n\t\t\t\t\tsignal.rv = read_version;\n\n\t\t\t\t\t// If the signal is accessing the same dependencies in the same\n\t\t\t\t\t// order as it did last time, increment `skipped_deps`\n\t\t\t\t\t// rather than updating `new_deps`, which creates GC cost\n\t\t\t\t\tif (new_deps === null && deps !== null && deps[skipped_deps] === signal) {\n\t\t\t\t\t\tskipped_deps++;\n\t\t\t\t\t} else if (new_deps === null) {\n\t\t\t\t\t\tnew_deps = [signal];\n\t\t\t\t\t} else if (!new_deps.includes(signal)) {\n\t\t\t\t\t\tnew_deps.push(signal);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// we're adding a dependency outside the init/update cycle\n\t\t\t\t// (i.e. after an `await`)\n\t\t\t\t(active_reaction.deps ??= []).push(signal);\n\n\t\t\t\tvar reactions = signal.reactions;\n\n\t\t\t\tif (reactions === null) {\n\t\t\t\t\tsignal.reactions = [active_reaction];\n\t\t\t\t} else if (!reactions.includes(active_reaction)) {\n\t\t\t\t\treactions.push(active_reaction);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (DEV) {\n\t\t// TODO reinstate this, but make it actually work\n\t\t// if (current_async_effect) {\n\t\t// \tvar tracking = (current_async_effect.f & REACTION_IS_UPDATING) !== 0;\n\t\t// \tvar was_read = current_async_effect.deps?.includes(signal);\n\n\t\t// \tif (!tracking && !untracking && !was_read) {\n\t\t// \t\tw.await_reactivity_loss(/** @type {string} */ (signal.label));\n\n\t\t// \t\tvar trace = get_stack('traced at');\n\t\t// \t\t// eslint-disable-next-line no-console\n\t\t// \t\tif (trace) console.warn(trace);\n\t\t// \t}\n\t\t// }\n\n\t\trecent_async_deriveds.delete(signal);\n\n\t\tif (\n\t\t\ttracing_mode_flag &&\n\t\t\t!untracking &&\n\t\t\ttracing_expressions !== null &&\n\t\t\tactive_reaction !== null &&\n\t\t\ttracing_expressions.reaction === active_reaction\n\t\t) {\n\t\t\t// Used when mapping state between special blocks like `each`\n\t\t\tif (signal.trace) {\n\t\t\t\tsignal.trace();\n\t\t\t} else {\n\t\t\t\tvar trace = get_stack('traced at');\n\n\t\t\t\tif (trace) {\n\t\t\t\t\tvar entry = tracing_expressions.entries.get(signal);\n\n\t\t\t\t\tif (entry === undefined) {\n\t\t\t\t\t\tentry = { traces: [] };\n\t\t\t\t\t\ttracing_expressions.entries.set(signal, entry);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar last = entry.traces[entry.traces.length - 1];\n\n\t\t\t\t\t// traces can be duplicated, e.g. by `snapshot` invoking both\n\t\t\t\t\t// both `getOwnPropertyDescriptor` and `get` traps at once\n\t\t\t\t\tif (trace.stack !== last?.stack) {\n\t\t\t\t\t\tentry.traces.push(trace);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (is_destroying_effect) {\n\t\tif (old_values.has(signal)) {\n\t\t\treturn old_values.get(signal);\n\t\t}\n\n\t\tif (is_derived) {\n\t\t\tvar derived = /** @type {Derived} */ (signal);\n\n\t\t\tvar value = derived.v;\n\n\t\t\t// if the derived is dirty and has reactions, or depends on the values that just changed, re-execute\n\t\t\t// (a derived can be maybe_dirty due to the effect destroy removing its last reaction)\n\t\t\tif (\n\t\t\t\t((derived.f & CLEAN) === 0 && derived.reactions !== null) ||\n\t\t\t\tdepends_on_old_values(derived)\n\t\t\t) {\n\t\t\t\tvalue = execute_derived(derived);\n\t\t\t}\n\n\t\t\told_values.set(derived, value);\n\n\t\t\treturn value;\n\t\t}\n\t} else if (is_derived && !batch_values?.has(signal)) {\n\t\tderived = /** @type {Derived} */ (signal);\n\n\t\tif (is_dirty(derived)) {\n\t\t\tupdate_derived(derived);\n\t\t}\n\n\t\tif (is_updating_effect && effect_tracking() && (derived.f & CONNECTED) === 0) {\n\t\t\treconnect(derived);\n\t\t}\n\t}\n\n\tif (batch_values?.has(signal)) {\n\t\treturn batch_values.get(signal);\n\t}\n\n\tif ((signal.f & ERROR_VALUE) !== 0) {\n\t\tthrow signal.v;\n\t}\n\n\treturn signal.v;\n}\n\n/**\n * (Re)connect a disconnected derived, so that it is notified\n * of changes in `mark_reactions`\n * @param {Derived} derived\n */\nfunction reconnect(derived) {\n\tif (derived.deps === null) return;\n\n\tderived.f ^= CONNECTED;\n\n\tfor (const dep of derived.deps) {\n\t\t(dep.reactions ??= []).push(derived);\n\n\t\tif ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) {\n\t\t\treconnect(/** @type {Derived} */ (dep));\n\t\t}\n\t}\n}\n\n/** @param {Derived} derived */\nfunction depends_on_old_values(derived) {\n\tif (derived.v === UNINITIALIZED) return true; // we don't know, so assume the worst\n\tif (derived.deps === null) return false;\n\n\tfor (const dep of derived.deps) {\n\t\tif (old_values.has(dep)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ((dep.f & DERIVED) !== 0 && depends_on_old_values(/** @type {Derived} */ (dep))) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Like `get`, but checks for `undefined`. Used for `var` declarations because they can be accessed before being declared\n * @template V\n * @param {Value<V> | undefined} signal\n * @returns {V | undefined}\n */\nexport function safe_get(signal) {\n\treturn signal && get(signal);\n}\n\n/**\n * When used inside a [`$derived`](https://svelte.dev/docs/svelte/$derived) or [`$effect`](https://svelte.dev/docs/svelte/$effect),\n * any state read inside `fn` will not be treated as a dependency.\n *\n * ```ts\n * $effect(() => {\n * // this will run when `data` changes, but not when `time` changes\n * save(data, {\n * timestamp: untrack(() => time)\n * });\n * });\n * ```\n * @template T\n * @param {() => T} fn\n * @returns {T}\n */\nexport function untrack(fn) {\n\tvar previous_untracking = untracking;\n\ttry {\n\t\tuntracking = true;\n\t\treturn fn();\n\t} finally {\n\t\tuntracking = previous_untracking;\n\t}\n}\n\nconst STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);\n\n/**\n * @param {Signal} signal\n * @param {number} status\n * @returns {void}\n */\nexport function set_signal_status(signal, status) {\n\tsignal.f = (signal.f & STATUS_MASK) | status;\n}\n\n/**\n * @param {Record<string | symbol, unknown>} obj\n * @param {Array<string | symbol>} keys\n * @returns {Record<string | symbol, unknown>}\n */\nexport function exclude_from_object(obj, keys) {\n\t/** @type {Record<string | symbol, unknown>} */\n\tvar result = {};\n\n\tfor (var key in obj) {\n\t\tif (!keys.includes(key)) {\n\t\t\tresult[key] = obj[key];\n\t\t}\n\t}\n\n\tfor (var symbol of Object.getOwnPropertySymbols(obj)) {\n\t\tif (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) {\n\t\t\tresult[symbol] = obj[symbol];\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Possibly traverse an object and read all its properties so that they're all reactive in case this is `$state`.\n * Does only check first level of an object for performance reasons (heuristic should be good for 99% of all cases).\n * @param {any} value\n * @returns {void}\n */\nexport function deep_read_state(value) {\n\tif (typeof value !== 'object' || !value || value instanceof EventTarget) {\n\t\treturn;\n\t}\n\n\tif (STATE_SYMBOL in value) {\n\t\tdeep_read(value);\n\t} else if (!Array.isArray(value)) {\n\t\tfor (let key in value) {\n\t\t\tconst prop = value[key];\n\t\t\tif (typeof prop === 'object' && prop && STATE_SYMBOL in prop) {\n\t\t\t\tdeep_read(prop);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Deeply traverse an object and read all its properties\n * so that they're all reactive in case this is `$state`\n * @param {any} value\n * @param {Set<any>} visited\n * @returns {void}\n */\nexport function deep_read(value, visited = new Set()) {\n\tif (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\t// We don't want to traverse DOM elements\n\t\t!(value instanceof EventTarget) &&\n\t\t!visited.has(value)\n\t) {\n\t\tvisited.add(value);\n\t\t// When working with a possible SvelteDate, this\n\t\t// will ensure we capture changes to it.\n\t\tif (value instanceof Date) {\n\t\t\tvalue.getTime();\n\t\t}\n\t\tfor (let key in value) {\n\t\t\ttry {\n\t\t\t\tdeep_read(value[key], visited);\n\t\t\t} catch (e) {\n\t\t\t\t// continue\n\t\t\t}\n\t\t}\n\t\tconst proto = get_prototype_of(value);\n\t\tif (\n\t\t\tproto !== Object.prototype &&\n\t\t\tproto !== Array.prototype &&\n\t\t\tproto !== Map.prototype &&\n\t\t\tproto !== Set.prototype &&\n\t\t\tproto !== Date.prototype\n\t\t) {\n\t\t\tconst descriptors = get_descriptors(proto);\n\t\t\tfor (let key in descriptors) {\n\t\t\t\tconst get = descriptors[key].get;\n\t\t\t\tif (get) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tget.call(value);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// continue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { teardown } from '../../reactivity/effects.js';\nimport { define_property } from '../../../shared/utils.js';\nimport { hydrating } from '../hydration.js';\nimport { queue_micro_task } from '../task.js';\nimport { FILENAME } from '../../../../constants.js';\nimport * as w from '../../warnings.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { without_reactive_context } from './bindings/shared.js';\n\n/** @type {Set<string>} */\nexport const all_registered_events = new Set();\n\n/** @type {Set<(events: Array<string>) => void>} */\nexport const root_event_handles = new Set();\n\n/**\n * SSR adds onload and onerror attributes to catch those events before the hydration.\n * This function detects those cases, removes the attributes and replays the events.\n * @param {HTMLElement} dom\n */\nexport function replay_events(dom) {\n\tif (!hydrating) return;\n\n\tdom.removeAttribute('onload');\n\tdom.removeAttribute('onerror');\n\t// @ts-expect-error\n\tconst event = dom.__e;\n\tif (event !== undefined) {\n\t\t// @ts-expect-error\n\t\tdom.__e = undefined;\n\t\tqueueMicrotask(() => {\n\t\t\tif (dom.isConnected) {\n\t\t\t\tdom.dispatchEvent(event);\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * @param {string} event_name\n * @param {EventTarget} dom\n * @param {EventListener} [handler]\n * @param {AddEventListenerOptions} [options]\n */\nexport function create_event(event_name, dom, handler, options = {}) {\n\t/**\n\t * @this {EventTarget}\n\t */\n\tfunction target_handler(/** @type {Event} */ event) {\n\t\tif (!options.capture) {\n\t\t\t// Only call in the bubble phase, else delegated events would be called before the capturing events\n\t\t\thandle_event_propagation.call(dom, event);\n\t\t}\n\t\tif (!event.cancelBubble) {\n\t\t\treturn without_reactive_context(() => {\n\t\t\t\treturn handler?.call(this, event);\n\t\t\t});\n\t\t}\n\t}\n\n\t// Chrome has a bug where pointer events don't work when attached to a DOM element that has been cloned\n\t// with cloneNode() and the DOM element is disconnected from the document. To ensure the event works, we\n\t// defer the attachment till after it's been appended to the document. TODO: remove this once Chrome fixes\n\t// this bug. The same applies to wheel events and touch events.\n\tif (\n\t\tevent_name.startsWith('pointer') ||\n\t\tevent_name.startsWith('touch') ||\n\t\tevent_name === 'wheel'\n\t) {\n\t\tqueue_micro_task(() => {\n\t\t\tdom.addEventListener(event_name, target_handler, options);\n\t\t});\n\t} else {\n\t\tdom.addEventListener(event_name, target_handler, options);\n\t}\n\n\treturn target_handler;\n}\n\n/**\n * Attaches an event handler to an element and returns a function that removes the handler. Using this\n * rather than `addEventListener` will preserve the correct order relative to handlers added declaratively\n * (with attributes like `onclick`), which use event delegation for performance reasons\n *\n * @param {EventTarget} element\n * @param {string} type\n * @param {EventListener} handler\n * @param {AddEventListenerOptions} [options]\n */\nexport function on(element, type, handler, options = {}) {\n\tvar target_handler = create_event(type, element, handler, options);\n\n\treturn () => {\n\t\telement.removeEventListener(type, target_handler, options);\n\t};\n}\n\n/**\n * @param {string} event_name\n * @param {Element} dom\n * @param {EventListener} [handler]\n * @param {boolean} [capture]\n * @param {boolean} [passive]\n * @returns {void}\n */\nexport function event(event_name, dom, handler, capture, passive) {\n\tvar options = { capture, passive };\n\tvar target_handler = create_event(event_name, dom, handler, options);\n\n\tif (\n\t\tdom === document.body ||\n\t\t// @ts-ignore\n\t\tdom === window ||\n\t\t// @ts-ignore\n\t\tdom === document ||\n\t\t// Firefox has quirky behavior, it can happen that we still get \"canplay\" events when the element is already removed\n\t\tdom instanceof HTMLMediaElement\n\t) {\n\t\tteardown(() => {\n\t\t\tdom.removeEventListener(event_name, target_handler, options);\n\t\t});\n\t}\n}\n\n/**\n * @param {Array<string>} events\n * @returns {void}\n */\nexport function delegate(events) {\n\tfor (var i = 0; i < events.length; i++) {\n\t\tall_registered_events.add(events[i]);\n\t}\n\n\tfor (var fn of root_event_handles) {\n\t\tfn(events);\n\t}\n}\n\n// used to store the reference to the currently propagated event\n// to prevent garbage collection between microtasks in Firefox\n// If the event object is GCed too early, the expando __root property\n// set on the event object is lost, causing the event delegation\n// to process the event twice\nlet last_propagated_event = null;\n\n/**\n * @this {EventTarget}\n * @param {Event} event\n * @returns {void}\n */\nexport function handle_event_propagation(event) {\n\tvar handler_element = this;\n\tvar owner_document = /** @type {Node} */ (handler_element).ownerDocument;\n\tvar event_name = event.type;\n\tvar path = event.composedPath?.() || [];\n\tvar current_target = /** @type {null | Element} */ (path[0] || event.target);\n\n\tlast_propagated_event = event;\n\n\t// composedPath contains list of nodes the event has propagated through.\n\t// We check __root to skip all nodes below it in case this is a\n\t// parent of the __root node, which indicates that there's nested\n\t// mounted apps. In this case we don't want to trigger events multiple times.\n\tvar path_idx = 0;\n\n\t// the `last_propagated_event === event` check is redundant, but\n\t// without it the variable will be DCE'd and things will\n\t// fail mysteriously in Firefox\n\t// @ts-expect-error is added below\n\tvar handled_at = last_propagated_event === event && event.__root;\n\n\tif (handled_at) {\n\t\tvar at_idx = path.indexOf(handled_at);\n\t\tif (\n\t\t\tat_idx !== -1 &&\n\t\t\t(handler_element === document || handler_element === /** @type {any} */ (window))\n\t\t) {\n\t\t\t// This is the fallback document listener or a window listener, but the event was already handled\n\t\t\t// -> ignore, but set handle_at to document/window so that we're resetting the event\n\t\t\t// chain in case someone manually dispatches the same event object again.\n\t\t\t// @ts-expect-error\n\t\t\tevent.__root = handler_element;\n\t\t\treturn;\n\t\t}\n\n\t\t// We're deliberately not skipping if the index is higher, because\n\t\t// someone could create an event programmatically and emit it multiple times,\n\t\t// in which case we want to handle the whole propagation chain properly each time.\n\t\t// (this will only be a false negative if the event is dispatched multiple times and\n\t\t// the fallback document listener isn't reached in between, but that's super rare)\n\t\tvar handler_idx = path.indexOf(handler_element);\n\t\tif (handler_idx === -1) {\n\t\t\t// handle_idx can theoretically be -1 (happened in some JSDOM testing scenarios with an event listener on the window object)\n\t\t\t// so guard against that, too, and assume that everything was handled at this point.\n\t\t\treturn;\n\t\t}\n\n\t\tif (at_idx <= handler_idx) {\n\t\t\tpath_idx = at_idx;\n\t\t}\n\t}\n\n\tcurrent_target = /** @type {Element} */ (path[path_idx] || event.target);\n\t// there can only be one delegated event per element, and we either already handled the current target,\n\t// or this is the very first target in the chain which has a non-delegated listener, in which case it's safe\n\t// to handle a possible delegated event on it later (through the root delegation listener for example).\n\tif (current_target === handler_element) return;\n\n\t// Proxy currentTarget to correct target\n\tdefine_property(event, 'currentTarget', {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn current_target || owner_document;\n\t\t}\n\t});\n\n\t// This started because of Chromium issue https://chromestatus.com/feature/5128696823545856,\n\t// where removal or moving of of the DOM can cause sync `blur` events to fire, which can cause logic\n\t// to run inside the current `active_reaction`, which isn't what we want at all. However, on reflection,\n\t// it's probably best that all event handled by Svelte have this behaviour, as we don't really want\n\t// an event handler to run in the context of another reaction or effect.\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\n\ttry {\n\t\t/**\n\t\t * @type {unknown}\n\t\t */\n\t\tvar throw_error;\n\t\t/**\n\t\t * @type {unknown[]}\n\t\t */\n\t\tvar other_errors = [];\n\n\t\twhile (current_target !== null) {\n\t\t\t/** @type {null | Element} */\n\t\t\tvar parent_element =\n\t\t\t\tcurrent_target.assignedSlot ||\n\t\t\t\tcurrent_target.parentNode ||\n\t\t\t\t/** @type {any} */ (current_target).host ||\n\t\t\t\tnull;\n\n\t\t\ttry {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tvar delegated = current_target['__' + event_name];\n\n\t\t\t\tif (\n\t\t\t\t\tdelegated != null &&\n\t\t\t\t\t(!(/** @type {any} */ (current_target).disabled) ||\n\t\t\t\t\t\t// DOM could've been updated already by the time this is reached, so we check this as well\n\t\t\t\t\t\t// -> the target could not have been disabled because it emits the event in the first place\n\t\t\t\t\t\tevent.target === current_target)\n\t\t\t\t) {\n\t\t\t\t\tdelegated.call(current_target, event);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (throw_error) {\n\t\t\t\t\tother_errors.push(error);\n\t\t\t\t} else {\n\t\t\t\t\tthrow_error = error;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (event.cancelBubble || parent_element === handler_element || parent_element === null) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent_target = parent_element;\n\t\t}\n\n\t\tif (throw_error) {\n\t\t\tfor (let error of other_errors) {\n\t\t\t\t// Throw the rest of the errors, one-by-one on a microtask\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow throw_error;\n\t\t}\n\t} finally {\n\t\t// @ts-expect-error is used above\n\t\tevent.__root = handler_element;\n\t\t// @ts-ignore remove proxy on currentTarget\n\t\tdelete event.currentTarget;\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t}\n}\n\n/**\n * In dev, warn if an event handler is not a function, as it means the\n * user probably called the handler or forgot to add a `() =>`\n * @param {() => (event: Event, ...args: any) => void} thunk\n * @param {EventTarget} element\n * @param {[Event, ...any]} args\n * @param {any} component\n * @param {[number, number]} [loc]\n * @param {boolean} [remove_parens]\n */\nexport function apply(\n\tthunk,\n\telement,\n\targs,\n\tcomponent,\n\tloc,\n\thas_side_effects = false,\n\tremove_parens = false\n) {\n\tlet handler;\n\tlet error;\n\n\ttry {\n\t\thandler = thunk();\n\t} catch (e) {\n\t\terror = e;\n\t}\n\n\tif (typeof handler !== 'function' && (has_side_effects || handler != null || error)) {\n\t\tconst filename = component?.[FILENAME];\n\t\tconst location = loc ? ` at ${filename}:${loc[0]}:${loc[1]}` : ` in ${filename}`;\n\t\tconst phase = args[0]?.eventPhase < Event.BUBBLING_PHASE ? 'capture' : '';\n\t\tconst event_name = args[0]?.type + phase;\n\t\tconst description = `\\`${event_name}\\` handler${location}`;\n\t\tconst suggestion = remove_parens ? 'remove the trailing `()`' : 'add a leading `() =>`';\n\n\t\tw.event_handler_invalid(description, suggestion);\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\thandler?.apply(element, args);\n}\n","/** @param {string} html */\nexport function create_fragment_from_html(html) {\n\tvar elem = document.createElement('template');\n\telem.innerHTML = html.replaceAll('<!>', '<!---->'); // XHTML compliance\n\treturn elem.content;\n}\n","/** @import { Effect, TemplateNode } from '#client' */\n/** @import { TemplateStructure } from './types' */\nimport { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from './hydration.js';\nimport {\n\tcreate_text,\n\tget_first_child,\n\tis_firefox,\n\tcreate_element,\n\tcreate_fragment,\n\tcreate_comment,\n\tset_attribute\n} from './operations.js';\nimport { create_fragment_from_html } from './reconciler.js';\nimport { active_effect } from '../runtime.js';\nimport {\n\tNAMESPACE_MATHML,\n\tNAMESPACE_SVG,\n\tTEMPLATE_FRAGMENT,\n\tTEMPLATE_USE_IMPORT_NODE,\n\tTEMPLATE_USE_MATHML,\n\tTEMPLATE_USE_SVG\n} from '../../../constants.js';\nimport { COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, EFFECT_RAN, TEXT_NODE } from '#client/constants';\n\n/**\n * @param {TemplateNode} start\n * @param {TemplateNode | null} end\n */\nexport function assign_nodes(start, end) {\n\tvar effect = /** @type {Effect} */ (active_effect);\n\tif (effect.nodes_start === null) {\n\t\teffect.nodes_start = start;\n\t\teffect.nodes_end = end;\n\t}\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_html(content, flags) {\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;\n\n\t/** @type {Node} */\n\tvar node;\n\n\t/**\n\t * Whether or not the first item is a text/element node. If not, we need to\n\t * create an additional comment node to act as `effect.nodes.start`\n\t */\n\tvar has_start = !content.startsWith('<!>');\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (node === undefined) {\n\t\t\tnode = create_fragment_from_html(has_start ? content : '<!>' + content);\n\t\t\tif (!is_fragment) node = /** @type {Node} */ (get_first_child(node));\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (\n\t\t\tuse_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)\n\t\t);\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @param {'svg' | 'math'} ns\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction from_namespace(content, flags, ns = 'svg') {\n\t/**\n\t * Whether or not the first item is a text/element node. If not, we need to\n\t * create an additional comment node to act as `effect.nodes.start`\n\t */\n\tvar has_start = !content.startsWith('<!>');\n\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar wrapped = `<${ns}>${has_start ? content : '<!>' + content}</${ns}>`;\n\n\t/** @type {Element | DocumentFragment} */\n\tvar node;\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (!node) {\n\t\t\tvar fragment = /** @type {DocumentFragment} */ (create_fragment_from_html(wrapped));\n\t\t\tvar root = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (is_fragment) {\n\t\t\t\tnode = document.createDocumentFragment();\n\t\t\t\twhile (get_first_child(root)) {\n\t\t\t\t\tnode.appendChild(/** @type {Node} */ (get_first_child(root)));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode = /** @type {Element} */ (get_first_child(root));\n\t\t\t}\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (node.cloneNode(true));\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_svg(content, flags) {\n\treturn from_namespace(content, flags, 'svg');\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_mathml(content, flags) {\n\treturn from_namespace(content, flags, 'math');\n}\n\n/**\n * @param {TemplateStructure[]} structure\n * @param {typeof NAMESPACE_SVG | typeof NAMESPACE_MATHML | undefined} [ns]\n */\nfunction fragment_from_tree(structure, ns) {\n\tvar fragment = create_fragment();\n\n\tfor (var item of structure) {\n\t\tif (typeof item === 'string') {\n\t\t\tfragment.append(create_text(item));\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if `preserveComments === true`, comments are represented as `['// <data>']`\n\t\tif (item === undefined || item[0][0] === '/') {\n\t\t\tfragment.append(create_comment(item ? item[0].slice(3) : ''));\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst [name, attributes, ...children] = item;\n\n\t\tconst namespace = name === 'svg' ? NAMESPACE_SVG : name === 'math' ? NAMESPACE_MATHML : ns;\n\n\t\tvar element = create_element(name, namespace, attributes?.is);\n\n\t\tfor (var key in attributes) {\n\t\t\tset_attribute(element, key, attributes[key]);\n\t\t}\n\n\t\tif (children.length > 0) {\n\t\t\tvar target =\n\t\t\t\telement.tagName === 'TEMPLATE'\n\t\t\t\t\t? /** @type {HTMLTemplateElement} */ (element).content\n\t\t\t\t\t: element;\n\n\t\t\ttarget.append(\n\t\t\t\tfragment_from_tree(children, element.tagName === 'foreignObject' ? undefined : namespace)\n\t\t\t);\n\t\t}\n\n\t\tfragment.append(element);\n\t}\n\n\treturn fragment;\n}\n\n/**\n * @param {TemplateStructure[]} structure\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_tree(structure, flags) {\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;\n\n\t/** @type {Node} */\n\tvar node;\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (node === undefined) {\n\t\t\tconst ns =\n\t\t\t\t(flags & TEMPLATE_USE_SVG) !== 0\n\t\t\t\t\t? NAMESPACE_SVG\n\t\t\t\t\t: (flags & TEMPLATE_USE_MATHML) !== 0\n\t\t\t\t\t\t? NAMESPACE_MATHML\n\t\t\t\t\t\t: undefined;\n\n\t\t\tnode = fragment_from_tree(structure, ns);\n\t\t\tif (!is_fragment) node = /** @type {Node} */ (get_first_child(node));\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (\n\t\t\tuse_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)\n\t\t);\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {() => Element | DocumentFragment} fn\n */\nexport function with_script(fn) {\n\treturn () => run_scripts(fn());\n}\n\n/**\n * Creating a document fragment from HTML that contains script tags will not execute\n * the scripts. We need to replace the script tags with new ones so that they are executed.\n * @param {Element | DocumentFragment} node\n * @returns {Node | Node[]}\n */\nfunction run_scripts(node) {\n\t// scripts were SSR'd, in which case they will run\n\tif (hydrating) return node;\n\n\tconst is_fragment = node.nodeType === DOCUMENT_FRAGMENT_NODE;\n\tconst scripts =\n\t\t/** @type {HTMLElement} */ (node).tagName === 'SCRIPT'\n\t\t\t? [/** @type {HTMLScriptElement} */ (node)]\n\t\t\t: node.querySelectorAll('script');\n\tconst effect = /** @type {Effect} */ (active_effect);\n\n\tfor (const script of scripts) {\n\t\tconst clone = document.createElement('script');\n\t\tfor (var attribute of script.attributes) {\n\t\t\tclone.setAttribute(attribute.name, attribute.value);\n\t\t}\n\n\t\tclone.textContent = script.textContent;\n\n\t\t// The script has changed - if it's at the edges, the effect now points at dead nodes\n\t\tif (is_fragment ? node.firstChild === script : node === script) {\n\t\t\teffect.nodes_start = clone;\n\t\t}\n\t\tif (is_fragment ? node.lastChild === script : node === script) {\n\t\t\teffect.nodes_end = clone;\n\t\t}\n\n\t\tscript.replaceWith(clone);\n\t}\n\treturn node;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {any} value\n */\nexport function text(value = '') {\n\tif (!hydrating) {\n\t\tvar t = create_text(value + '');\n\t\tassign_nodes(t, t);\n\t\treturn t;\n\t}\n\n\tvar node = hydrate_node;\n\n\tif (node.nodeType !== TEXT_NODE) {\n\t\t// if an {expression} is empty during SSR, we need to insert an empty text node\n\t\tnode.before((node = create_text()));\n\t\tset_hydrate_node(node);\n\t}\n\n\tassign_nodes(node, node);\n\treturn node;\n}\n\n/**\n * @returns {TemplateNode | DocumentFragment}\n */\nexport function comment() {\n\t// we're not delegating to `template` here for performance reasons\n\tif (hydrating) {\n\t\tassign_nodes(hydrate_node, null);\n\t\treturn hydrate_node;\n\t}\n\n\tvar frag = document.createDocumentFragment();\n\tvar start = document.createComment('');\n\tvar anchor = create_text();\n\tfrag.append(start, anchor);\n\n\tassign_nodes(start, anchor);\n\n\treturn frag;\n}\n\n/**\n * Assign the created (or in hydration mode, traversed) dom elements to the current block\n * and insert the elements into the dom (in client mode).\n * @param {Text | Comment | Element} anchor\n * @param {DocumentFragment | Element} dom\n */\nexport function append(anchor, dom) {\n\tif (hydrating) {\n\t\tvar effect = /** @type {Effect} */ (active_effect);\n\t\t// When hydrating and outer component and an inner component is async, i.e. blocked on a promise,\n\t\t// then by the time the inner resolves we have already advanced to the end of the hydrated nodes\n\t\t// of the parent component. Check for defined for that reason to avoid rewinding the parent's end marker.\n\t\tif ((effect.f & EFFECT_RAN) === 0 || effect.nodes_end === null) {\n\t\t\teffect.nodes_end = hydrate_node;\n\t\t}\n\t\thydrate_next();\n\t\treturn;\n\t}\n\n\tif (anchor === null) {\n\t\t// edge case — void `<svelte:element>` with content\n\t\treturn;\n\t}\n\n\tanchor.before(/** @type {Node} */ (dom));\n}\n\n/**\n * Create (or hydrate) an unique UID for the component instance.\n */\nexport function props_id() {\n\tif (\n\t\thydrating &&\n\t\thydrate_node &&\n\t\thydrate_node.nodeType === COMMENT_NODE &&\n\t\thydrate_node.textContent?.startsWith(`$`)\n\t) {\n\t\tconst id = hydrate_node.textContent.substring(1);\n\t\thydrate_next();\n\t\treturn id;\n\t}\n\n\t// @ts-expect-error This way we ensure the id is unique even across Svelte runtimes\n\t(window.__svelte ??= {}).uid ??= 1;\n\n\t// @ts-expect-error\n\treturn `c${window.__svelte.uid++}`;\n}\n","const regex_return_characters = /\\r/g;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nexport function hash(str) {\n\tstr = str.replace(regex_return_characters, '');\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn (hash >>> 0).toString(36);\n}\n\nconst VOID_ELEMENT_NAMES = [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n];\n\n/**\n * Returns `true` if `name` is of a void element\n * @param {string} name\n */\nexport function is_void(name) {\n\treturn VOID_ELEMENT_NAMES.includes(name) || name.toLowerCase() === '!doctype';\n}\n\nconst RESERVED_WORDS = [\n\t'arguments',\n\t'await',\n\t'break',\n\t'case',\n\t'catch',\n\t'class',\n\t'const',\n\t'continue',\n\t'debugger',\n\t'default',\n\t'delete',\n\t'do',\n\t'else',\n\t'enum',\n\t'eval',\n\t'export',\n\t'extends',\n\t'false',\n\t'finally',\n\t'for',\n\t'function',\n\t'if',\n\t'implements',\n\t'import',\n\t'in',\n\t'instanceof',\n\t'interface',\n\t'let',\n\t'new',\n\t'null',\n\t'package',\n\t'private',\n\t'protected',\n\t'public',\n\t'return',\n\t'static',\n\t'super',\n\t'switch',\n\t'this',\n\t'throw',\n\t'true',\n\t'try',\n\t'typeof',\n\t'var',\n\t'void',\n\t'while',\n\t'with',\n\t'yield'\n];\n\n/**\n * Returns `true` if `word` is a reserved JavaScript keyword\n * @param {string} word\n */\nexport function is_reserved(word) {\n\treturn RESERVED_WORDS.includes(word);\n}\n\n/**\n * @param {string} name\n */\nexport function is_capture_event(name) {\n\treturn name.endsWith('capture') && name !== 'gotpointercapture' && name !== 'lostpointercapture';\n}\n\n/** List of Element events that will be delegated */\nconst DELEGATED_EVENTS = [\n\t'beforeinput',\n\t'click',\n\t'change',\n\t'dblclick',\n\t'contextmenu',\n\t'focusin',\n\t'focusout',\n\t'input',\n\t'keydown',\n\t'keyup',\n\t'mousedown',\n\t'mousemove',\n\t'mouseout',\n\t'mouseover',\n\t'mouseup',\n\t'pointerdown',\n\t'pointermove',\n\t'pointerout',\n\t'pointerover',\n\t'pointerup',\n\t'touchend',\n\t'touchmove',\n\t'touchstart'\n];\n\n/**\n * Returns `true` if `event_name` is a delegated event\n * @param {string} event_name\n */\nexport function can_delegate_event(event_name) {\n\treturn DELEGATED_EVENTS.includes(event_name);\n}\n\n/**\n * Attributes that are boolean, i.e. they are present or not present.\n */\nconst DOM_BOOLEAN_ATTRIBUTES = [\n\t'allowfullscreen',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'disabled',\n\t'formnovalidate',\n\t'indeterminate',\n\t'inert',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'seamless',\n\t'selected',\n\t'webkitdirectory',\n\t'defer',\n\t'disablepictureinpicture',\n\t'disableremoteplayback'\n];\n\n/**\n * Returns `true` if `name` is a boolean attribute\n * @param {string} name\n */\nexport function is_boolean_attribute(name) {\n\treturn DOM_BOOLEAN_ATTRIBUTES.includes(name);\n}\n\n/**\n * @type {Record<string, string>}\n * List of attribute names that should be aliased to their property names\n * because they behave differently between setting them as an attribute and\n * setting them as a property.\n */\nconst ATTRIBUTE_ALIASES = {\n\t// no `class: 'className'` because we handle that separately\n\tformnovalidate: 'formNoValidate',\n\tismap: 'isMap',\n\tnomodule: 'noModule',\n\tplaysinline: 'playsInline',\n\treadonly: 'readOnly',\n\tdefaultvalue: 'defaultValue',\n\tdefaultchecked: 'defaultChecked',\n\tsrcobject: 'srcObject',\n\tnovalidate: 'noValidate',\n\tallowfullscreen: 'allowFullscreen',\n\tdisablepictureinpicture: 'disablePictureInPicture',\n\tdisableremoteplayback: 'disableRemotePlayback'\n};\n\n/**\n * @param {string} name\n */\nexport function normalize_attribute(name) {\n\tname = name.toLowerCase();\n\treturn ATTRIBUTE_ALIASES[name] ?? name;\n}\n\nconst DOM_PROPERTIES = [\n\t...DOM_BOOLEAN_ATTRIBUTES,\n\t'formNoValidate',\n\t'isMap',\n\t'noModule',\n\t'playsInline',\n\t'readOnly',\n\t'value',\n\t'volume',\n\t'defaultValue',\n\t'defaultChecked',\n\t'srcObject',\n\t'noValidate',\n\t'allowFullscreen',\n\t'disablePictureInPicture',\n\t'disableRemotePlayback'\n];\n\n/**\n * @param {string} name\n */\nexport function is_dom_property(name) {\n\treturn DOM_PROPERTIES.includes(name);\n}\n\nconst NON_STATIC_PROPERTIES = ['autofocus', 'muted', 'defaultValue', 'defaultChecked'];\n\n/**\n * Returns `true` if the given attribute cannot be set through the template\n * string, i.e. needs some kind of JavaScript handling to work.\n * @param {string} name\n */\nexport function cannot_be_set_statically(name) {\n\treturn NON_STATIC_PROPERTIES.includes(name);\n}\n\n/**\n * Subset of delegated events which should be passive by default.\n * These two are already passive via browser defaults on window, document and body.\n * But since\n * - we're delegating them\n * - they happen often\n * - they apply to mobile which is generally less performant\n * we're marking them as passive by default for other elements, too.\n */\nconst PASSIVE_EVENTS = ['touchstart', 'touchmove'];\n\n/**\n * Returns `true` if `name` is a passive event\n * @param {string} name\n */\nexport function is_passive_event(name) {\n\treturn PASSIVE_EVENTS.includes(name);\n}\n\nconst CONTENT_EDITABLE_BINDINGS = ['textContent', 'innerHTML', 'innerText'];\n\n/** @param {string} name */\nexport function is_content_editable_binding(name) {\n\treturn CONTENT_EDITABLE_BINDINGS.includes(name);\n}\n\nconst LOAD_ERROR_ELEMENTS = [\n\t'body',\n\t'embed',\n\t'iframe',\n\t'img',\n\t'link',\n\t'object',\n\t'script',\n\t'style',\n\t'track'\n];\n\n/**\n * Returns `true` if the element emits `load` and `error` events\n * @param {string} name\n */\nexport function is_load_error_element(name) {\n\treturn LOAD_ERROR_ELEMENTS.includes(name);\n}\n\nconst SVG_ELEMENTS = [\n\t'altGlyph',\n\t'altGlyphDef',\n\t'altGlyphItem',\n\t'animate',\n\t'animateColor',\n\t'animateMotion',\n\t'animateTransform',\n\t'circle',\n\t'clipPath',\n\t'color-profile',\n\t'cursor',\n\t'defs',\n\t'desc',\n\t'discard',\n\t'ellipse',\n\t'feBlend',\n\t'feColorMatrix',\n\t'feComponentTransfer',\n\t'feComposite',\n\t'feConvolveMatrix',\n\t'feDiffuseLighting',\n\t'feDisplacementMap',\n\t'feDistantLight',\n\t'feDropShadow',\n\t'feFlood',\n\t'feFuncA',\n\t'feFuncB',\n\t'feFuncG',\n\t'feFuncR',\n\t'feGaussianBlur',\n\t'feImage',\n\t'feMerge',\n\t'feMergeNode',\n\t'feMorphology',\n\t'feOffset',\n\t'fePointLight',\n\t'feSpecularLighting',\n\t'feSpotLight',\n\t'feTile',\n\t'feTurbulence',\n\t'filter',\n\t'font',\n\t'font-face',\n\t'font-face-format',\n\t'font-face-name',\n\t'font-face-src',\n\t'font-face-uri',\n\t'foreignObject',\n\t'g',\n\t'glyph',\n\t'glyphRef',\n\t'hatch',\n\t'hatchpath',\n\t'hkern',\n\t'image',\n\t'line',\n\t'linearGradient',\n\t'marker',\n\t'mask',\n\t'mesh',\n\t'meshgradient',\n\t'meshpatch',\n\t'meshrow',\n\t'metadata',\n\t'missing-glyph',\n\t'mpath',\n\t'path',\n\t'pattern',\n\t'polygon',\n\t'polyline',\n\t'radialGradient',\n\t'rect',\n\t'set',\n\t'solidcolor',\n\t'stop',\n\t'svg',\n\t'switch',\n\t'symbol',\n\t'text',\n\t'textPath',\n\t'tref',\n\t'tspan',\n\t'unknown',\n\t'use',\n\t'view',\n\t'vkern'\n];\n\n/** @param {string} name */\nexport function is_svg(name) {\n\treturn SVG_ELEMENTS.includes(name);\n}\n\nconst MATHML_ELEMENTS = [\n\t'annotation',\n\t'annotation-xml',\n\t'maction',\n\t'math',\n\t'merror',\n\t'mfrac',\n\t'mi',\n\t'mmultiscripts',\n\t'mn',\n\t'mo',\n\t'mover',\n\t'mpadded',\n\t'mphantom',\n\t'mprescripts',\n\t'mroot',\n\t'mrow',\n\t'ms',\n\t'mspace',\n\t'msqrt',\n\t'mstyle',\n\t'msub',\n\t'msubsup',\n\t'msup',\n\t'mtable',\n\t'mtd',\n\t'mtext',\n\t'mtr',\n\t'munder',\n\t'munderover',\n\t'semantics'\n];\n\n/** @param {string} name */\nexport function is_mathml(name) {\n\treturn MATHML_ELEMENTS.includes(name);\n}\n\nconst STATE_CREATION_RUNES = /** @type {const} */ ([\n\t'$state',\n\t'$state.raw',\n\t'$derived',\n\t'$derived.by'\n]);\n\nconst RUNES = /** @type {const} */ ([\n\t...STATE_CREATION_RUNES,\n\t'$state.eager',\n\t'$state.snapshot',\n\t'$props',\n\t'$props.id',\n\t'$bindable',\n\t'$effect',\n\t'$effect.pre',\n\t'$effect.tracking',\n\t'$effect.root',\n\t'$effect.pending',\n\t'$inspect',\n\t'$inspect().with',\n\t'$inspect.trace',\n\t'$host'\n]);\n\n/** @typedef {typeof RUNES[number]} RuneName */\n\n/**\n * @param {string} name\n * @returns {name is RuneName}\n */\nexport function is_rune(name) {\n\treturn RUNES.includes(/** @type {RuneName} */ (name));\n}\n\n/** @typedef {typeof STATE_CREATION_RUNES[number]} StateCreationRuneName */\n\n/**\n * @param {string} name\n * @returns {name is StateCreationRuneName}\n */\nexport function is_state_creation_rune(name) {\n\treturn STATE_CREATION_RUNES.includes(/** @type {StateCreationRuneName} */ (name));\n}\n\n/** List of elements that require raw contents and should not have SSR comments put in them */\nconst RAW_TEXT_ELEMENTS = /** @type {const} */ (['textarea', 'script', 'style', 'title']);\n\n/** @param {string} name */\nexport function is_raw_text_element(name) {\n\treturn RAW_TEXT_ELEMENTS.includes(/** @type {typeof RAW_TEXT_ELEMENTS[number]} */ (name));\n}\n\n/**\n * Prevent devtools trying to make `location` a clickable link by inserting a zero-width space\n * @template {string | undefined} T\n * @param {T} location\n * @returns {T};\n */\nexport function sanitize_location(location) {\n\treturn /** @type {T} */ (location?.replace(/\\//g, '/\\u200b'));\n}\n","/** @import { ComponentContext, Effect, TemplateNode } from '#client' */\n/** @import { Component, ComponentType, SvelteComponent, MountOptions } from '../../index.js' */\nimport { DEV } from 'esm-env';\nimport {\n\tclear_text_content,\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling,\n\tinit_operations\n} from './dom/operations.js';\nimport { HYDRATION_END, HYDRATION_ERROR, HYDRATION_START } from '../../constants.js';\nimport { active_effect } from './runtime.js';\nimport { push, pop, component_context } from './context.js';\nimport { component_root } from './reactivity/effects.js';\nimport { hydrate_node, hydrating, set_hydrate_node, set_hydrating } from './dom/hydration.js';\nimport { array_from } from '../shared/utils.js';\nimport {\n\tall_registered_events,\n\thandle_event_propagation,\n\troot_event_handles\n} from './dom/elements/events.js';\nimport * as w from './warnings.js';\nimport * as e from './errors.js';\nimport { assign_nodes } from './dom/template.js';\nimport { is_passive_event } from '../../utils.js';\nimport { COMMENT_NODE, STATE_SYMBOL } from './constants.js';\nimport { boundary } from './dom/blocks/boundary.js';\n\n/**\n * This is normally true — block effects should run their intro transitions —\n * but is false during hydration (unless `options.intro` is `true`) and\n * when creating the children of a `<svelte:element>` that just changed tag\n */\nexport let should_intro = true;\n\n/** @param {boolean} value */\nexport function set_should_intro(value) {\n\tshould_intro = value;\n}\n\n/**\n * @param {Element} text\n * @param {string} value\n * @returns {void}\n */\nexport function set_text(text, value) {\n\t// For objects, we apply string coercion (which might make things like $state array references in the template reactive) before diffing\n\tvar str = value == null ? '' : typeof value === 'object' ? value + '' : value;\n\t// @ts-expect-error\n\tif (str !== (text.__t ??= text.nodeValue)) {\n\t\t// @ts-expect-error\n\t\ttext.__t = str;\n\t\ttext.nodeValue = str + '';\n\t}\n}\n\n/**\n * Mounts a component to the given target and returns the exports and potentially the props (if compiled with `accessors: true`) of the component.\n * Transitions will play during the initial render unless the `intro` option is set to `false`.\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<Props>> | Component<Props, Exports, any>} component\n * @param {MountOptions<Props>} options\n * @returns {Exports}\n */\nexport function mount(component, options) {\n\treturn _mount(component, options);\n}\n\n/**\n * Hydrates a component on the given target and returns the exports and potentially the props (if compiled with `accessors: true`) of the component\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<Props>> | Component<Props, Exports, any>} component\n * @param {{} extends Props ? {\n * \t\ttarget: Document | Element | ShadowRoot;\n * \t\tprops?: Props;\n * \t\tevents?: Record<string, (e: any) => any>;\n * \tcontext?: Map<any, any>;\n * \t\tintro?: boolean;\n * \t\trecover?: boolean;\n * \t} : {\n * \t\ttarget: Document | Element | ShadowRoot;\n * \t\tprops: Props;\n * \t\tevents?: Record<string, (e: any) => any>;\n * \tcontext?: Map<any, any>;\n * \t\tintro?: boolean;\n * \t\trecover?: boolean;\n * \t}} options\n * @returns {Exports}\n */\nexport function hydrate(component, options) {\n\tinit_operations();\n\toptions.intro = options.intro ?? false;\n\tconst target = options.target;\n\tconst was_hydrating = hydrating;\n\tconst previous_hydrate_node = hydrate_node;\n\n\ttry {\n\t\tvar anchor = /** @type {TemplateNode} */ (get_first_child(target));\n\t\twhile (\n\t\t\tanchor &&\n\t\t\t(anchor.nodeType !== COMMENT_NODE || /** @type {Comment} */ (anchor).data !== HYDRATION_START)\n\t\t) {\n\t\t\tanchor = /** @type {TemplateNode} */ (get_next_sibling(anchor));\n\t\t}\n\n\t\tif (!anchor) {\n\t\t\tthrow HYDRATION_ERROR;\n\t\t}\n\n\t\tset_hydrating(true);\n\t\tset_hydrate_node(/** @type {Comment} */ (anchor));\n\n\t\tconst instance = _mount(component, { ...options, anchor });\n\n\t\tset_hydrating(false);\n\n\t\treturn /** @type {Exports} */ (instance);\n\t} catch (error) {\n\t\t// re-throw Svelte errors - they are certainly not related to hydration\n\t\tif (\n\t\t\terror instanceof Error &&\n\t\t\terror.message.split('\\n').some((line) => line.startsWith('https://svelte.dev/e/'))\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error !== HYDRATION_ERROR) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Failed to hydrate: ', error);\n\t\t}\n\n\t\tif (options.recover === false) {\n\t\t\te.hydration_failed();\n\t\t}\n\n\t\t// If an error occurred above, the operations might not yet have been initialised.\n\t\tinit_operations();\n\t\tclear_text_content(target);\n\n\t\tset_hydrating(false);\n\t\treturn mount(component, options);\n\t} finally {\n\t\tset_hydrating(was_hydrating);\n\t\tset_hydrate_node(previous_hydrate_node);\n\t}\n}\n\n/** @type {Map<string, number>} */\nconst document_listeners = new Map();\n\n/**\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<any>> | Component<any>} Component\n * @param {MountOptions} options\n * @returns {Exports}\n */\nfunction _mount(Component, { target, anchor, props = {}, events, context, intro = true }) {\n\tinit_operations();\n\n\t/** @type {Set<string>} */\n\tvar registered_events = new Set();\n\n\t/** @param {Array<string>} events */\n\tvar event_handle = (events) => {\n\t\tfor (var i = 0; i < events.length; i++) {\n\t\t\tvar event_name = events[i];\n\n\t\t\tif (registered_events.has(event_name)) continue;\n\t\t\tregistered_events.add(event_name);\n\n\t\t\tvar passive = is_passive_event(event_name);\n\n\t\t\t// Add the event listener to both the container and the document.\n\t\t\t// The container listener ensures we catch events from within in case\n\t\t\t// the outer content stops propagation of the event.\n\t\t\ttarget.addEventListener(event_name, handle_event_propagation, { passive });\n\n\t\t\tvar n = document_listeners.get(event_name);\n\n\t\t\tif (n === undefined) {\n\t\t\t\t// The document listener ensures we catch events that originate from elements that were\n\t\t\t\t// manually moved outside of the container (e.g. via manual portals).\n\t\t\t\tdocument.addEventListener(event_name, handle_event_propagation, { passive });\n\t\t\t\tdocument_listeners.set(event_name, 1);\n\t\t\t} else {\n\t\t\t\tdocument_listeners.set(event_name, n + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tevent_handle(array_from(all_registered_events));\n\troot_event_handles.add(event_handle);\n\n\t/** @type {Exports} */\n\t// @ts-expect-error will be defined because the render effect runs synchronously\n\tvar component = undefined;\n\n\tvar unmount = component_root(() => {\n\t\tvar anchor_node = anchor ?? target.appendChild(create_text());\n\n\t\tboundary(\n\t\t\t/** @type {TemplateNode} */ (anchor_node),\n\t\t\t{\n\t\t\t\tpending: () => {}\n\t\t\t},\n\t\t\t(anchor_node) => {\n\t\t\t\tif (context) {\n\t\t\t\t\tpush({});\n\t\t\t\t\tvar ctx = /** @type {ComponentContext} */ (component_context);\n\t\t\t\t\tctx.c = context;\n\t\t\t\t}\n\n\t\t\t\tif (events) {\n\t\t\t\t\t// We can't spread the object or else we'd lose the state proxy stuff, if it is one\n\t\t\t\t\t/** @type {any} */ (props).$$events = events;\n\t\t\t\t}\n\n\t\t\t\tif (hydrating) {\n\t\t\t\t\tassign_nodes(/** @type {TemplateNode} */ (anchor_node), null);\n\t\t\t\t}\n\n\t\t\t\tshould_intro = intro;\n\t\t\t\t// @ts-expect-error the public typings are not what the actual function looks like\n\t\t\t\tcomponent = Component(anchor_node, props) || {};\n\t\t\t\tshould_intro = true;\n\n\t\t\t\tif (hydrating) {\n\t\t\t\t\t/** @type {Effect} */ (active_effect).nodes_end = hydrate_node;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\thydrate_node === null ||\n\t\t\t\t\t\thydrate_node.nodeType !== COMMENT_NODE ||\n\t\t\t\t\t\t/** @type {Comment} */ (hydrate_node).data !== HYDRATION_END\n\t\t\t\t\t) {\n\t\t\t\t\t\tw.hydration_mismatch();\n\t\t\t\t\t\tthrow HYDRATION_ERROR;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (context) {\n\t\t\t\t\tpop();\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\treturn () => {\n\t\t\tfor (var event_name of registered_events) {\n\t\t\t\ttarget.removeEventListener(event_name, handle_event_propagation);\n\n\t\t\t\tvar n = /** @type {number} */ (document_listeners.get(event_name));\n\n\t\t\t\tif (--n === 0) {\n\t\t\t\t\tdocument.removeEventListener(event_name, handle_event_propagation);\n\t\t\t\t\tdocument_listeners.delete(event_name);\n\t\t\t\t} else {\n\t\t\t\t\tdocument_listeners.set(event_name, n);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\troot_event_handles.delete(event_handle);\n\n\t\t\tif (anchor_node !== anchor) {\n\t\t\t\tanchor_node.parentNode?.removeChild(anchor_node);\n\t\t\t}\n\t\t};\n\t});\n\n\tmounted_components.set(component, unmount);\n\treturn component;\n}\n\n/**\n * References of the components that were mounted or hydrated.\n * Uses a `WeakMap` to avoid memory leaks.\n */\nlet mounted_components = new WeakMap();\n\n/**\n * Unmounts a component that was previously mounted using `mount` or `hydrate`.\n *\n * Since 5.13.0, if `options.outro` is `true`, [transitions](https://svelte.dev/docs/svelte/transition) will play before the component is removed from the DOM.\n *\n * Returns a `Promise` that resolves after transitions have completed if `options.outro` is true, or immediately otherwise (prior to 5.13.0, returns `void`).\n *\n * ```js\n * import { mount, unmount } from 'svelte';\n * import App from './App.svelte';\n *\n * const app = mount(App, { target: document.body });\n *\n * // later...\n * unmount(app, { outro: true });\n * ```\n * @param {Record<string, any>} component\n * @param {{ outro?: boolean }} [options]\n * @returns {Promise<void>}\n */\nexport function unmount(component, options) {\n\tconst fn = mounted_components.get(component);\n\n\tif (fn) {\n\t\tmounted_components.delete(component);\n\t\treturn fn(options);\n\t}\n\n\tif (DEV) {\n\t\tif (STATE_SYMBOL in component) {\n\t\t\tw.state_proxy_unmount();\n\t\t} else {\n\t\t\tw.lifecycle_double_unmount();\n\t\t}\n\t}\n\n\treturn Promise.resolve();\n}\n","/** @import { ComponentContext, ComponentContextLegacy } from '#client' */\n/** @import { EventDispatcher } from './index.js' */\n/** @import { NotFunction } from './internal/types.js' */\nimport { active_reaction, untrack } from './internal/client/runtime.js';\nimport { is_array } from './internal/shared/utils.js';\nimport { user_effect } from './internal/client/index.js';\nimport * as e from './internal/client/errors.js';\nimport { legacy_mode_flag } from './internal/flags/index.js';\nimport { component_context } from './internal/client/context.js';\nimport { DEV } from 'esm-env';\n\nif (DEV) {\n\t/**\n\t * @param {string} rune\n\t */\n\tfunction throw_rune_error(rune) {\n\t\tif (!(rune in globalThis)) {\n\t\t\t// TODO if people start adjusting the \"this can contain runes\" config through v-p-s more, adjust this message\n\t\t\t/** @type {any} */\n\t\t\tlet value; // let's hope noone modifies this global, but belts and braces\n\t\t\tObject.defineProperty(globalThis, rune, {\n\t\t\t\tconfigurable: true,\n\t\t\t\t// eslint-disable-next-line getter-return\n\t\t\t\tget: () => {\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\n\t\t\t\t\te.rune_outside_svelte(rune);\n\t\t\t\t},\n\t\t\t\tset: (v) => {\n\t\t\t\t\tvalue = v;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tthrow_rune_error('$state');\n\tthrow_rune_error('$effect');\n\tthrow_rune_error('$derived');\n\tthrow_rune_error('$inspect');\n\tthrow_rune_error('$props');\n\tthrow_rune_error('$bindable');\n}\n\n/**\n * Returns an [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) that aborts when the current [derived](https://svelte.dev/docs/svelte/$derived) or [effect](https://svelte.dev/docs/svelte/$effect) re-runs or is destroyed.\n *\n * Must be called while a derived or effect is running.\n *\n * ```svelte\n * <script>\n * \timport { getAbortSignal } from 'svelte';\n *\n * \tlet { id } = $props();\n *\n * \tasync function getData(id) {\n * \t\tconst response = await fetch(`/items/${id}`, {\n * \t\t\tsignal: getAbortSignal()\n * \t\t});\n *\n * \t\treturn await response.json();\n * \t}\n *\n * \tconst data = $derived(await getData(id));\n * </script>\n * ```\n */\nexport function getAbortSignal() {\n\tif (active_reaction === null) {\n\t\te.get_abort_signal_outside_reaction();\n\t}\n\n\treturn (active_reaction.ac ??= new AbortController()).signal;\n}\n\n/**\n * `onMount`, like [`$effect`](https://svelte.dev/docs/svelte/$effect), schedules a function to run as soon as the component has been mounted to the DOM.\n * Unlike `$effect`, the provided function only runs once.\n *\n * It must be called during the component's initialisation (but doesn't need to live _inside_ the component;\n * it can be called from an external module). If a function is returned _synchronously_ from `onMount`,\n * it will be called when the component is unmounted.\n *\n * `onMount` functions do not run during [server-side rendering](https://svelte.dev/docs/svelte/svelte-server#render).\n *\n * @template T\n * @param {() => NotFunction<T> | Promise<NotFunction<T>> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('onMount');\n\t}\n\n\tif (legacy_mode_flag && component_context.l !== null) {\n\t\tinit_update_callbacks(component_context).m.push(fn);\n\t} else {\n\t\tuser_effect(() => {\n\t\t\tconst cleanup = untrack(fn);\n\t\t\tif (typeof cleanup === 'function') return /** @type {() => void} */ (cleanup);\n\t\t});\n\t}\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('onDestroy');\n\t}\n\n\tonMount(() => () => untrack(fn));\n}\n\n/**\n * @template [T=any]\n * @param {string} type\n * @param {T} [detail]\n * @param {any}params_0\n * @returns {CustomEvent<T>}\n */\nfunction create_custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs/svelte/legacy-on#Component-events).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: null; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * @deprecated Use callback props and/or the `$host()` rune instead — see [migration guide](https://svelte.dev/docs/svelte/v5-migration-guide#Event-changes-Component-events)\n * @template {Record<string, any>} [EventMap = any]\n * @returns {EventDispatcher<EventMap>}\n */\nexport function createEventDispatcher() {\n\tconst active_component_context = component_context;\n\tif (active_component_context === null) {\n\t\te.lifecycle_outside_component('createEventDispatcher');\n\t}\n\n\t/**\n\t * @param [detail]\n\t * @param [options]\n\t */\n\treturn (type, detail, options) => {\n\t\tconst events = /** @type {Record<string, Function | Function[]>} */ (\n\t\t\tactive_component_context.s.$$events\n\t\t)?.[/** @type {string} */ (type)];\n\n\t\tif (events) {\n\t\t\tconst callbacks = is_array(events) ? events.slice() : [events];\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = create_custom_event(/** @type {string} */ (type), detail, options);\n\t\t\tfor (const fn of callbacks) {\n\t\t\t\tfn.call(active_component_context.x, event);\n\t\t\t}\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\n// TODO mark beforeUpdate and afterUpdate as deprecated in Svelte 6\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`.\n *\n * In runes mode use `$effect.pre` instead.\n *\n * @deprecated Use [`$effect.pre`](https://svelte.dev/docs/svelte/$effect#$effect.pre) instead\n * @param {() => void} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('beforeUpdate');\n\t}\n\n\tif (component_context.l === null) {\n\t\te.lifecycle_legacy_only('beforeUpdate');\n\t}\n\n\tinit_update_callbacks(component_context).b.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`.\n *\n * In runes mode use `$effect` instead.\n *\n * @deprecated Use [`$effect`](https://svelte.dev/docs/svelte/$effect) instead\n * @param {() => void} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('afterUpdate');\n\t}\n\n\tif (component_context.l === null) {\n\t\te.lifecycle_legacy_only('afterUpdate');\n\t}\n\n\tinit_update_callbacks(component_context).a.push(fn);\n}\n\n/**\n * Legacy-mode: Init callbacks object for onMount/beforeUpdate/afterUpdate\n * @param {ComponentContext} context\n */\nfunction init_update_callbacks(context) {\n\tvar l = /** @type {ComponentContextLegacy} */ (context).l;\n\treturn (l.u ??= { a: [], b: [], m: [] });\n}\n\nexport { flushSync, fork } from './internal/client/reactivity/batch.js';\nexport {\n\tcreateContext,\n\tgetContext,\n\tgetAllContexts,\n\thasContext,\n\tsetContext\n} from './internal/client/context.js';\nexport { hydrate, mount, unmount } from './internal/client/render.js';\nexport { tick, untrack, settled } from './internal/client/runtime.js';\nexport { createRawSnippet } from './internal/client/dom/blocks/snippet.js';\n","import { hydrate_next, hydrating } from '../hydration.js';\n\n/**\n * @param {Comment} anchor\n * @param {Record<string, any>} $$props\n * @param {string} name\n * @param {Record<string, unknown>} slot_props\n * @param {null | ((anchor: Comment) => void)} fallback_fn\n */\nexport function slot(anchor, $$props, name, slot_props, fallback_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar slot_fn = $$props.$$slots?.[name];\n\t// Interop: Can use snippets to fill slots\n\tvar is_interop = false;\n\tif (slot_fn === true) {\n\t\tslot_fn = $$props[name === 'default' ? 'children' : name];\n\t\tis_interop = true;\n\t}\n\n\tif (slot_fn === undefined) {\n\t\tif (fallback_fn !== null) {\n\t\t\tfallback_fn(anchor);\n\t\t}\n\t} else {\n\t\tslot_fn(anchor, is_interop ? () => slot_props : slot_props);\n\t}\n}\n\n/**\n * @param {Record<string, any>} props\n * @returns {Record<string, boolean>}\n */\nexport function sanitize_slots(props) {\n\t/** @type {Record<string, boolean>} */\n\tconst sanitized = {};\n\tif (props.children) sanitized.default = true;\n\tfor (const key in props.$$slots) {\n\t\tsanitized[key] = true;\n\t}\n\treturn sanitized;\n}\n","import { DEV } from 'esm-env';\nimport { register_style } from '../dev/css.js';\nimport { effect } from '../reactivity/effects.js';\n\n/**\n * @param {Node} anchor\n * @param {{ hash: string, code: string }} css\n */\nexport function append_styles(anchor, css) {\n\t// Use `queue_micro_task` to ensure `anchor` is in the DOM, otherwise getRootNode() will yield wrong results\n\teffect(() => {\n\t\tvar root = anchor.getRootNode();\n\n\t\tvar target = /** @type {ShadowRoot} */ (root).host\n\t\t\t? /** @type {ShadowRoot} */ (root)\n\t\t\t: /** @type {Document} */ (root).head ?? /** @type {Document} */ (root.ownerDocument).head;\n\n\t\t// Always querying the DOM is roughly the same perf as additionally checking for presence in a map first assuming\n\t\t// that you'll get cache hits half of the time, so we just always query the dom for simplicity and code savings.\n\t\tif (!target.querySelector('#' + css.hash)) {\n\t\t\tconst style = document.createElement('style');\n\t\t\tstyle.id = css.hash;\n\t\t\tstyle.textContent = css.code;\n\n\t\t\ttarget.appendChild(style);\n\n\t\t\tif (DEV) {\n\t\t\t\tregister_style(css.hash, style);\n\t\t\t}\n\t\t}\n\t});\n}\n","/** @import { Effect, Source } from './types.js' */\nimport { DEV } from 'esm-env';\nimport {\n\tPROPS_IS_BINDABLE,\n\tPROPS_IS_IMMUTABLE,\n\tPROPS_IS_LAZY_INITIAL,\n\tPROPS_IS_RUNES,\n\tPROPS_IS_UPDATED\n} from '../../../constants.js';\nimport { get_descriptor, is_function } from '../../shared/utils.js';\nimport { set, source, update } from './sources.js';\nimport { derived, derived_safe_equal } from './deriveds.js';\nimport {\n\tactive_effect,\n\tget,\n\tis_destroying_effect,\n\tset_active_effect,\n\tuntrack\n} from '../runtime.js';\nimport * as e from '../errors.js';\nimport { DESTROYED, LEGACY_PROPS, STATE_SYMBOL } from '#client/constants';\nimport { proxy } from '../proxy.js';\nimport { capture_store_binding } from './store.js';\nimport { legacy_mode_flag } from '../../flags/index.js';\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_prop(fn, d = 1) {\n\tconst value = fn();\n\tfn(value + d);\n\treturn value;\n}\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_prop(fn, d = 1) {\n\tconst value = fn() + d;\n\tfn(value);\n\treturn value;\n}\n\n/**\n * The proxy handler for rest props (i.e. `const { x, ...rest } = $props()`).\n * Is passed the full `$$props` object and excludes the named props.\n * @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, name?: string }>}}\n */\nconst rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\treturn target.props[key];\n\t},\n\tset(target, key) {\n\t\tif (DEV) {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.props_rest_readonly(`${target.name}.${String(key)}`);\n\t\t}\n\n\t\treturn false;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));\n\t}\n};\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} exclude\n * @param {string} [name]\n * @returns {Record<string, unknown>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function rest_props(props, exclude, name) {\n\treturn new Proxy(\n\t\tDEV ? { props, exclude, name, other: {}, to_proxy: [] } : { props, exclude },\n\t\trest_props_handler\n\t);\n}\n\n/**\n * The proxy handler for legacy $$restProps and $$props\n * @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, special: Record<string | symbol, (v?: unknown) => unknown>, version: Source<number>, parent_effect: Effect }>}}\n */\nconst legacy_rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tget(target.version);\n\t\treturn key in target.special ? target.special[key]() : target.props[key];\n\t},\n\tset(target, key, value) {\n\t\tif (!(key in target.special)) {\n\t\t\tvar previous_effect = active_effect;\n\n\t\t\ttry {\n\t\t\t\tset_active_effect(target.parent_effect);\n\n\t\t\t\t// Handle props that can temporarily get out of sync with the parent\n\t\t\t\t/** @type {Record<string, (v?: unknown) => unknown>} */\n\t\t\t\ttarget.special[key] = prop(\n\t\t\t\t\t{\n\t\t\t\t\t\tget [key]() {\n\t\t\t\t\t\t\treturn target.props[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t/** @type {string} */ (key),\n\t\t\t\t\tPROPS_IS_UPDATED\n\t\t\t\t);\n\t\t\t} finally {\n\t\t\t\tset_active_effect(previous_effect);\n\t\t\t}\n\t\t}\n\n\t\ttarget.special[key](value);\n\t\tupdate(target.version); // $$props is coarse-grained: when $$props.x is updated, usages of $$props.y etc are also rerun\n\t\treturn true;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\tdeleteProperty(target, key) {\n\t\t// Svelte 4 allowed for deletions on $$restProps\n\t\tif (target.exclude.includes(key)) return true;\n\t\ttarget.exclude.push(key);\n\t\tupdate(target.version);\n\t\treturn true;\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));\n\t}\n};\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} exclude\n * @returns {Record<string, unknown>}\n */\nexport function legacy_rest_props(props, exclude) {\n\treturn new Proxy(\n\t\t{\n\t\t\tprops,\n\t\t\texclude,\n\t\t\tspecial: {},\n\t\t\tversion: source(0),\n\t\t\t// TODO this is only necessary because we need to track component\n\t\t\t// destruction inside `prop`, because of `bind:this`, but it\n\t\t\t// seems likely that we can simplify `bind:this` instead\n\t\t\tparent_effect: /** @type {Effect} */ (active_effect)\n\t\t},\n\t\tlegacy_rest_props_handler\n\t);\n}\n\n/**\n * The proxy handler for spread props. Handles the incoming array of props\n * that looks like `() => { dynamic: props }, { static: prop }, ..` and wraps\n * them so that the whole thing is passed to the component as the `$$props` argument.\n * @type {ProxyHandler<{ props: Array<Record<string | symbol, unknown> | (() => Record<string | symbol, unknown>)> }>}}\n */\nconst spread_props_handler = {\n\tget(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) return p[key];\n\t\t}\n\t},\n\tset(target, key, value) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tconst desc = get_descriptor(p, key);\n\t\t\tif (desc && desc.set) {\n\t\t\t\tdesc.set(value);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) {\n\t\t\t\tconst descriptor = get_descriptor(p, key);\n\t\t\t\tif (descriptor && !descriptor.configurable) {\n\t\t\t\t\t// Prevent a \"Non-configurability Report Error\": The target is an array, it does\n\t\t\t\t\t// not actually contain this property. If it is now described as non-configurable,\n\t\t\t\t\t// the proxy throws a validation error. Setting it to true avoids that.\n\t\t\t\t\tdescriptor.configurable = true;\n\t\t\t\t}\n\t\t\t\treturn descriptor;\n\t\t\t}\n\t\t}\n\t},\n\thas(target, key) {\n\t\t// To prevent a false positive `is_entry_props` in the `prop` function\n\t\tif (key === STATE_SYMBOL || key === LEGACY_PROPS) return false;\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (p != null && key in p) return true;\n\t\t}\n\n\t\treturn false;\n\t},\n\townKeys(target) {\n\t\t/** @type {Array<string | symbol>} */\n\t\tconst keys = [];\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (!p) continue;\n\n\t\t\tfor (const key in p) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\n\t\t\tfor (const key of Object.getOwnPropertySymbols(p)) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t}\n};\n\n/**\n * @param {Array<Record<string, unknown> | (() => Record<string, unknown>)>} props\n * @returns {any}\n */\nexport function spread_props(...props) {\n\treturn new Proxy({ props }, spread_props_handler);\n}\n\n/**\n * This function is responsible for synchronizing a possibly bound prop with the inner component state.\n * It is used whenever the compiler sees that the component writes to the prop, or when it has a default prop_value.\n * @template V\n * @param {Record<string, unknown>} props\n * @param {string} key\n * @param {number} flags\n * @param {V | (() => V)} [fallback]\n * @returns {(() => V | ((arg: V) => V) | ((arg: V, mutation: boolean) => V))}\n */\nexport function prop(props, key, flags, fallback) {\n\tvar runes = !legacy_mode_flag || (flags & PROPS_IS_RUNES) !== 0;\n\tvar bindable = (flags & PROPS_IS_BINDABLE) !== 0;\n\tvar lazy = (flags & PROPS_IS_LAZY_INITIAL) !== 0;\n\n\tvar fallback_value = /** @type {V} */ (fallback);\n\tvar fallback_dirty = true;\n\n\tvar get_fallback = () => {\n\t\tif (fallback_dirty) {\n\t\t\tfallback_dirty = false;\n\n\t\t\tfallback_value = lazy\n\t\t\t\t? untrack(/** @type {() => V} */ (fallback))\n\t\t\t\t: /** @type {V} */ (fallback);\n\t\t}\n\n\t\treturn fallback_value;\n\t};\n\n\t/** @type {((v: V) => void) | undefined} */\n\tvar setter;\n\n\tif (bindable) {\n\t\t// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})`\n\t\t// or `createClassComponent(Component, props)`\n\t\tvar is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;\n\n\t\tsetter =\n\t\t\tget_descriptor(props, key)?.set ??\n\t\t\t(is_entry_props && key in props ? (v) => (props[key] = v) : undefined);\n\t}\n\n\tvar initial_value;\n\tvar is_store_sub = false;\n\n\tif (bindable) {\n\t\t[initial_value, is_store_sub] = capture_store_binding(() => /** @type {V} */ (props[key]));\n\t} else {\n\t\tinitial_value = /** @type {V} */ (props[key]);\n\t}\n\n\tif (initial_value === undefined && fallback !== undefined) {\n\t\tinitial_value = get_fallback();\n\n\t\tif (setter) {\n\t\t\tif (runes) e.props_invalid_value(key);\n\t\t\tsetter(initial_value);\n\t\t}\n\t}\n\n\t/** @type {() => V} */\n\tvar getter;\n\n\tif (runes) {\n\t\tgetter = () => {\n\t\t\tvar value = /** @type {V} */ (props[key]);\n\t\t\tif (value === undefined) return get_fallback();\n\t\t\tfallback_dirty = true;\n\t\t\treturn value;\n\t\t};\n\t} else {\n\t\tgetter = () => {\n\t\t\tvar value = /** @type {V} */ (props[key]);\n\n\t\t\tif (value !== undefined) {\n\t\t\t\t// in legacy mode, we don't revert to the fallback value\n\t\t\t\t// if the prop goes from defined to undefined. The easiest\n\t\t\t\t// way to model this is to make the fallback undefined\n\t\t\t\t// as soon as the prop has a value\n\t\t\t\tfallback_value = /** @type {V} */ (undefined);\n\t\t\t}\n\n\t\t\treturn value === undefined ? fallback_value : value;\n\t\t};\n\t}\n\n\t// prop is never written to — we only need a getter\n\tif (runes && (flags & PROPS_IS_UPDATED) === 0) {\n\t\treturn getter;\n\t}\n\n\t// prop is written to, but the parent component had `bind:foo` which\n\t// means we can just call `$$props.foo = value` directly\n\tif (setter) {\n\t\tvar legacy_parent = props.$$legacy;\n\t\treturn /** @type {() => V} */ (\n\t\t\tfunction (/** @type {V} */ value, /** @type {boolean} */ mutation) {\n\t\t\t\tif (arguments.length > 0) {\n\t\t\t\t\t// We don't want to notify if the value was mutated and the parent is in runes mode.\n\t\t\t\t\t// In that case the state proxy (if it exists) should take care of the notification.\n\t\t\t\t\t// If the parent is not in runes mode, we need to notify on mutation, too, that the prop\n\t\t\t\t\t// has changed because the parent will not be able to detect the change otherwise.\n\t\t\t\t\tif (!runes || !mutation || legacy_parent || is_store_sub) {\n\t\t\t\t\t\t/** @type {Function} */ (setter)(mutation ? getter() : value);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\treturn getter();\n\t\t\t}\n\t\t);\n\t}\n\n\t// Either prop is written to, but there's no binding, which means we\n\t// create a derived that we can write to locally.\n\t// Or we are in legacy mode where we always create a derived to replicate that\n\t// Svelte 4 did not trigger updates when a primitive value was updated to the same value.\n\tvar overridden = false;\n\n\tvar d = ((flags & PROPS_IS_IMMUTABLE) !== 0 ? derived : derived_safe_equal)(() => {\n\t\toverridden = false;\n\t\treturn getter();\n\t});\n\n\tif (DEV) {\n\t\td.label = key;\n\t}\n\n\t// Capture the initial value if it's bindable\n\tif (bindable) get(d);\n\n\tvar parent_effect = /** @type {Effect} */ (active_effect);\n\n\treturn /** @type {() => V} */ (\n\t\tfunction (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t\tif (arguments.length > 0) {\n\t\t\t\tconst new_value = mutation ? get(d) : runes && bindable ? proxy(value) : value;\n\n\t\t\t\tset(d, new_value);\n\t\t\t\toverridden = true;\n\n\t\t\t\tif (fallback_value !== undefined) {\n\t\t\t\t\tfallback_value = new_value;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\t// special case — avoid recalculating the derived if we're in a\n\t\t\t// teardown function and the prop was overridden locally, or the\n\t\t\t// component was already destroyed (this latter part is necessary\n\t\t\t// because `bind:this` can read props after the component has\n\t\t\t// been destroyed. TODO simplify `bind:this`\n\t\t\tif ((is_destroying_effect && overridden) || (parent_effect.f & DESTROYED) !== 0) {\n\t\t\t\treturn d.v;\n\t\t\t}\n\n\t\t\treturn get(d);\n\t\t}\n\t);\n}\n","/** @import { ComponentConstructorOptions, ComponentType, SvelteComponent, Component } from 'svelte' */\nimport { DIRTY, LEGACY_PROPS, MAYBE_DIRTY } from '../internal/client/constants.js';\nimport { user_pre_effect } from '../internal/client/reactivity/effects.js';\nimport { mutable_source, set } from '../internal/client/reactivity/sources.js';\nimport { hydrate, mount, unmount } from '../internal/client/render.js';\nimport { active_effect, get, set_signal_status } from '../internal/client/runtime.js';\nimport { flushSync } from '../internal/client/reactivity/batch.js';\nimport { define_property, is_array } from '../internal/shared/utils.js';\nimport * as e from '../internal/client/errors.js';\nimport * as w from '../internal/client/warnings.js';\nimport { DEV } from 'esm-env';\nimport { FILENAME } from '../constants.js';\nimport { component_context, dev_current_component_function } from '../internal/client/context.js';\nimport { async_mode_flag } from '../internal/flags/index.js';\n\n/**\n * Takes the same options as a Svelte 4 component and the component function and returns a Svelte 4 compatible component.\n *\n * @deprecated Use this only as a temporary solution to migrate your imperative component code to Svelte 5.\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @template {Record<string, any>} Events\n * @template {Record<string, any>} Slots\n *\n * @param {ComponentConstructorOptions<Props> & {\n * \tcomponent: ComponentType<SvelteComponent<Props, Events, Slots>> | Component<Props>;\n * }} options\n * @returns {SvelteComponent<Props, Events, Slots> & Exports}\n */\nexport function createClassComponent(options) {\n\t// @ts-expect-error $$prop_def etc are not actually defined\n\treturn new Svelte4Component(options);\n}\n\n/**\n * Takes the component function and returns a Svelte 4 compatible component constructor.\n *\n * @deprecated Use this only as a temporary solution to migrate your imperative component code to Svelte 5.\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @template {Record<string, any>} Events\n * @template {Record<string, any>} Slots\n *\n * @param {SvelteComponent<Props, Events, Slots> | Component<Props>} component\n * @returns {ComponentType<SvelteComponent<Props, Events, Slots> & Exports>}\n */\nexport function asClassComponent(component) {\n\t// @ts-expect-error $$prop_def etc are not actually defined\n\treturn class extends Svelte4Component {\n\t\t/** @param {any} options */\n\t\tconstructor(options) {\n\t\t\tsuper({\n\t\t\t\tcomponent,\n\t\t\t\t...options\n\t\t\t});\n\t\t}\n\t};\n}\n\n/**\n * Support using the component as both a class and function during the transition period\n * @typedef {{new (o: ComponentConstructorOptions): SvelteComponent;(...args: Parameters<Component<Record<string, any>>>): ReturnType<Component<Record<string, any>, Record<string, any>>>;}} LegacyComponentType\n */\n\nclass Svelte4Component {\n\t/** @type {any} */\n\t#events;\n\n\t/** @type {Record<string, any>} */\n\t#instance;\n\n\t/**\n\t * @param {ComponentConstructorOptions & {\n\t * component: any;\n\t * }} options\n\t */\n\tconstructor(options) {\n\t\tvar sources = new Map();\n\n\t\t/**\n\t\t * @param {string | symbol} key\n\t\t * @param {unknown} value\n\t\t */\n\t\tvar add_source = (key, value) => {\n\t\t\tvar s = mutable_source(value, false, false);\n\t\t\tsources.set(key, s);\n\t\t\treturn s;\n\t\t};\n\n\t\t// Replicate coarse-grained props through a proxy that has a version source for\n\t\t// each property, which is incremented on updates to the property itself. Do not\n\t\t// use our $state proxy because that one has fine-grained reactivity.\n\t\tconst props = new Proxy(\n\t\t\t{ ...(options.props || {}), $$events: {} },\n\t\t\t{\n\t\t\t\tget(target, prop) {\n\t\t\t\t\treturn get(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop)));\n\t\t\t\t},\n\t\t\t\thas(target, prop) {\n\t\t\t\t\t// Necessary to not throw \"invalid binding\" validation errors on the component side\n\t\t\t\t\tif (prop === LEGACY_PROPS) return true;\n\n\t\t\t\t\tget(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop)));\n\t\t\t\t\treturn Reflect.has(target, prop);\n\t\t\t\t},\n\t\t\t\tset(target, prop, value) {\n\t\t\t\t\tset(sources.get(prop) ?? add_source(prop, value), value);\n\t\t\t\t\treturn Reflect.set(target, prop, value);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.#instance = (options.hydrate ? hydrate : mount)(options.component, {\n\t\t\ttarget: options.target,\n\t\t\tanchor: options.anchor,\n\t\t\tprops,\n\t\t\tcontext: options.context,\n\t\t\tintro: options.intro ?? false,\n\t\t\trecover: options.recover\n\t\t});\n\n\t\t// We don't flushSync for custom element wrappers or if the user doesn't want it,\n\t\t// or if we're in async mode since `flushSync()` will fail\n\t\tif (!async_mode_flag && (!options?.props?.$$host || options.sync === false)) {\n\t\t\tflushSync();\n\t\t}\n\n\t\tthis.#events = props.$$events;\n\n\t\tfor (const key of Object.keys(this.#instance)) {\n\t\t\tif (key === '$set' || key === '$destroy' || key === '$on') continue;\n\t\t\tdefine_property(this, key, {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#instance[key];\n\t\t\t\t},\n\t\t\t\t/** @param {any} value */\n\t\t\t\tset(value) {\n\t\t\t\t\tthis.#instance[key] = value;\n\t\t\t\t},\n\t\t\t\tenumerable: true\n\t\t\t});\n\t\t}\n\n\t\tthis.#instance.$set = /** @param {Record<string, any>} next */ (next) => {\n\t\t\tObject.assign(props, next);\n\t\t};\n\n\t\tthis.#instance.$destroy = () => {\n\t\t\tunmount(this.#instance);\n\t\t};\n\t}\n\n\t/** @param {Record<string, any>} props */\n\t$set(props) {\n\t\tthis.#instance.$set(props);\n\t}\n\n\t/**\n\t * @param {string} event\n\t * @param {(...args: any[]) => any} callback\n\t * @returns {any}\n\t */\n\t$on(event, callback) {\n\t\tthis.#events[event] = this.#events[event] || [];\n\n\t\t/** @param {any[]} args */\n\t\tconst cb = (...args) => callback.call(this, ...args);\n\t\tthis.#events[event].push(cb);\n\t\treturn () => {\n\t\t\tthis.#events[event] = this.#events[event].filter(/** @param {any} fn */ (fn) => fn !== cb);\n\t\t};\n\t}\n\n\t$destroy() {\n\t\tthis.#instance.$destroy();\n\t}\n}\n\n/**\n * Runs the given function once immediately on the server, and works like `$effect.pre` on the client.\n *\n * @deprecated Use this only as a temporary solution to migrate your component code to Svelte 5.\n * @param {() => void | (() => void)} fn\n * @returns {void}\n */\nexport function run(fn) {\n\tuser_pre_effect(() => {\n\t\tfn();\n\t\tvar effect = /** @type {import('#client').Effect} */ (active_effect);\n\t\t// If the effect is immediately made dirty again, mark it as maybe dirty to emulate legacy behaviour\n\t\tif ((effect.f & DIRTY) !== 0) {\n\t\t\tlet filename = \"a file (we can't know which one)\";\n\t\t\tif (DEV) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tfilename = dev_current_component_function?.[FILENAME] ?? filename;\n\t\t\t}\n\t\t\tw.legacy_recursive_reactive_block(filename);\n\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t}\n\t});\n}\n\n/**\n * Function to mimic the multiple listeners available in svelte 4\n * @deprecated\n * @param {EventListener[]} handlers\n * @returns {EventListener}\n */\nexport function handlers(...handlers) {\n\treturn function (event) {\n\t\tconst { stopImmediatePropagation } = event;\n\t\tlet stopped = false;\n\n\t\tevent.stopImmediatePropagation = () => {\n\t\t\tstopped = true;\n\t\t\tstopImmediatePropagation.call(event);\n\t\t};\n\n\t\tconst errors = [];\n\n\t\tfor (const handler of handlers) {\n\t\t\ttry {\n\t\t\t\t// @ts-expect-error `this` is not typed\n\t\t\t\thandler?.call(this, event);\n\t\t\t} catch (e) {\n\t\t\t\terrors.push(e);\n\t\t\t}\n\n\t\t\tif (stopped) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (let error of errors) {\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}\n\t};\n}\n\n/**\n * Function to create a `bubble` function that mimic the behavior of `on:click` without handler available in svelte 4.\n * @deprecated Use this only as a temporary solution to migrate your automatically delegated events in Svelte 5.\n */\nexport function createBubbler() {\n\tconst active_component_context = component_context;\n\tif (active_component_context === null) {\n\t\te.lifecycle_outside_component('createBubbler');\n\t}\n\n\treturn (/**@type {string}*/ type) => (/**@type {Event}*/ event) => {\n\t\tconst events = /** @type {Record<string, Function | Function[]>} */ (\n\t\t\tactive_component_context.s.$$events\n\t\t)?.[/** @type {any} */ (type)];\n\n\t\tif (events) {\n\t\t\tconst callbacks = is_array(events) ? events.slice() : [events];\n\t\t\tfor (const fn of callbacks) {\n\t\t\t\tfn.call(active_component_context.x, event);\n\t\t\t}\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\nexport {\n\tonce,\n\tpreventDefault,\n\tself,\n\tstopImmediatePropagation,\n\tstopPropagation,\n\ttrusted,\n\tpassive,\n\tnonpassive\n} from '../internal/client/dom/legacy/event-modifiers.js';\n","import { createClassComponent } from '../../../../legacy/legacy-client.js';\nimport { effect_root, render_effect } from '../../reactivity/effects.js';\nimport { append } from '../template.js';\nimport { define_property, get_descriptor, object_keys } from '../../../shared/utils.js';\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n\n/** @type {any} */\nlet SvelteElement;\n\nif (typeof HTMLElement === 'function') {\n\tSvelteElement = class extends HTMLElement {\n\t\t/** The Svelte component constructor */\n\t\t$$ctor;\n\t\t/** Slots */\n\t\t$$s;\n\t\t/** @type {any} The Svelte component instance */\n\t\t$$c;\n\t\t/** Whether or not the custom element is connected */\n\t\t$$cn = false;\n\t\t/** @type {Record<string, any>} Component props data */\n\t\t$$d = {};\n\t\t/** `true` if currently in the process of reflecting component props back to attributes */\n\t\t$$r = false;\n\t\t/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */\n\t\t$$p_d = {};\n\t\t/** @type {Record<string, EventListenerOrEventListenerObject[]>} Event listeners */\n\t\t$$l = {};\n\t\t/** @type {Map<EventListenerOrEventListenerObject, Function>} Event listener unsubscribe functions */\n\t\t$$l_u = new Map();\n\t\t/** @type {any} The managed render effect for reflecting attributes */\n\t\t$$me;\n\n\t\t/**\n\t\t * @param {*} $$componentCtor\n\t\t * @param {*} $$slots\n\t\t * @param {*} use_shadow_dom\n\t\t */\n\t\tconstructor($$componentCtor, $$slots, use_shadow_dom) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\t\t\tif (use_shadow_dom) {\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * @param {string} type\n\t\t * @param {EventListenerOrEventListenerObject} listener\n\t\t * @param {boolean | AddEventListenerOptions} [options]\n\t\t */\n\t\taddEventListener(type, listener, options) {\n\t\t\t// We can't determine upfront if the event is a custom event or not, so we have to\n\t\t\t// listen to both. If someone uses a custom event with the same name as a regular\n\t\t\t// browser event, this fires twice - we can't avoid that.\n\t\t\tthis.$$l[type] = this.$$l[type] || [];\n\t\t\tthis.$$l[type].push(listener);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t}\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t}\n\n\t\t/**\n\t\t * @param {string} type\n\t\t * @param {EventListenerOrEventListenerObject} listener\n\t\t * @param {boolean | AddEventListenerOptions} [options]\n\t\t */\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$l_u.get(listener);\n\t\t\t\tif (unsub) {\n\t\t\t\t\tunsub();\n\t\t\t\t\tthis.$$l_u.delete(listener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tthis.$$cn = true;\n\t\t\tif (!this.$$c) {\n\t\t\t\t// We wait one tick to let possible child slot elements be created/mounted\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (!this.$$cn || this.$$c) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t/** @param {string} name */\n\t\t\t\tfunction create_slot(name) {\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {Element} anchor\n\t\t\t\t\t */\n\t\t\t\t\treturn (anchor) => {\n\t\t\t\t\t\tconst slot = document.createElement('slot');\n\t\t\t\t\t\tif (name !== 'default') slot.name = name;\n\n\t\t\t\t\t\tappend(anchor, slot);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t/** @type {Record<string, any>} */\n\t\t\t\tconst $$slots = {};\n\t\t\t\tconst existing_slots = get_custom_elements_slots(this);\n\t\t\t\tfor (const name of this.$$s) {\n\t\t\t\t\tif (name in existing_slots) {\n\t\t\t\t\t\tif (name === 'default' && !this.$$d.children) {\n\t\t\t\t\t\t\tthis.$$d.children = create_slot(name);\n\t\t\t\t\t\t\t$$slots.default = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$$slots[name] = create_slot(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const attribute of this.attributes) {\n\t\t\t\t\t// this.$$data takes precedence over this.attributes\n\t\t\t\t\tconst name = this.$$g_p(attribute.name);\n\t\t\t\t\tif (!(name in this.$$d)) {\n\t\t\t\t\t\tthis.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Port over props that were set programmatically before ce was initialized\n\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\tif (!(key in this.$$d) && this[key] !== undefined) {\n\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\tthis.$$d[key] = this[key]; // don't transform, these were set through JavaScript\n\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\tdelete this[key]; // remove the property that shadows the getter/setter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$c = createClassComponent({\n\t\t\t\t\tcomponent: this.$$ctor,\n\t\t\t\t\ttarget: this.shadowRoot || this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...this.$$d,\n\t\t\t\t\t\t$$slots,\n\t\t\t\t\t\t$$host: this\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Reflect component props as attributes\n\t\t\t\tthis.$$me = effect_root(() => {\n\t\t\t\t\trender_effect(() => {\n\t\t\t\t\t\tthis.$$r = true;\n\t\t\t\t\t\tfor (const key of object_keys(this.$$c)) {\n\t\t\t\t\t\t\tif (!this.$$p_d[key]?.reflect) continue;\n\t\t\t\t\t\t\tthis.$$d[key] = this.$$c[key];\n\t\t\t\t\t\t\tconst attribute_value = get_custom_element_value(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tthis.$$d[key],\n\t\t\t\t\t\t\t\tthis.$$p_d,\n\t\t\t\t\t\t\t\t'toAttribute'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (attribute_value == null) {\n\t\t\t\t\t\t\t\tthis.removeAttribute(this.$$p_d[key].attribute || key);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setAttribute(this.$$p_d[key].attribute || key, attribute_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.$$r = false;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tfor (const type in this.$$l) {\n\t\t\t\t\tfor (const listener of this.$$l[type]) {\n\t\t\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$l = {};\n\t\t\t}\n\t\t}\n\n\t\t// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte\n\t\t// and setting attributes through setAttribute etc, this is helpful\n\n\t\t/**\n\t\t * @param {string} attr\n\t\t * @param {string} _oldValue\n\t\t * @param {string} newValue\n\t\t */\n\t\tattributeChangedCallback(attr, _oldValue, newValue) {\n\t\t\tif (this.$$r) return;\n\t\t\tattr = this.$$g_p(attr);\n\t\t\tthis.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');\n\t\t\tthis.$$c?.$set({ [attr]: this.$$d[attr] });\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.$$cn = false;\n\t\t\t// In a microtask, because this could be a move within the DOM\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tif (!this.$$cn && this.$$c) {\n\t\t\t\t\tthis.$$c.$destroy();\n\t\t\t\t\tthis.$$me();\n\t\t\t\t\tthis.$$c = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * @param {string} attribute_name\n\t\t */\n\t\t$$g_p(attribute_name) {\n\t\t\treturn (\n\t\t\t\tobject_keys(this.$$p_d).find(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tthis.$$p_d[key].attribute === attribute_name ||\n\t\t\t\t\t\t(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)\n\t\t\t\t) || attribute_name\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * @param {string} prop\n * @param {any} value\n * @param {Record<string, CustomElementPropDefinition>} props_definition\n * @param {'toAttribute' | 'toProp'} [transform]\n */\nfunction get_custom_element_value(prop, value, props_definition, transform) {\n\tconst type = props_definition[prop]?.type;\n\tvalue = type === 'Boolean' && typeof value !== 'boolean' ? value != null : value;\n\tif (!transform || !props_definition[prop]) {\n\t\treturn value;\n\t} else if (transform === 'toAttribute') {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value == null ? null : JSON.stringify(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value ? '' : null;\n\t\t\tcase 'Number':\n\t\t\t\treturn value == null ? null : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value && JSON.parse(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value; // conversion already handled above\n\t\t\tcase 'Number':\n\t\t\t\treturn value != null ? +value : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * @param {HTMLElement} element\n */\nfunction get_custom_elements_slots(element) {\n\t/** @type {Record<string, true>} */\n\tconst result = {};\n\telement.childNodes.forEach((node) => {\n\t\tresult[/** @type {Element} node */ (node).slot || 'default'] = true;\n\t});\n\treturn result;\n}\n\n/**\n * @internal\n *\n * Turn a Svelte component into a custom element.\n * @param {any} Component A Svelte component function\n * @param {Record<string, CustomElementPropDefinition>} props_definition The props to observe\n * @param {string[]} slots The slots to create\n * @param {string[]} exports Explicitly exported values, other than props\n * @param {boolean} use_shadow_dom Whether to use shadow DOM\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\texports,\n\tuse_shadow_dom,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, use_shadow_dom);\n\t\t\tthis.$$p_d = props_definition;\n\t\t}\n\t\tstatic get observedAttributes() {\n\t\t\treturn object_keys(props_definition).map((key) =>\n\t\t\t\t(props_definition[key].attribute || key).toLowerCase()\n\t\t\t);\n\t\t}\n\t};\n\tobject_keys(props_definition).forEach((prop) => {\n\t\tdefine_property(Class.prototype, prop, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tvalue = get_custom_element_value(prop, value, props_definition);\n\t\t\t\tthis.$$d[prop] = value;\n\t\t\t\tvar component = this.$$c;\n\n\t\t\t\tif (component) {\n\t\t\t\t\t// // If the instance has an accessor, use that instead\n\t\t\t\t\tvar setter = get_descriptor(component, prop)?.get;\n\n\t\t\t\t\tif (setter) {\n\t\t\t\t\t\tcomponent[prop] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomponent.$set({ [prop]: value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\texports.forEach((property) => {\n\t\tdefine_property(Class.prototype, property, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c?.[property];\n\t\t\t}\n\t\t});\n\t});\n\tif (extend) {\n\t\t// @ts-expect-error - assigning here is fine\n\t\tClass = extend(Class);\n\t}\n\tComponent.element = /** @type {any} */ Class;\n\treturn Class;\n}\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/*!\n * Bootstrap v5.3.8 (https://getbootstrap.com/)\n * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.8';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n\n // Private\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n\n // Private\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org/docs/v2/)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [undefined, this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org/docs/v2/)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element, this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst HOME_KEY = 'Home';\nconst END_KEY = 'End';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n if (!this._parent) {\n return;\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren());\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n\n // Getters\n static get NAME() {\n return NAME$1;\n }\n\n // Public\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n if (this._elemIsActive(innerElem)) {\n return;\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem();\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n this._deactivate(active, innerElem);\n this._activate(innerElem, active);\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.add(CLASS_NAME_ACTIVE);\n this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n this._toggleDropDown(element, true);\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n this._toggleDropDown(element, false);\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {\n return;\n }\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault();\n const children = this._getChildren().filter(element => !isDisabled(element));\n let nextActiveElement;\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true);\n }\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n const isActive = this._elemIsActive(child);\n const outerElem = this._getOuterElement(child);\n child.setAttribute('aria-selected', isActive);\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n this._setAttributeIfNotExists(child, 'role', 'tab');\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child);\n }\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child);\n if (!target) {\n return;\n }\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);\n }\n }\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n Tab.getOrCreateInstance(this).show();\n});\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n this._setListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._clearTimeout();\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n this._maybeScheduleHide();\n };\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n hide() {\n if (!this.isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n this._element.classList.add(CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n dispose() {\n this._clearTimeout();\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n super.dispose();\n }\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n if (isInteracting) {\n this._clearTimeout();\n return;\n }\n const nextElement = event.relatedTarget;\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n this._maybeScheduleHide();\n }\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n","<svelte:options customElement=\"hb-tooltip\" />\n\n<script lang=\"ts\">\n import { Tooltip } from \"bootstrap\";\n import type {\n Component,\n Tooltip as TooltipConfig,\n } from \"./types/webcomponent.type\";\n import { onMount } from \"svelte\";\n\n let { id = \"\", tooltip }: Component = $props();\n\n let containerRef: HTMLElement;\n let tooltipInstance: Tooltip;\n\n onMount(() => {\n containerRef = $host()?.shadowRoot?.querySelector(\n \"#tooltip\",\n ) as HTMLElement;\n });\n\n let parsedTooltip = $derived.by(() => {\n if (!tooltip) return null;\n if (typeof tooltip === \"string\") {\n try {\n return JSON.parse(tooltip) as TooltipConfig;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(\"Invalid tooltip JSON\", e);\n return null;\n }\n }\n return tooltip as TooltipConfig;\n });\n const applyStyle = () => {\n // Find the tooltip element created by Bootstrap\n // Since we passed container: containerRef, it might be appended there or to body depending on config.\n // If attached to containerRef, we can find it there.\n // Bootstrap 5 tooltip element usually has class 'tooltip'\n\n // Note: Bootstrap Tooltip with `container: element` appends the tooltip TO that element.\n const tip = containerRef.querySelector(\".tooltip\") as HTMLElement;\n if (!tip) return;\n\n const styleConfig = parsedTooltip?.style || {};\n if (styleConfig.disableDefaultStyle) return;\n\n const defaultStyles = {\n \"background-color\": styleConfig.backgroundColor || \"black\",\n color: styleConfig.color || \"white\",\n \"font-size\": styleConfig.fontSize || \"0.875rem\",\n padding: styleConfig.padding || \"0.5rem 1rem\",\n \"border-radius\": styleConfig.borderRadius || \"0.25rem\",\n opacity:\n styleConfig.opacity !== undefined ? styleConfig.opacity : 0.9,\n transition: `opacity ${styleConfig.transitionDuration || \"0.2s\"} ease-in-out`,\n };\n\n const tooltipInner = tip.querySelector(\".tooltip-inner\") as HTMLElement;\n if (tooltipInner) {\n Object.entries(defaultStyles).forEach(([key, value]) => {\n if (key === \"transition\" || key === \"opacity\") {\n tip.style.setProperty(key, String(value));\n } else {\n tooltipInner.style.setProperty(key, String(value));\n }\n });\n // Override bootstrap var for arrow color if bg color changes\n if (styleConfig.backgroundColor) {\n tip.style.setProperty(\n \"--bs-tooltip-bg\",\n styleConfig.backgroundColor,\n );\n }\n }\n };\n $effect(() => {\n if (!containerRef || !parsedTooltip) return;\n\n // The tooltip is attached to the containerRef (the span wrapping the slot)\n tooltipInstance = new Tooltip(containerRef, {\n container: containerRef, // Keep it contained if possible, or body if needed. Button uses containerRef.\n placement: parsedTooltip.placement || \"top\",\n ...parsedTooltip,\n });\n\n return () => {\n tooltipInstance.dispose();\n };\n });\n</script>\n\n<span\n id=\"tooltip\"\n oninserted.bs.tooltip={applyStyle}\n style=\"display: inline-block;\"\n>\n <slot>&nbsp;&nbsp;&nbsp;</slot>\n</span>\n\n<style lang=\"scss\">\n @forward \"./styles/webcomponent.scss\";\n</style>\n"],"names":["TEMPLATE_USE_IMPORT_NODE","HYDRATION_START","HYDRATION_START_ELSE","HYDRATION_END","HYDRATION_ERROR","UNINITIALIZED","DEV","is_array","index_of","array_from","object_keys","define_property","get_descriptor","object_prototype","array_prototype","get_prototype_of","is_extensible","run_all","arr","i","deferred","resolve","reject","promise","res","rej","DERIVED","EFFECT","RENDER_EFFECT","BLOCK_EFFECT","BRANCH_EFFECT","ROOT_EFFECT","BOUNDARY_EFFECT","CONNECTED","CLEAN","DIRTY","MAYBE_DIRTY","INERT","DESTROYED","EFFECT_RAN","EFFECT_TRANSPARENT","EAGER_EFFECT","HEAD_EFFECT","EFFECT_PRESERVED","USER_EFFECT","WAS_MARKED","REACTION_IS_UPDATING","ASYNC","ERROR_VALUE","STATE_SYMBOL","LEGACY_PROPS","STALE_REACTION","TEXT_NODE","COMMENT_NODE","lifecycle_outside_component","name","effect_in_teardown","rune","effect_in_unowned_derived","effect_orphan","effect_update_depth_exceeded","hydration_failed","state_descriptors_fixed","state_prototype_fixed","state_unsafe_mutation","svelte_boundary_reset_onerror","hydration_mismatch","location","svelte_boundary_reset_noop","hydrating","set_hydrating","value","hydrate_node","set_hydrate_node","node","w.hydration_mismatch","hydrate_next","get_next_sibling","reset","next","count","skip_nodes","remove","depth","data","equals","safe_not_equal","a","b","safe_equals","tracing_mode_flag","component_context","set_component_context","context","push","props","runes","fn","pop","component","effects","create_user_effect","is_runes","micro_tasks","run_micro_tasks","tasks","queue_micro_task","is_flushing_sync","flush_tasks","handle_error","error","effect","active_effect","active_reaction","invoke_error_boundary","e","batches","current_batch","batch_values","queued_root_effects","last_scheduled_effect","is_flushing","Batch","#commit_callbacks","#discard_callbacks","#pending","#blocking_pending","#deferred","#dirty_effects","#maybe_dirty_effects","root_effects","target","root","#traverse_effect_tree","#resolve","#defer_effects","flush_queued_effects","flags","is_branch","is_skippable_branch","skip","is_dirty","update_effect","child","parent","#clear_marked","set_signal_status","deps","dep","source","flush_effects","#commit","previous_batch_values","is_earlier","dummy_target","batch","sources","others","s","prev_queued_root_effects","marked","checked","mark_effects","blocking","schedule_effect","task","flushSync","was_flushing_sync","result","was_updating_effect","is_updating_effect","source_stacks","flush_count","set_is_updating_effect","updates","entry","infinite_loop_guard","old_values","e.effect_update_depth_exceeded","eager_block_effects","length","unlink_effect","ordered_effects","ancestor","j","reaction","depends_on","depends","signal","createSubscriber","start","subscribers","version","stop","effect_tracking","get","render_effect","untrack","increment","boundary","children","Boundary","#anchor","#hydrate_open","#props","#children","#effect","#main_effect","#pending_effect","#failed_effect","#offscreen_fragment","#pending_anchor","#local_pending_count","#pending_count","#is_creating_fallback","#effect_pending","#effect_pending_subscriber","block","comment","#hydrate_pending_content","#hydrate_resolved_content","anchor","#get_anchor","branch","#show_pending_snippet","pending","#run","pause_effect","create_text","previous_effect","previous_reaction","previous_ctx","set_active_effect","set_active_reaction","move_effect","#update_pending_count","d","internal_set","onerror","failed","destroy_effect","did_reset","calling_on_error","w.svelte_boundary_reset_noop","e.svelte_boundary_reset_onerror","derived","parent_derived","user_derived","push_reaction_value","destroy_derived_effects","get_derived_parent_effect","execute_derived","prev_active_effect","update_reaction","update_derived","increment_write_version","is_destroying_effect","status","eager_effects","eager_effects_deferred","v","stack","state","mutable_source","initial_value","immutable","trackable","set","should_proxy","untracking","current_sources","e.state_unsafe_mutation","new_value","proxy","old_value","mark_reactions","untracked_writes","set_untracked_writes","flush_eager_effects","prev_is_updating_effect","inspects","reactions","not_dirty","prototype","is_proxied_array","parent_version","update_version","with_parent","set_update_version","_","prop","descriptor","e.state_descriptors_fixed","receiver","exists","p","has","other_s","ls","n","own_keys","key","e.state_prototype_fixed","$window","is_firefox","first_child_getter","next_sibling_getter","init_operations","element_prototype","node_prototype","text_prototype","get_first_child","is_text","clear_text_content","without_reactive_context","validate_effect","e.effect_orphan","e.effect_in_unowned_derived","e.effect_in_teardown","push_effect","parent_effect","parent_last","create_effect","type","sync","teardown","user_effect","defer","effect_root","component_root","options","fulfil","execute_effect_teardown","previously_destroying_effect","set_is_destroying_effect","destroy_effect_children","remove_dom","controller","destroy_block_effect_children","removed","remove_effect_dom","remove_reactions","transitions","transition","end","prev","callback","destroy","pause_children","run_out_transitions","remaining","check","local","sibling","transparent","fragment","new_deps","skipped_deps","write_version","read_version","dependencies","dependency","schedule_possible_effect_self_invalidation","previous_deps","previous_skipped_deps","previous_untracked_writes","previous_sources","previous_component_context","previous_untracking","previous_update_version","remove_reaction","index","new_length","start_index","is_derived","destroyed","depends_on_old_values","reconnect","STATUS_MASK","all_registered_events","root_event_handles","create_event","event_name","dom","handler","target_handler","event","handle_event_propagation","capture","passive","last_propagated_event","handler_element","owner_document","path","current_target","path_idx","handled_at","at_idx","handler_idx","throw_error","other_errors","parent_element","delegated","create_fragment_from_html","html","elem","assign_nodes","from_html","content","use_import_node","has_start","clone","text","append","PASSIVE_EVENTS","is_passive_event","mount","_mount","hydrate","was_hydrating","previous_hydrate_node","instance","line","e.hydration_failed","document_listeners","Component","events","intro","registered_events","event_handle","unmount","anchor_node","ctx","mounted_components","onMount","e.lifecycle_outside_component","cleanup","slot","$$props","slot_props","fallback_fn","slot_fn","is_interop","append_styles","css","style","fallback","fallback_value","fallback_dirty","get_fallback","getter","overridden","mutation","createClassComponent","Svelte4Component","#events","#instance","add_source","cb","args","SvelteElement","$$componentCtor","$$slots","use_shadow_dom","listener","unsub","create_slot","existing_slots","get_custom_elements_slots","attribute","get_custom_element_value","attribute_value","attr","_oldValue","newValue","attribute_name","props_definition","transform","element","create_custom_element","slots","exports","extend","Class","setter","property","top","bottom","right","left","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","attributes","_ref2","initialStyles","styleProperties","applyStyles$1","getBasePlacement","max","min","round","getUAString","uaData","item","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","y","width","height","getLayoutRect","contains","rootNode","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","keys","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","position","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","modifiers","map","visited","modifier","sort","requires","depModifier","orderModifiers","orderedModifiers","phase","debounce","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","elementMap","Data","instanceMap","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","selector","match","id","toType","object","getUID","prefix","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","triggerTransitionEnd","getElement","isVisible","elementIsVisible","closedDetails","summary","isDisabled","findShadowRoot","noop","reflow","getjQuery","DOMContentLoadedCallbacks","onDOMContentLoaded","isRTL","defineJQueryPlugin","plugin","$","JQUERY_NO_CONFLICT","execute","possibleCallback","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","called","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","nativeEvents","makeEventUid","uid","getElementEvents","bootstrapHandler","hydrateObj","EventHandler","bootstrapDelegationHandler","domElements","domElement","findHandler","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","handlers","previousFunction","removeHandler","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","obj","meta","normalizeData","normalizeDataKey","chr","Manipulator","bsKeys","pureKey","Config","config","jsonConfig","configTypes","expectedTypes","valueType","VERSION","BaseComponent","propertyName","isAnimated","getSelector","hrefAttribute","sel","SelectorEngine","parents","previous","focusables","el","enableDismissTrigger","method","clickEvent","NAME$f","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE$5","CLASS_NAME_SHOW$8","Alert","NAME$e","EVENT_KEY$a","DATA_API_KEY$6","CLASS_NAME_ACTIVE$3","SELECTOR_DATA_TOGGLE$5","EVENT_CLICK_DATA_API$6","Button","button","NAME$d","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","Default$c","DefaultType$c","Swipe","absDeltaX","direction","NAME$c","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","Default$b","DefaultType$b","Carousel","items","activeIndex","img","swipeConfig","activeIndicator","newActiveIndicator","elementInterval","isNext","nextElement","nextElementIndex","triggerEvent","eventName","isCycling","directionalClassName","orderClassName","completeCallBack","carousel","slideIndex","carousels","NAME$b","EVENT_KEY$7","DATA_API_KEY$4","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","Collapse","toggleList","filterElement","foundElement","activeChildren","activeInstance","dimension","complete","scrollSize","trigger","selected","triggerArray","isOpen","_config","NAME$a","EVENT_KEY$6","DATA_API_KEY$3","ESCAPE_KEY$2","TAB_KEY$1","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","RIGHT_MOUSE_BUTTON","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_DROPUP_CENTER","CLASS_NAME_DROPDOWN_CENTER","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_NAVBAR","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","PLACEMENT_TOPCENTER","PLACEMENT_BOTTOMCENTER","Default$9","DefaultType$9","Dropdown","relatedTarget","Popper","referenceElement","popperConfig","Popper.createPopper","parentDropdown","isEnd","popperData","defaultBsPopperConfig","openToggles","toggle","composedPath","isMenuTarget","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","NAME$9","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","DefaultType$8","Backdrop","backdrop","NAME$8","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_KEY","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","Default$7","DefaultType$7","FocusTrap","trapElement","elements","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","documentWidth","calculatedValue","styleProperty","scrollbarWidth","manipulationCallBack","actualValue","callBack","NAME$7","EVENT_KEY$4","DATA_API_KEY$2","ESCAPE_KEY$1","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","OPEN_SELECTOR$1","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$2","Default$6","DefaultType$6","Modal","modalBody","transitionComplete","event2","isModalOverflowing","initialOverflowY","isBodyOverflowing","showEvent","alreadyOpen","NAME$6","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","ESCAPE_KEY","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","SELECTOR_DATA_TOGGLE$1","Default$5","DefaultType$5","Offcanvas","completeCallback","clickCallback","DefaultAllowlist","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","attributeRegex","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","elementName","attributeList","allowedAttributes","NAME$5","Default$4","DefaultType$4","DefaultContentType","TemplateFactory","templateWrapper","template","extraClass","arg","templateElement","NAME$4","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_MODAL","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_HIDE$2","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_INSERTED","EVENT_CLICK$1","EVENT_FOCUSIN$1","EVENT_FOCUSOUT$1","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","AttachmentMap","Default$3","DefaultType$3","Tooltip","isInTheDom","tip","container","tipId","attachment","triggers","eventIn","eventOut","title","timeout","dataAttributes","dataAttribute","NAME$3","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","NAME$2","EVENT_KEY$2","DATA_API_KEY","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$1","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE$1","Default$1","DefaultType$1","ScrollSpy","section","observableSection","entries","targetElement","activate","parentScrollTop","userScrollsDown","entryIsLowerThanPrevious","targetLinks","listGroup","activeNodes","spy","NAME$1","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","CLASS_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","innerElem","active","hideEvent","relatedElem","nextActiveElement","isActive","outerElem","open","className","NAME","EVENT_KEY","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","DefaultType","Default","Toast","isInteracting","tooltip","$.prop","containerRef","tooltipInstance","parsedTooltip","$.derived","applyStyle","styleConfig","$.get","defaultStyles","tooltipInner","$.user_effect"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,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,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90]}