@event-calendar/build 4.4.1 → 4.4.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-calendar.min.js","sources":["../../../node_modules/svelte/src/internal/shared/utils.js","../../../node_modules/svelte/src/internal/client/constants.js","../../../node_modules/svelte/src/internal/client/reactivity/equality.js","../../../node_modules/svelte/src/internal/client/errors.js","../../../node_modules/svelte/src/internal/flags/index.js","../../../node_modules/svelte/src/constants.js","../../../node_modules/svelte/src/internal/shared/errors.js","../../../node_modules/svelte/src/internal/client/context.js","../../../node_modules/svelte/src/internal/client/proxy.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/dom/hydration.js","../../../node_modules/svelte/src/internal/client/dom/operations.js","../../../node_modules/svelte/src/internal/client/reactivity/effects.js","../../../node_modules/svelte/src/internal/client/dom/task.js","../../../node_modules/svelte/src/internal/client/runtime.js","../../../node_modules/svelte/src/utils.js","../../../node_modules/svelte/src/internal/client/dom/elements/bindings/shared.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/internal/client/render.js","../../../node_modules/svelte/src/internal/client/dom/blocks/if.js","../../../node_modules/svelte/src/internal/client/dom/blocks/each.js","../../../node_modules/svelte/src/internal/client/dom/blocks/snippet.js","../../../node_modules/svelte/src/internal/client/dom/blocks/svelte-component.js","../../../node_modules/svelte/src/internal/client/dom/elements/actions.js","../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/svelte/src/internal/shared/attributes.js","../../../node_modules/svelte/src/internal/client/dom/elements/class.js","../../../node_modules/svelte/src/internal/client/dom/elements/style.js","../../../node_modules/svelte/src/internal/client/dom/elements/attributes.js","../../../node_modules/svelte/src/internal/client/dom/elements/bindings/props.js","../../../node_modules/svelte/src/internal/client/dom/elements/bindings/this.js","../../../node_modules/svelte/src/internal/client/dom/legacy/lifecycle.js","../../../node_modules/svelte/src/store/utils.js","../../../node_modules/svelte/src/store/shared/index.js","../../../node_modules/svelte/src/internal/client/reactivity/store.js","../../../node_modules/svelte/src/internal/client/reactivity/props.js","../../../node_modules/svelte/src/index-client.js","../../../node_modules/svelte/src/version.js","../../../node_modules/svelte/src/internal/disclose-version.js","../../../node_modules/svelte/src/reactivity/utils.js","../../core/src/lib/a11y.js","../../core/src/lib/actions.js","../../core/src/lib/date.js","../../core/src/lib/utils.js","../../core/src/lib/debounce.js","../../core/src/lib/payload.js","../../core/src/lib/dom.js","../../core/src/lib/view.js","../../core/src/lib/events.js","../../core/src/lib/options.js","../../core/src/lib/range.js","../../core/src/lib/resources.js","../../core/src/lib/stores.js","../../core/src/lib/times.js","../../core/src/storage/options.js","../../core/src/storage/stores.js","../../core/src/storage/state.js","../../../node_modules/svelte/src/internal/flags/legacy.js","../../core/src/Buttons.svelte","../../core/src/Toolbar.svelte","../../core/src/Auxiliary.svelte","../../core/src/Calendar.svelte","../../core/src/plugins/day-grid/stores.js","../../core/src/plugins/day-grid/Header.svelte","../../../node_modules/svelte/src/reactivity/set.js","../../core/src/lib/components/BaseEvent.svelte","../../core/src/lib/components/InteractableEvent.svelte","../../core/src/plugins/day-grid/Event.svelte","../../core/src/plugins/day-grid/Popup.svelte","../../core/src/plugins/day-grid/Day.svelte","../../core/src/plugins/day-grid/Week.svelte","../../core/src/plugins/day-grid/Body.svelte","../../core/src/plugins/day-grid/index.js","../../core/src/plugins/interaction/lib/events.js","../../core/src/plugins/interaction/lib/utils.js","../../core/src/plugins/interaction/Action.svelte","../../core/src/plugins/interaction/Pointer.svelte","../../core/src/plugins/interaction/Resizer.svelte","../../core/src/plugins/interaction/Auxiliary.svelte","../../core/src/plugins/interaction/index.js","../../core/src/plugins/list/Event.svelte","../../core/src/plugins/list/Day.svelte","../../core/src/plugins/list/Body.svelte","../../core/src/plugins/list/index.js","../../core/src/plugins/time-grid/stores.js","../../core/src/plugins/time-grid/utils.js","../../core/src/plugins/time-grid/Section.svelte","../../core/src/plugins/time-grid/Body.svelte","../../core/src/plugins/time-grid/Event.svelte","../../core/src/plugins/time-grid/NowIndicator.svelte","../../core/src/plugins/time-grid/Day.svelte","../../core/src/plugins/time-grid/all-day/Event.svelte","../../core/src/plugins/time-grid/all-day/Day.svelte","../../core/src/plugins/time-grid/all-day/Week.svelte","../../core/src/plugins/time-grid/View.svelte","../../core/src/plugins/time-grid/index.js","../../core/src/plugins/resource-time-grid/Label.svelte","../../core/src/plugins/resource-time-grid/View.svelte","../../core/src/plugins/resource-time-grid/index.js","../../core/src/plugins/resource-timeline/stores.js","../../core/src/plugins/resource-timeline/Label.svelte","../../core/src/plugins/resource-timeline/Expander.svelte","../../core/src/plugins/resource-timeline/Sidebar.svelte","../../core/src/plugins/resource-timeline/Header.svelte","../../core/src/plugins/resource-timeline/lib.js","../../core/src/plugins/resource-timeline/Event.svelte","../../core/src/plugins/resource-timeline/Day.svelte","../../core/src/plugins/resource-timeline/Days.svelte","../../core/src/plugins/resource-timeline/Body.svelte","../../core/src/plugins/resource-timeline/NowIndicator.svelte","../../core/src/plugins/resource-timeline/View.svelte","../../core/src/plugins/resource-timeline/index.js","../../core/src/index.es.js","../../core/src/index.iife.js"],"sourcesContent":["// 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","export 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;\nexport const UNOWNED = 1 << 8;\nexport const DISCONNECTED = 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;\nexport const EFFECT_RAN = 1 << 15;\n/** 'Transparent' effects do not create a transition boundary */\nexport const EFFECT_TRANSPARENT = 1 << 16;\n/** Svelte 4 legacy mode props need to be handled with deriveds and be recognized elsewhere, hence the dedicated flag */\nexport const LEGACY_DERIVED_PROP = 1 << 17;\nexport const INSPECT_EFFECT = 1 << 18;\nexport const HEAD_EFFECT = 1 << 19;\nexport const EFFECT_HAS_DERIVED = 1 << 20;\nexport const EFFECT_IS_UPDATING = 1 << 21;\n\nexport const STATE_SYMBOL = Symbol('$state');\nexport const LEGACY_PROPS = Symbol('legacy props');\nexport const LOADING_ATTR_SYMBOL = Symbol('');\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","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\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\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\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\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\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\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\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 ? `Keyed each block has duplicate key \\`${value}\\` at indexes ${a} and ${b}` : `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\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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_orphan`);\n\t}\n}\n\n/**\n * Maximum update depth exceeded. This can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops\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 can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops\\nhttps://svelte.dev/e/effect_update_depth_exceeded`);\n\n\t\terror.name = 'Svelte error';\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 * 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\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\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\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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/rune_outside_svelte`);\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\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\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 a derived 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 a derived 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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_unsafe_mutation`);\n\t}\n}","export let legacy_mode_flag = false;\nexport let tracing_mode_flag = false;\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","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;\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'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","/* 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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/lifecycle_outside_component`);\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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/svelte_element_invalid_this_value`);\n\t}\n}","/** @import { ComponentContext } from '#client' */\n\nimport { DEV } from 'esm-env';\nimport { lifecycle_outside_component } from '../shared/errors.js';\nimport { source } from './reactivity/sources.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from './runtime.js';\nimport { effect, teardown } from './reactivity/effects.js';\nimport { legacy_mode_flag } from '../flags/index.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/**\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 * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\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 * @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\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\tvar ctx = (component_context = {\n\t\tp: component_context,\n\t\tc: null,\n\t\td: false,\n\t\te: null,\n\t\tm: false,\n\t\ts: props,\n\t\tx: null,\n\t\tl: null\n\t});\n\n\tif (legacy_mode_flag && !runes) {\n\t\tcomponent_context.l = {\n\t\t\ts: null,\n\t\t\tu: null,\n\t\t\tr1: [],\n\t\t\tr2: source(false)\n\t\t};\n\t}\n\n\tteardown(() => {\n\t\t/** @type {ComponentContext} */ (ctx).d = true;\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\tconst context_stack_item = component_context;\n\tif (context_stack_item !== null) {\n\t\tif (component !== undefined) {\n\t\t\tcontext_stack_item.x = component;\n\t\t}\n\t\tconst component_effects = context_stack_item.e;\n\t\tif (component_effects !== null) {\n\t\t\tvar previous_effect = active_effect;\n\t\t\tvar previous_reaction = active_reaction;\n\t\t\tcontext_stack_item.e = null;\n\t\t\ttry {\n\t\t\t\tfor (var i = 0; i < component_effects.length; i++) {\n\t\t\t\t\tvar component_effect = component_effects[i];\n\t\t\t\t\tset_active_effect(component_effect.effect);\n\t\t\t\t\tset_active_reaction(component_effect.reaction);\n\t\t\t\t\teffect(component_effect.fn);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tset_active_effect(previous_effect);\n\t\t\t\tset_active_reaction(previous_reaction);\n\t\t\t}\n\t\t}\n\t\tcomponent_context = context_stack_item.p;\n\t\tif (DEV) {\n\t\t\tdev_current_component_function = context_stack_item.p?.function ?? null;\n\t\t}\n\t\tcontext_stack_item.m = true;\n\t}\n\t// Micro-optimization: Don't set .a above to the empty object\n\t// so it can be garbage-collected when the return here is unused\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\tlifecycle_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 { Source } from '#client' */\nimport { DEV } from 'esm-env';\nimport { get, active_effect, active_reaction, set_active_reaction } 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 { state as source, set } from './reactivity/sources.js';\nimport { STATE_SYMBOL } from '#client/constants';\nimport { UNINITIALIZED } from '../../constants.js';\nimport * as e from './errors.js';\nimport { get_stack } from './dev/tracing.js';\nimport { tracing_mode_flag } from '../flags/index.js';\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('CreatedAt') : null;\n\tvar reaction = active_reaction;\n\n\t/**\n\t * @template T\n\t * @param {() => T} fn\n\t */\n\tvar with_parent = (fn) => {\n\t\tvar previous_reaction = active_reaction;\n\t\tset_active_reaction(reaction);\n\n\t\t/** @type {T} */\n\t\tvar result = fn();\n\n\t\tset_active_reaction(previous_reaction);\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}\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\n\t\t\tvar s = sources.get(prop);\n\n\t\t\tif (s === undefined) {\n\t\t\t\ts = with_parent(() => source(descriptor.value, stack));\n\t\t\t\tsources.set(prop, s);\n\t\t\t} else {\n\t\t\t\tset(\n\t\t\t\t\ts,\n\t\t\t\t\twith_parent(() => proxy(descriptor.value))\n\t\t\t\t);\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\tsources.set(\n\t\t\t\t\t\tprop,\n\t\t\t\t\t\twith_parent(() => source(UNINITIALIZED, stack))\n\t\t\t\t\t);\n\t\t\t\t\tupdate_version(version);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// When working with arrays, we need to also ensure we update the length when removing\n\t\t\t\t// an indexed property\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);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tset(s, UNINITIALIZED);\n\t\t\t\tupdate_version(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\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(() => source(proxy(exists ? target[prop] : UNINITIALIZED), stack));\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(() => source(has ? proxy(target[prop]) : UNINITIALIZED, stack));\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 a 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\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\t\t\t\t\tset(\n\t\t\t\t\t\ts,\n\t\t\t\t\t\twith_parent(() => proxy(value))\n\t\t\t\t\t);\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\t\t\t\tset(\n\t\t\t\t\ts,\n\t\t\t\t\twith_parent(() => proxy(value))\n\t\t\t\t);\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\tupdate_version(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 {Source<number>} signal\n * @param {1 | -1} [d]\n */\nfunction update_version(signal, d = 1) {\n\tset(signal, signal.v + d);\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","/** @import { Derived, Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { CLEAN, DERIVED, DIRTY, EFFECT_HAS_DERIVED, MAYBE_DIRTY, UNOWNED } from '#client/constants';\nimport {\n\tactive_reaction,\n\tactive_effect,\n\tset_signal_status,\n\tskip_reaction,\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 { destroy_effect } from './effects.js';\nimport { inspect_effects, set_inspect_effects } from './sources.js';\nimport { get_stack } from '../dev/tracing.js';\nimport { tracing_mode_flag } from '../../flags/index.js';\nimport { component_context } from '../context.js';\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 || (parent_derived !== null && (parent_derived.f & UNOWNED) !== 0)) {\n\t\tflags |= UNOWNED;\n\t} else {\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_HAS_DERIVED;\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} */ (null),\n\t\twv: 0,\n\t\tparent: parent_derived ?? active_effect\n\t};\n\n\tif (DEV && tracing_mode_flag) {\n\t\tsignal.created = get_stack('CreatedAt');\n\t}\n\n\treturn signal;\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\tpush_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\treturn /** @type {Effect} */ (parent);\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_inspect_effects = inspect_effects;\n\t\tset_inspect_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\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_inspect_effects(prev_inspect_effects);\n\t\t\tstack.pop();\n\t\t}\n\t} else {\n\t\ttry {\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\tderived.v = value;\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) return;\n\n\tvar status =\n\t\t(skip_reaction || (derived.f & UNOWNED) !== 0) && derived.deps !== null ? MAYBE_DIRTY : CLEAN;\n\n\tset_signal_status(derived, status);\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\tschedule_effect,\n\tset_untracked_writes,\n\tset_signal_status,\n\tuntrack,\n\tincrement_write_version,\n\tupdate_effect,\n\treaction_sources,\n\tcheck_dirtiness,\n\tuntracking,\n\tis_destroying_effect,\n\tpush_reaction_value\n} from '../runtime.js';\nimport { equals, safe_equals } from './equality.js';\nimport {\n\tCLEAN,\n\tDERIVED,\n\tDIRTY,\n\tBRANCH_EFFECT,\n\tINSPECT_EFFECT,\n\tUNOWNED,\n\tMAYBE_DIRTY,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT\n} from '#client/constants';\nimport * as e from '../errors.js';\nimport { legacy_mode_flag, tracing_mode_flag } from '../../flags/index.js';\nimport { get_stack } from '../dev/tracing.js';\nimport { component_context, is_runes } from '../context.js';\nimport { proxy } from '../proxy.js';\nimport { execute_derived } from './deriveds.js';\n\nexport let inspect_effects = new Set();\nexport const old_values = new Map();\n\n/**\n * @param {Set<any>} v\n */\nexport function set_inspect_effects(v) {\n\tinspect_effects = v;\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('CreatedAt');\n\t\tsignal.debug = 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) {\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 && 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!untracking &&\n\t\tis_runes() &&\n\t\t(active_reaction.f & (DERIVED | BLOCK_EFFECT)) !== 0 &&\n\t\t!reaction_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\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\tif (DEV && tracing_mode_flag) {\n\t\t\tsource.updated = get_stack('UpdatedAt');\n\t\t\tif (active_effect != null) {\n\t\t\t\tsource.trace_need_increase = true;\n\t\t\t\tsource.trace_v ??= old_value;\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\t\t\tset_signal_status(source, (source.f & UNOWNED) === 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 (DEV && inspect_effects.size > 0) {\n\t\t\tconst inspects = Array.from(inspect_effects);\n\n\t\t\tfor (const effect of inspects) {\n\t\t\t\t// Mark clean inspect-effects as maybe dirty and then check their dirtiness\n\t\t\t\t// instead of just updating the effects - this way we avoid overfiring.\n\t\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t\t}\n\t\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\t\tupdate_effect(effect);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinspect_effects.clear();\n\t\t}\n\t}\n\n\treturn value;\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 * @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// Skip any effects that are already dirty\n\t\tif ((flags & DIRTY) !== 0) continue;\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 & INSPECT_EFFECT) !== 0) {\n\t\t\tinspect_effects.add(reaction);\n\t\t\tcontinue;\n\t\t}\n\n\t\tset_signal_status(reaction, status);\n\n\t\t// If the signal a) was previously clean or b) is an unowned derived, then mark it\n\t\tif ((flags & (CLEAN | UNOWNED)) !== 0) {\n\t\t\tif ((flags & DERIVED) !== 0) {\n\t\t\t\tmark_reactions(/** @type {Derived} */ (reaction), MAYBE_DIRTY);\n\t\t\t} else {\n\t\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t\t}\n\t\t}\n\t}\n}\n","/** @import { TemplateNode } from '#client' */\n\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 * Removes all nodes starting at `hydrate_node` up until the next hydration end comment\n */\nexport function remove_nodes() {\n\tvar depth = 0;\n\tvar node = hydrate_node;\n\n\twhile (true) {\n\t\tif (node.nodeType === 8) {\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\tnode.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 !== 8) {\n\t\tw.hydration_mismatch();\n\t\tthrow HYDRATION_ERROR;\n\t}\n\n\treturn /** @type {Comment} */ (node).data;\n}\n","/** @import { 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';\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 !== 3) {\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[]} fragment\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function first_child(fragment, is_text) {\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 !== 3) {\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\tvar type = next_sibling?.nodeType;\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 && type !== 3) {\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 *\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 { ComponentContext, ComponentContextLegacy, Derived, Effect, TemplateNode, TransitionManager } from '#client' */\nimport {\n\tcheck_dirtiness,\n\tactive_effect,\n\tactive_reaction,\n\tupdate_effect,\n\tget,\n\tis_destroying_effect,\n\tremove_reactions,\n\tschedule_effect,\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\tUNOWNED,\n\tCLEAN,\n\tINSPECT_EFFECT,\n\tHEAD_EFFECT,\n\tMAYBE_DIRTY,\n\tEFFECT_HAS_DERIVED,\n\tBOUNDARY_EFFECT\n} from '#client/constants';\nimport { set } from './sources.js';\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 { derived } from './deriveds.js';\nimport { component_context, dev_current_component_function } from '../context.js';\n\n/**\n * @param {'$effect' | '$effect.pre' | '$inspect'} rune\n */\nexport function validate_effect(rune) {\n\tif (active_effect === null && active_reaction === null) {\n\t\te.effect_orphan(rune);\n\t}\n\n\tif (active_reaction !== null && (active_reaction.f & UNOWNED) !== 0 && active_effect === null) {\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 * @param {boolean} push\n * @returns {Effect}\n */\nfunction create_effect(type, fn, sync, push = true) {\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 & INSPECT_EFFECT) !== 0) {\n\t\t\tparent = parent.parent;\n\t\t}\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,\n\t\tfirst: null,\n\t\tfn,\n\t\tlast: null,\n\t\tnext: null,\n\t\tparent,\n\t\tprev: null,\n\t\tteardown: null,\n\t\ttransitions: null,\n\t\twv: 0\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// if an effect has no dependencies, no DOM and no teardown function,\n\t// don't bother adding it to the effect tree\n\tvar inert =\n\t\tsync &&\n\t\teffect.deps === null &&\n\t\teffect.first === null &&\n\t\teffect.nodes_start === null &&\n\t\teffect.teardown === null &&\n\t\t(effect.f & (EFFECT_HAS_DERIVED | BOUNDARY_EFFECT)) === 0;\n\n\tif (!inert && push) {\n\t\tif (parent !== null) {\n\t\t\tpush_effect(effect, parent);\n\t\t}\n\n\t\t// if we're in a derived, add the effect there too\n\t\tif (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) {\n\t\t\tvar derived = /** @type {Derived} */ (active_reaction);\n\t\t\t(derived.effects ??= []).push(effect);\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\t// Non-nested `$effect(...)` in a component should be deferred\n\t// until the component is mounted\n\tvar defer =\n\t\tactive_effect !== null &&\n\t\t(active_effect.f & BRANCH_EFFECT) !== 0 &&\n\t\tcomponent_context !== null &&\n\t\t!component_context.m;\n\n\tif (DEV) {\n\t\tdefine_property(fn, 'name', {\n\t\t\tvalue: '$effect'\n\t\t});\n\t}\n\n\tif (defer) {\n\t\tvar context = /** @type {ComponentContext} */ (component_context);\n\t\t(context.e ??= []).push({\n\t\t\tfn,\n\t\t\teffect: active_effect,\n\t\t\treaction: active_reaction\n\t\t});\n\t} else {\n\t\tvar signal = effect(fn);\n\t\treturn signal;\n\t}\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 render_effect(fn);\n}\n\n/** @param {() => void | (() => void)} fn */\nexport function inspect_effect(fn) {\n\treturn create_effect(INSPECT_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\tconst effect = create_effect(ROOT_EFFECT, 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\tconst effect = create_effect(ROOT_EFFECT, 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 }} */\n\tvar token = { effect: null, ran: false };\n\tcontext.l.r1.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\tset(context.l.r2, 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\tif (!get(context.l.r2)) return;\n\n\t\t// Run dirty `$:` statements\n\t\tfor (var token of context.l.r1) {\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 (check_dirtiness(effect)) {\n\t\t\t\tupdate_effect(effect);\n\t\t\t}\n\n\t\t\ttoken.ran = false;\n\t\t}\n\n\t\tcontext.l.r2.v = false; // set directly to avoid rerunning this effect\n\t});\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function render_effect(fn) {\n\treturn create_effect(RENDER_EFFECT, fn, true);\n}\n\n/**\n * @param {(...expressions: any) => void | (() => void)} fn\n * @param {Array<() => any>} thunks\n * @returns {Effect}\n */\nexport function template_effect(fn, thunks = [], d = derived) {\n\tconst deriveds = thunks.map(d);\n\tconst effect = () => fn(...deriveds.map(get));\n\n\tif (DEV) {\n\t\tdefine_property(effect, 'name', {\n\t\t\tvalue: '{expression}'\n\t\t});\n\t}\n\n\treturn block(effect);\n}\n\n/**\n * @param {(() => void)} fn\n * @param {number} flags\n */\nexport function block(fn, flags = 0) {\n\treturn create_effect(RENDER_EFFECT | BLOCK_EFFECT | flags, fn, true);\n}\n\n/**\n * @param {(() => void)} fn\n * @param {boolean} [push]\n */\nexport function branch(fn, push = true) {\n\treturn create_effect(RENDER_EFFECT | BRANCH_EFFECT, fn, true, push);\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\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 ((remove_dom || (effect.f & HEAD_EFFECT) !== 0) && effect.nodes_start !== null) {\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\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 */\nexport function pause_effect(effect, callback) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\n\tpause_children(effect, transitions, true);\n\n\trun_out_transitions(transitions, () => {\n\t\tdestroy_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 = (child.f & EFFECT_TRANSPARENT) !== 0 || (child.f & BRANCH_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// Ensure the effect is marked as clean again so that any dirty child\n\t// effects can schedule themselves for execution\n\tif ((effect.f & CLEAN) === 0) {\n\t\teffect.f ^= CLEAN;\n\t}\n\n\t// If a dependency of this effect changed while it was paused,\n\t// schedule the effect to update\n\tif (check_dirtiness(effect)) {\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","import { run_all } from '../../shared/utils.js';\n\n// Fallback for when requestIdleCallback is not available\nconst request_idle_callback =\n\ttypeof requestIdleCallback === 'undefined'\n\t\t? (/** @type {() => void} */ cb) => setTimeout(cb, 1)\n\t\t: requestIdleCallback;\n\n/** @type {Array<() => void>} */\nlet micro_tasks = [];\n\n/** @type {Array<() => void>} */\nlet idle_tasks = [];\n\nfunction run_micro_tasks() {\n\tvar tasks = micro_tasks;\n\tmicro_tasks = [];\n\trun_all(tasks);\n}\n\nfunction run_idle_tasks() {\n\tvar tasks = idle_tasks;\n\tidle_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) {\n\t\tqueueMicrotask(run_micro_tasks);\n\t}\n\n\tmicro_tasks.push(fn);\n}\n\n/**\n * @param {() => void} fn\n */\nexport function queue_idle_task(fn) {\n\tif (idle_tasks.length === 0) {\n\t\trequest_idle_callback(run_idle_tasks);\n\t}\n\n\tidle_tasks.push(fn);\n}\n\n/**\n * Synchronously run any queued tasks.\n */\nexport function flush_tasks() {\n\tif (micro_tasks.length > 0) {\n\t\trun_micro_tasks();\n\t}\n\n\tif (idle_tasks.length > 0) {\n\t\trun_idle_tasks();\n\t}\n}\n","/** @import { ComponentContext, Derived, Effect, Reaction, Signal, Source, Value } from '#client' */\nimport { DEV } from 'esm-env';\nimport { define_property, get_descriptors, get_prototype_of, index_of } from '../shared/utils.js';\nimport {\n\tdestroy_block_effect_children,\n\tdestroy_effect_children,\n\texecute_effect_teardown,\n\tunlink_effect\n} from './reactivity/effects.js';\nimport {\n\tEFFECT,\n\tDIRTY,\n\tMAYBE_DIRTY,\n\tCLEAN,\n\tDERIVED,\n\tUNOWNED,\n\tDESTROYED,\n\tINERT,\n\tBRANCH_EFFECT,\n\tSTATE_SYMBOL,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tLEGACY_DERIVED_PROP,\n\tDISCONNECTED,\n\tBOUNDARY_EFFECT,\n\tEFFECT_IS_UPDATING\n} from './constants.js';\nimport { flush_tasks } from './dom/task.js';\nimport { internal_set, old_values } from './reactivity/sources.js';\nimport { destroy_derived_effects, update_derived } from './reactivity/deriveds.js';\nimport * as e from './errors.js';\nimport { FILENAME } from '../../constants.js';\nimport { 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\tis_runes,\n\tset_component_context,\n\tset_dev_current_component_function\n} from './context.js';\nimport { is_firefox } from './dom/operations.js';\n\n// Used for DEV time error handling\n/** @param {WeakSet<Error>} value */\nconst handled_errors = new WeakSet();\nlet is_throwing_error = false;\n\nlet is_flushing = false;\n\n/** @type {Effect | null} */\nlet last_scheduled_effect = null;\n\nlet is_updating_effect = false;\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// Handle effect queues\n\n/** @type {Effect[]} */\nlet queued_root_effects = [];\n\n/** @type {Effect[]} Stack of effects, dev only */\nlet dev_effect_stack = [];\n// Handle signal reactivity tree dependencies and reactions\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 should not cause a re-run\n * @type {null | Source[]}\n */\nexport let reaction_sources = null;\n\n/** @param {Value} value */\nexport function push_reaction_value(value) {\n\tif (active_reaction !== null && active_reaction.f & EFFECT_IS_UPDATING) {\n\t\tif (reaction_sources === null) {\n\t\t\treaction_sources = [value];\n\t\t} else {\n\t\t\treaction_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 **/\nlet 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\n// If we are working with a get() chain that has no active container,\n// to prevent memory leaks, we skip adding the reaction.\nexport let skip_reaction = false;\n// Handle collecting all signals which are read during a specific time frame\n/** @type {Set<Value> | null} */\nexport let captured_signals = null;\n\n/** @param {Set<Value> | null} value */\nexport function set_captured_signals(value) {\n\tcaptured_signals = 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 check_dirtiness(reaction) {\n\tvar flags = reaction.f;\n\n\tif ((flags & DIRTY) !== 0) {\n\t\treturn true;\n\t}\n\n\tif ((flags & MAYBE_DIRTY) !== 0) {\n\t\tvar dependencies = reaction.deps;\n\t\tvar is_unowned = (flags & UNOWNED) !== 0;\n\n\t\tif (dependencies !== null) {\n\t\t\tvar i;\n\t\t\tvar dependency;\n\t\t\tvar is_disconnected = (flags & DISCONNECTED) !== 0;\n\t\t\tvar is_unowned_connected = is_unowned && active_effect !== null && !skip_reaction;\n\t\t\tvar length = dependencies.length;\n\n\t\t\t// If we are working with a disconnected or an unowned signal that is now connected (due to an active effect)\n\t\t\t// then we need to re-connect the reaction to the dependency\n\t\t\tif (is_disconnected || is_unowned_connected) {\n\t\t\t\tvar derived = /** @type {Derived} */ (reaction);\n\t\t\t\tvar parent = derived.parent;\n\n\t\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\t\tdependency = dependencies[i];\n\n\t\t\t\t\t// We always re-add all reactions (even duplicates) if the derived was\n\t\t\t\t\t// previously disconnected, however we don't if it was unowned as we\n\t\t\t\t\t// de-duplicate dependencies in that case\n\t\t\t\t\tif (is_disconnected || !dependency?.reactions?.includes(derived)) {\n\t\t\t\t\t\t(dependency.reactions ??= []).push(derived);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (is_disconnected) {\n\t\t\t\t\tderived.f ^= DISCONNECTED;\n\t\t\t\t}\n\t\t\t\t// If the unowned derived is now fully connected to the graph again (it's unowned and reconnected, has a parent\n\t\t\t\t// and the parent is not unowned), then we can mark it as connected again, removing the need for the unowned\n\t\t\t\t// flag\n\t\t\t\tif (is_unowned_connected && parent !== null && (parent.f & UNOWNED) === 0) {\n\t\t\t\t\tderived.f ^= UNOWNED;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tdependency = dependencies[i];\n\n\t\t\t\tif (check_dirtiness(/** @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\t// Unowned signals should never be marked as clean unless they\n\t\t// are used within an active_effect without skip_reaction\n\t\tif (!is_unowned || (active_effect !== null && !skip_reaction)) {\n\t\t\tset_signal_status(reaction, CLEAN);\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @param {unknown} error\n * @param {Effect} effect\n */\nfunction propagate_error(error, effect) {\n\t/** @type {Effect | null} */\n\tvar current = effect;\n\n\twhile (current !== null) {\n\t\tif ((current.f & BOUNDARY_EFFECT) !== 0) {\n\t\t\ttry {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tcurrent.fn(error);\n\t\t\t\treturn;\n\t\t\t} catch {\n\t\t\t\t// Remove boundary flag from effect\n\t\t\t\tcurrent.f ^= BOUNDARY_EFFECT;\n\t\t\t}\n\t\t}\n\n\t\tcurrent = current.parent;\n\t}\n\n\tis_throwing_error = false;\n\tthrow error;\n}\n\n/**\n * @param {Effect} effect\n */\nfunction should_rethrow_error(effect) {\n\treturn (\n\t\t(effect.f & DESTROYED) === 0 &&\n\t\t(effect.parent === null || (effect.parent.f & BOUNDARY_EFFECT) === 0)\n\t);\n}\n\nexport function reset_is_throwing_error() {\n\tis_throwing_error = false;\n}\n\n/**\n * @param {unknown} error\n * @param {Effect} effect\n * @param {Effect | null} previous_effect\n * @param {ComponentContext | null} component_context\n */\nexport function handle_error(error, effect, previous_effect, component_context) {\n\tif (is_throwing_error) {\n\t\tif (previous_effect === null) {\n\t\t\tis_throwing_error = false;\n\t\t}\n\n\t\tif (should_rethrow_error(effect)) {\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn;\n\t}\n\n\tif (previous_effect !== null) {\n\t\tis_throwing_error = true;\n\t}\n\n\tif (DEV && component_context !== null && error instanceof Error && !handled_errors.has(error)) {\n\t\thandled_errors.add(error);\n\n\t\tconst component_stack = [];\n\n\t\tconst effect_name = effect.fn?.name;\n\n\t\tif (effect_name) {\n\t\t\tcomponent_stack.push(effect_name);\n\t\t}\n\n\t\t/** @type {ComponentContext | null} */\n\t\tlet current_context = component_context;\n\n\t\twhile (current_context !== null) {\n\t\t\t/** @type {string} */\n\t\t\tvar filename = current_context.function?.[FILENAME];\n\n\t\t\tif (filename) {\n\t\t\t\tconst file = filename.split('/').pop();\n\t\t\t\tcomponent_stack.push(file);\n\t\t\t}\n\n\t\t\tcurrent_context = current_context.p;\n\t\t}\n\n\t\tconst indent = is_firefox ? ' ' : '\\t';\n\t\tdefine_property(error, 'message', {\n\t\t\tvalue:\n\t\t\t\terror.message + `\\n${component_stack.map((name) => `\\n${indent}in ${name}`).join('')}\\n`\n\t\t});\n\t\tdefine_property(error, 'component_stack', {\n\t\t\tvalue: component_stack\n\t\t});\n\n\t\tconst stack = error.stack;\n\n\t\t// Filter out internal files from callstack\n\t\tif (stack) {\n\t\t\tconst lines = stack.split('\\n');\n\t\t\tconst new_lines = [];\n\t\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\t\tconst line = lines[i];\n\t\t\t\tif (line.includes('svelte/src/internal')) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tnew_lines.push(line);\n\t\t\t}\n\t\t\tdefine_property(error, 'stack', {\n\t\t\t\tvalue: new_lines.join('\\n')\n\t\t\t});\n\t\t}\n\t}\n\n\tpropagate_error(error, effect);\n\n\tif (should_rethrow_error(effect)) {\n\t\tthrow error;\n\t}\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\tfor (var i = 0; i < reactions.length; i++) {\n\t\tvar reaction = reactions[i];\n\n\t\tif (reaction_sources?.includes(signal)) continue;\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/**\n * @template V\n * @param {Reaction} reaction\n * @returns {V}\n */\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_skip_reaction = skip_reaction;\n\tvar previous_reaction_sources = reaction_sources;\n\tvar previous_component_context = component_context;\n\tvar previous_untracking = untracking;\n\n\tvar flags = reaction.f;\n\n\tnew_deps = /** @type {null | Value[]} */ (null);\n\tskipped_deps = 0;\n\tuntracked_writes = null;\n\tskip_reaction =\n\t\t(flags & UNOWNED) !== 0 && (untracking || !is_updating_effect || active_reaction === null);\n\tactive_reaction = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;\n\n\treaction_sources = null;\n\tset_component_context(reaction.ctx);\n\tuntracking = false;\n\tread_version++;\n\n\treaction.f |= EFFECT_IS_UPDATING;\n\n\ttry {\n\t\tvar result = /** @type {Function} */ (0, reaction.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 (!skip_reaction) {\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\treturn result;\n\t} finally {\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\tskip_reaction = previous_skip_reaction;\n\t\treaction_sources = previous_reaction_sources;\n\t\tset_component_context(previous_component_context);\n\t\tuntracking = previous_untracking;\n\n\t\treaction.f ^= EFFECT_IS_UPDATING;\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\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.\n\t\tif ((dependency.f & (UNOWNED | DISCONNECTED)) === 0) {\n\t\t\tdependency.f ^= DISCONNECTED;\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 previous_component_context = component_context;\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}\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\tvar deps = effect.deps;\n\n\t\t// In DEV, we need to handle a case where $inspect.trace() might\n\t\t// incorrectly state a source dependency has not changed when it has.\n\t\t// That's beacuse that source was changed by the same effect, causing\n\t\t// the versions to match. We can avoid this by incrementing the version\n\t\tif (DEV && tracing_mode_flag && (effect.f & DIRTY) !== 0 && deps !== null) {\n\t\t\tfor (let i = 0; i < deps.length; i++) {\n\t\t\t\tvar dep = deps[i];\n\t\t\t\tif (dep.trace_need_increase) {\n\t\t\t\t\tdep.wv = increment_write_version();\n\t\t\t\t\tdep.trace_need_increase = undefined;\n\t\t\t\t\tdep.trace_v = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (DEV) {\n\t\t\tdev_effect_stack.push(effect);\n\t\t}\n\t} catch (error) {\n\t\thandle_error(error, effect, previous_effect, previous_component_context || effect.ctx);\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}\n\t}\n}\n\nfunction log_effect_stack() {\n\t// eslint-disable-next-line no-console\n\tconsole.error(\n\t\t'Last ten effects were: ',\n\t\tdev_effect_stack.slice(-10).map((d) => d.fn)\n\t);\n\tdev_effect_stack = [];\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 is garbage, ignore. Instead add a console.error message.\n\t\t\tdefine_property(error, 'stack', {\n\t\t\t\tvalue: ''\n\t\t\t});\n\t\t}\n\t\t// Try and handle the error so it can be caught at a boundary, that's\n\t\t// if there's an effect available from when it was last scheduled\n\t\tif (last_scheduled_effect !== null) {\n\t\t\tif (DEV) {\n\t\t\t\ttry {\n\t\t\t\t\thandle_error(error, last_scheduled_effect, null, null);\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Only log the effect stack if the error is re-thrown\n\t\t\t\t\tlog_effect_stack();\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thandle_error(error, last_scheduled_effect, null, null);\n\t\t\t}\n\t\t} else {\n\t\t\tif (DEV) {\n\t\t\t\tlog_effect_stack();\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\nfunction flush_queued_root_effects() {\n\tvar was_updating_effect = is_updating_effect;\n\n\ttry {\n\t\tvar flush_count = 0;\n\t\tis_updating_effect = true;\n\n\t\twhile (queued_root_effects.length > 0) {\n\t\t\tif (flush_count++ > 1000) {\n\t\t\t\tinfinite_loop_guard();\n\t\t\t}\n\n\t\t\tvar root_effects = queued_root_effects;\n\t\t\tvar length = root_effects.length;\n\n\t\t\tqueued_root_effects = [];\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tvar collected_effects = process_effects(root_effects[i]);\n\t\t\t\tflush_queued_effects(collected_effects);\n\t\t\t}\n\t\t\told_values.clear();\n\t\t}\n\t} finally {\n\t\tis_flushing = false;\n\t\tis_updating_effect = was_updating_effect;\n\n\t\tlast_scheduled_effect = null;\n\t\tif (DEV) {\n\t\t\tdev_effect_stack = [];\n\t\t}\n\t}\n}\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\tfor (var i = 0; i < length; i++) {\n\t\tvar effect = effects[i];\n\n\t\tif ((effect.f & (DESTROYED | INERT)) === 0) {\n\t\t\ttry {\n\t\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\t\tupdate_effect(effect);\n\n\t\t\t\t\t// Effects with no dependencies or teardown do not get added to the effect tree.\n\t\t\t\t\t// Deferred effects (e.g. `$effect(...)`) _are_ added to the tree because we\n\t\t\t\t\t// don't know if we need to keep them until they are executed. Doing the check\n\t\t\t\t\t// here (rather than in `update_effect`) allows us to skip the work for\n\t\t\t\t\t// immediate effects.\n\t\t\t\t\tif (effect.deps === null && effect.first === null && effect.nodes_start === null) {\n\t\t\t\t\t\tif (effect.teardown === null) {\n\t\t\t\t\t\t\t// remove this effect from the graph\n\t\t\t\t\t\t\tunlink_effect(effect);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// keep the effect in the graph, but free up some memory\n\t\t\t\t\t\t\teffect.fn = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\thandle_error(error, effect, null, effect.ctx);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @returns {void}\n */\nexport function schedule_effect(signal) {\n\tif (!is_flushing) {\n\t\tis_flushing = true;\n\t\tqueueMicrotask(flush_queued_root_effects);\n\t}\n\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\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/**\n *\n * This function both runs render effects and collects user effects in topological order\n * from the starting effect passed in. Effects will be collected when they match the filtered\n * bitwise flag passed in only. The collected effects array will be populated with all the user\n * effects to be flushed.\n *\n * @param {Effect} root\n * @returns {Effect[]}\n */\nfunction process_effects(root) {\n\t/** @type {Effect[]} */\n\tvar effects = [];\n\n\t/** @type {Effect | null} */\n\tvar effect = root;\n\n\twhile (effect !== null) {\n\t\tvar flags = effect.f;\n\t\tvar is_branch = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0;\n\t\tvar is_skippable_branch = is_branch && (flags & CLEAN) !== 0;\n\n\t\tif (!is_skippable_branch && (flags & INERT) === 0) {\n\t\t\tif ((flags & EFFECT) !== 0) {\n\t\t\t\teffects.push(effect);\n\t\t\t} else if (is_branch) {\n\t\t\t\teffect.f ^= CLEAN;\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\t\t\tupdate_effect(effect);\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\thandle_error(error, effect, null, effect.ctx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** @type {Effect | null} */\n\t\t\tvar child = effect.first;\n\n\t\t\tif (child !== null) {\n\t\t\t\teffect = child;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tvar parent = effect.parent;\n\t\teffect = effect.next;\n\n\t\twhile (effect === null && parent !== null) {\n\t\t\teffect = parent.next;\n\t\t\tparent = parent.parent;\n\t\t}\n\t}\n\n\treturn effects;\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\tvar result;\n\n\tif (fn) {\n\t\tis_flushing = true;\n\t\tflush_queued_root_effects();\n\n\t\tis_flushing = true;\n\t\tresult = fn();\n\t}\n\n\twhile (true) {\n\t\tflush_tasks();\n\n\t\tif (queued_root_effects.length === 0) {\n\t\t\treturn /** @type {T} */ (result);\n\t\t}\n\n\t\tis_flushing = true;\n\t\tflush_queued_root_effects();\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\tawait Promise.resolve();\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 * @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\tif (captured_signals !== null) {\n\t\tcaptured_signals.add(signal);\n\t}\n\n\t// Register the dependency on the current reaction signal.\n\tif (active_reaction !== null && !untracking) {\n\t\tif (!reaction_sources?.includes(signal)) {\n\t\t\tvar deps = active_reaction.deps;\n\t\t\tif (signal.rv < read_version) {\n\t\t\t\tsignal.rv = read_version;\n\t\t\t\t// If the signal is accessing the same dependencies in the same\n\t\t\t\t// order as it did last time, increment `skipped_deps`\n\t\t\t\t// rather than updating `new_deps`, which creates GC cost\n\t\t\t\tif (new_deps === null && deps !== null && deps[skipped_deps] === signal) {\n\t\t\t\t\tskipped_deps++;\n\t\t\t\t} else if (new_deps === null) {\n\t\t\t\t\tnew_deps = [signal];\n\t\t\t\t} else if (!skip_reaction || !new_deps.includes(signal)) {\n\t\t\t\t\t// Normally we can push duplicated dependencies to `new_deps`, but if we're inside\n\t\t\t\t\t// an unowned derived because skip_reaction is true, then we need to ensure that\n\t\t\t\t\t// we don't have duplicates\n\t\t\t\t\tnew_deps.push(signal);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tis_derived &&\n\t\t/** @type {Derived} */ (signal).deps === null &&\n\t\t/** @type {Derived} */ (signal).effects === null\n\t) {\n\t\tvar derived = /** @type {Derived} */ (signal);\n\t\tvar parent = derived.parent;\n\n\t\tif (parent !== null && (parent.f & UNOWNED) === 0) {\n\t\t\t// If the derived is owned by another derived then mark it as unowned\n\t\t\t// as the derived value might have been referenced in a different context\n\t\t\t// since and thus its parent might not be its true owner anymore\n\t\t\tderived.f ^= UNOWNED;\n\t\t}\n\t}\n\n\tif (is_derived) {\n\t\tderived = /** @type {Derived} */ (signal);\n\n\t\tif (check_dirtiness(derived)) {\n\t\t\tupdate_derived(derived);\n\t\t}\n\t}\n\n\tif (\n\t\tDEV &&\n\t\ttracing_mode_flag &&\n\t\ttracing_expressions !== null &&\n\t\tactive_reaction !== null &&\n\t\ttracing_expressions.reaction === active_reaction\n\t) {\n\t\t// Used when mapping state between special blocks like `each`\n\t\tif (signal.debug) {\n\t\t\tsignal.debug();\n\t\t} else if (signal.created) {\n\t\t\tvar entry = tracing_expressions.entries.get(signal);\n\n\t\t\tif (entry === undefined) {\n\t\t\t\tentry = { read: [] };\n\t\t\t\ttracing_expressions.entries.set(signal, entry);\n\t\t\t}\n\n\t\t\tentry.read.push(get_stack('TracedAt'));\n\t\t}\n\t}\n\n\tif (is_destroying_effect && old_values.has(signal)) {\n\t\treturn old_values.get(signal);\n\t}\n\n\treturn signal.v;\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 * Capture an array of all the signals that are read when `fn` is called\n * @template T\n * @param {() => T} fn\n */\nfunction capture_signals(fn) {\n\tvar previous_captured_signals = captured_signals;\n\tcaptured_signals = new Set();\n\n\tvar captured = captured_signals;\n\tvar signal;\n\n\ttry {\n\t\tuntrack(fn);\n\t\tif (previous_captured_signals !== null) {\n\t\t\tfor (signal of captured_signals) {\n\t\t\t\tprevious_captured_signals.add(signal);\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tcaptured_signals = previous_captured_signals;\n\t}\n\n\treturn captured;\n}\n\n/**\n * Invokes a function and captures all signals that are read during the invocation,\n * then invalidates them.\n * @param {() => any} fn\n */\nexport function invalidate_inner_signals(fn) {\n\tvar captured = capture_signals(() => untrack(fn));\n\n\tfor (var signal of captured) {\n\t\t// Go one level up because derived signals created as part of props in legacy mode\n\t\tif ((signal.f & LEGACY_DERIVED_PROP) !== 0) {\n\t\t\tfor (const dep of /** @type {Derived} */ (signal).deps || []) {\n\t\t\t\tif ((dep.f & DERIVED) === 0) {\n\t\t\t\t\t// Use internal_set instead of set here and below to avoid mutation validation\n\t\t\t\t\tinternal_set(dep, dep.v);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tinternal_set(signal, signal.v);\n\t\t}\n\t}\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, unknown>} obj\n * @param {string[]} keys\n * @returns {Record<string, unknown>}\n */\nexport function exclude_from_object(obj, keys) {\n\t/** @type {Record<string, 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\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","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 is_delegated(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'hidden',\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\nexport const 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.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'$inspect',\n\t'$inspect().with',\n\t'$inspect.trace',\n\t'$host'\n]);\n\n/** @typedef {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 {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 {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 { 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 { teardown } from '../../reactivity/effects.js';\nimport { define_property, is_array } 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/**\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\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// @ts-expect-error is added below\n\tvar handled_at = 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\tif (is_array(delegated)) {\n\t\t\t\t\t\tvar [fn, ...data] = delegated;\n\t\t\t\t\t\tfn.apply(current_target, [event, ...data]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelegated.call(current_target, event);\n\t\t\t\t\t}\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';\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 {NAMESPACE_SVG | 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 === 11;\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 !== 3) {\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\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\t/** @type {Effect} */ (active_effect).nodes_end = hydrate_node;\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 === 8 &&\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","/** @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, branch } from './reactivity/effects.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tset_hydrate_node,\n\tset_hydrating\n} 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 { reset_head_anchor } from './dom/blocks/svelte-head.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';\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 !== 8 || /** @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\t\thydrate_next();\n\n\t\tconst instance = _mount(component, { ...options, anchor });\n\n\t\tif (\n\t\t\thydrate_node === null ||\n\t\t\thydrate_node.nodeType !== 8 ||\n\t\t\t/** @type {Comment} */ (hydrate_node).data !== HYDRATION_END\n\t\t) {\n\t\t\tw.hydration_mismatch();\n\t\t\tthrow HYDRATION_ERROR;\n\t\t}\n\n\t\tset_hydrating(false);\n\n\t\treturn /** @type {Exports} */ (instance);\n\t} catch (error) {\n\t\tif (error === HYDRATION_ERROR) {\n\t\t\tif (options.recover === false) {\n\t\t\t\te.hydration_failed();\n\t\t\t}\n\n\t\t\t// If an error occured above, the operations might not yet have been initialised.\n\t\t\tinit_operations();\n\t\t\tclear_text_content(target);\n\n\t\t\tset_hydrating(false);\n\t\t\treturn mount(component, options);\n\t\t}\n\n\t\tthrow error;\n\t} finally {\n\t\tset_hydrating(was_hydrating);\n\t\tset_hydrate_node(previous_hydrate_node);\n\t\treset_head_anchor();\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\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\tbranch(() => {\n\t\t\tif (context) {\n\t\t\t\tpush({});\n\t\t\t\tvar ctx = /** @type {ComponentContext} */ (component_context);\n\t\t\t\tctx.c = context;\n\t\t\t}\n\n\t\t\tif (events) {\n\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/** @type {any} */ (props).$$events = events;\n\t\t\t}\n\n\t\t\tif (hydrating) {\n\t\t\t\tassign_nodes(/** @type {TemplateNode} */ (anchor_node), null);\n\t\t\t}\n\n\t\t\tshould_intro = intro;\n\t\t\t// @ts-expect-error the public typings are not what the actual function looks like\n\t\t\tcomponent = Component(anchor_node, props) || {};\n\t\t\tshould_intro = true;\n\n\t\t\tif (hydrating) {\n\t\t\t\t/** @type {Effect} */ (active_effect).nodes_end = hydrate_node;\n\t\t\t}\n\n\t\t\tif (context) {\n\t\t\t\tpop();\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\tw.lifecycle_double_unmount();\n\t}\n\n\treturn Promise.resolve();\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tread_hydration_instruction,\n\tremove_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport { block, branch, pause_effect, resume_effect } from '../../reactivity/effects.js';\nimport { HYDRATION_START, HYDRATION_START_ELSE, UNINITIALIZED } from '../../../../constants.js';\n\n/**\n * @param {TemplateNode} node\n * @param {(branch: (fn: (anchor: Node, elseif?: [number,number]) => void, flag?: boolean) => void) => void} fn\n * @param {[number,number]} [elseif]\n * @returns {void}\n */\nexport function if_block(node, fn, [root_index, hydrate_index] = [0, 0]) {\n\tif (hydrating && root_index === 0) {\n\t\thydrate_next();\n\t}\n\n\tvar anchor = node;\n\n\t/** @type {Effect | null} */\n\tvar consequent_effect = null;\n\n\t/** @type {Effect | null} */\n\tvar alternate_effect = null;\n\n\t/** @type {UNINITIALIZED | boolean | null} */\n\tvar condition = UNINITIALIZED;\n\n\tvar flags = root_index > 0 ? EFFECT_TRANSPARENT : 0;\n\n\tvar has_branch = false;\n\n\tconst set_branch = (\n\t\t/** @type {(anchor: Node, elseif?: [number,number]) => void} */ fn,\n\t\tflag = true\n\t) => {\n\t\thas_branch = true;\n\t\tupdate_branch(flag, fn);\n\t};\n\n\tconst update_branch = (\n\t\t/** @type {boolean | null} */ new_condition,\n\t\t/** @type {null | ((anchor: Node, elseif?: [number,number]) => void)} */ fn\n\t) => {\n\t\tif (condition === (condition = new_condition)) return;\n\n\t\t/** Whether or not there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\tlet mismatch = false;\n\n\t\tif (hydrating && hydrate_index !== -1) {\n\t\t\tif (root_index === 0) {\n\t\t\t\tconst data = read_hydration_instruction(anchor);\n\n\t\t\t\tif (data === HYDRATION_START) {\n\t\t\t\t\thydrate_index = 0;\n\t\t\t\t} else if (data === HYDRATION_START_ELSE) {\n\t\t\t\t\thydrate_index = Infinity;\n\t\t\t\t} else {\n\t\t\t\t\thydrate_index = parseInt(data.substring(1));\n\t\t\t\t\tif (hydrate_index !== hydrate_index) {\n\t\t\t\t\t\t// if hydrate_index is NaN\n\t\t\t\t\t\t// we set an invalid index to force mismatch\n\t\t\t\t\t\thydrate_index = condition ? Infinity : -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst is_else = hydrate_index > root_index;\n\n\t\t\tif (!!condition === is_else) {\n\t\t\t\t// Hydration mismatch: remove everything inside the anchor and start fresh.\n\t\t\t\t// This could happen with `{#if browser}...{/if}`, for example\n\t\t\t\tanchor = remove_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tset_hydrating(false);\n\t\t\t\tmismatch = true;\n\t\t\t\thydrate_index = -1; // ignore hydration in next else if\n\t\t\t}\n\t\t}\n\n\t\tif (condition) {\n\t\t\tif (consequent_effect) {\n\t\t\t\tresume_effect(consequent_effect);\n\t\t\t} else if (fn) {\n\t\t\t\tconsequent_effect = branch(() => fn(anchor));\n\t\t\t}\n\n\t\t\tif (alternate_effect) {\n\t\t\t\tpause_effect(alternate_effect, () => {\n\t\t\t\t\talternate_effect = null;\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tif (alternate_effect) {\n\t\t\t\tresume_effect(alternate_effect);\n\t\t\t} else if (fn) {\n\t\t\t\talternate_effect = branch(() => fn(anchor, [root_index + 1, hydrate_index]));\n\t\t\t}\n\n\t\t\tif (consequent_effect) {\n\t\t\t\tpause_effect(consequent_effect, () => {\n\t\t\t\t\tconsequent_effect = null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (mismatch) {\n\t\t\t// continue in hydration mode\n\t\t\tset_hydrating(true);\n\t\t}\n\t};\n\n\tblock(() => {\n\t\thas_branch = false;\n\t\tfn(set_branch);\n\t\tif (!has_branch) {\n\t\t\tupdate_branch(null, null);\n\t\t}\n\t}, flags);\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n","/** @import { EachItem, EachState, Effect, MaybeSource, Source, TemplateNode, TransitionManager, Value } from '#client' */\nimport {\n\tEACH_INDEX_REACTIVE,\n\tEACH_IS_ANIMATED,\n\tEACH_IS_CONTROLLED,\n\tEACH_ITEM_IMMUTABLE,\n\tEACH_ITEM_REACTIVE,\n\tHYDRATION_END,\n\tHYDRATION_START_ELSE\n} from '../../../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tread_hydration_instruction,\n\tremove_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport {\n\tclear_text_content,\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling\n} from '../operations.js';\nimport {\n\tblock,\n\tbranch,\n\tdestroy_effect,\n\trun_out_transitions,\n\tpause_children,\n\tpause_effect,\n\tresume_effect\n} from '../../reactivity/effects.js';\nimport { source, mutable_source, internal_set } from '../../reactivity/sources.js';\nimport { array_from, is_array } from '../../../shared/utils.js';\nimport { INERT } from '#client/constants';\nimport { queue_micro_task } from '../task.js';\nimport { active_effect, get } from '../../runtime.js';\nimport { DEV } from 'esm-env';\nimport { derived_safe_equal } from '../../reactivity/deriveds.js';\n\n/**\n * The row of a keyed each block that is currently updating. We track this\n * so that `animate:` directives have something to attach themselves to\n * @type {EachItem | null}\n */\nexport let current_each_item = null;\n\n/** @param {EachItem | null} item */\nexport function set_current_each_item(item) {\n\tcurrent_each_item = item;\n}\n\n/**\n * @param {any} _\n * @param {number} i\n */\nexport function index(_, i) {\n\treturn i;\n}\n\n/**\n * Pause multiple effects simultaneously, and coordinate their\n * subsequent destruction. Used in each blocks\n * @param {EachState} state\n * @param {EachItem[]} items\n * @param {null | Node} controlled_anchor\n * @param {Map<any, EachItem>} items_map\n */\nfunction pause_effects(state, items, controlled_anchor, items_map) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\tvar length = items.length;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tpause_children(items[i].e, transitions, true);\n\t}\n\n\tvar is_controlled = length > 0 && transitions.length === 0 && controlled_anchor !== null;\n\t// If we have a controlled anchor, it means that the each block is inside a single\n\t// DOM element, so we can apply a fast-path for clearing the contents of the element.\n\tif (is_controlled) {\n\t\tvar parent_node = /** @type {Element} */ (\n\t\t\t/** @type {Element} */ (controlled_anchor).parentNode\n\t\t);\n\t\tclear_text_content(parent_node);\n\t\tparent_node.append(/** @type {Element} */ (controlled_anchor));\n\t\titems_map.clear();\n\t\tlink(state, items[0].prev, items[length - 1].next);\n\t}\n\n\trun_out_transitions(transitions, () => {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tvar item = items[i];\n\t\t\tif (!is_controlled) {\n\t\t\t\titems_map.delete(item.k);\n\t\t\t\tlink(state, item.prev, item.next);\n\t\t\t}\n\t\t\tdestroy_effect(item.e, !is_controlled);\n\t\t}\n\t});\n}\n\n/**\n * @template V\n * @param {Element | Comment} node The next sibling node, or the parent node if this is a 'controlled' block\n * @param {number} flags\n * @param {() => V[]} get_collection\n * @param {(value: V, index: number) => any} get_key\n * @param {(anchor: Node, item: MaybeSource<V>, index: MaybeSource<number>) => void} render_fn\n * @param {null | ((anchor: Node) => void)} fallback_fn\n * @returns {void}\n */\nexport function each(node, flags, get_collection, get_key, render_fn, fallback_fn = null) {\n\tvar anchor = node;\n\n\t/** @type {EachState} */\n\tvar state = { flags, items: new Map(), first: null };\n\n\tvar is_controlled = (flags & EACH_IS_CONTROLLED) !== 0;\n\n\tif (is_controlled) {\n\t\tvar parent_node = /** @type {Element} */ (node);\n\n\t\tanchor = hydrating\n\t\t\t? set_hydrate_node(/** @type {Comment | Text} */ (get_first_child(parent_node)))\n\t\t\t: parent_node.appendChild(create_text());\n\t}\n\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\t/** @type {Effect | null} */\n\tvar fallback = null;\n\n\tvar was_empty = false;\n\n\t// TODO: ideally we could use derived for runes mode but because of the ability\n\t// to use a store which can be mutated, we can't do that here as mutating a store\n\t// will still result in the collection array being the same from the store\n\tvar each_array = derived_safe_equal(() => {\n\t\tvar collection = get_collection();\n\n\t\treturn is_array(collection) ? collection : collection == null ? [] : array_from(collection);\n\t});\n\n\tblock(() => {\n\t\tvar array = get(each_array);\n\t\tvar length = array.length;\n\n\t\tif (was_empty && length === 0) {\n\t\t\t// ignore updates if the array is empty,\n\t\t\t// and it already was empty on previous run\n\t\t\treturn;\n\t\t}\n\t\twas_empty = length === 0;\n\n\t\t/** `true` if there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\tlet mismatch = false;\n\n\t\tif (hydrating) {\n\t\t\tvar is_else = read_hydration_instruction(anchor) === HYDRATION_START_ELSE;\n\n\t\t\tif (is_else !== (length === 0)) {\n\t\t\t\t// hydration mismatch — remove the server-rendered DOM and start over\n\t\t\t\tanchor = remove_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tset_hydrating(false);\n\t\t\t\tmismatch = true;\n\t\t\t}\n\t\t}\n\n\t\t// this is separate to the previous block because `hydrating` might change\n\t\tif (hydrating) {\n\t\t\t/** @type {EachItem | null} */\n\t\t\tvar prev = null;\n\n\t\t\t/** @type {EachItem} */\n\t\t\tvar item;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tif (\n\t\t\t\t\thydrate_node.nodeType === 8 &&\n\t\t\t\t\t/** @type {Comment} */ (hydrate_node).data === HYDRATION_END\n\t\t\t\t) {\n\t\t\t\t\t// The server rendered fewer items than expected,\n\t\t\t\t\t// so break out and continue appending non-hydrated items\n\t\t\t\t\tanchor = /** @type {Comment} */ (hydrate_node);\n\t\t\t\t\tmismatch = true;\n\t\t\t\t\tset_hydrating(false);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tvar value = array[i];\n\t\t\t\tvar key = get_key(value, i);\n\t\t\t\titem = create_item(\n\t\t\t\t\thydrate_node,\n\t\t\t\t\tstate,\n\t\t\t\t\tprev,\n\t\t\t\t\tnull,\n\t\t\t\t\tvalue,\n\t\t\t\t\tkey,\n\t\t\t\t\ti,\n\t\t\t\t\trender_fn,\n\t\t\t\t\tflags,\n\t\t\t\t\tget_collection\n\t\t\t\t);\n\t\t\t\tstate.items.set(key, item);\n\n\t\t\t\tprev = item;\n\t\t\t}\n\n\t\t\t// remove excess nodes\n\t\t\tif (length > 0) {\n\t\t\t\tset_hydrate_node(remove_nodes());\n\t\t\t}\n\t\t}\n\n\t\tif (!hydrating) {\n\t\t\treconcile(array, state, anchor, render_fn, flags, get_key, get_collection);\n\t\t}\n\n\t\tif (fallback_fn !== null) {\n\t\t\tif (length === 0) {\n\t\t\t\tif (fallback) {\n\t\t\t\t\tresume_effect(fallback);\n\t\t\t\t} else {\n\t\t\t\t\tfallback = branch(() => fallback_fn(anchor));\n\t\t\t\t}\n\t\t\t} else if (fallback !== null) {\n\t\t\t\tpause_effect(fallback, () => {\n\t\t\t\t\tfallback = null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (mismatch) {\n\t\t\t// continue in hydration mode\n\t\t\tset_hydrating(true);\n\t\t}\n\n\t\t// When we mount the each block for the first time, the collection won't be\n\t\t// connected to this effect as the effect hasn't finished running yet and its deps\n\t\t// won't be assigned. However, it's possible that when reconciling the each block\n\t\t// that a mutation occurred and it's made the collection MAYBE_DIRTY, so reading the\n\t\t// collection again can provide consistency to the reactive graph again as the deriveds\n\t\t// will now be `CLEAN`.\n\t\tget(each_array);\n\t});\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n\n/**\n * Add, remove, or reorder items output by an each block as its input changes\n * @template V\n * @param {Array<V>} array\n * @param {EachState} state\n * @param {Element | Comment | Text} anchor\n * @param {(anchor: Node, item: MaybeSource<V>, index: number | Source<number>, collection: () => V[]) => void} render_fn\n * @param {number} flags\n * @param {(value: V, index: number) => any} get_key\n * @param {() => V[]} get_collection\n * @returns {void}\n */\nfunction reconcile(array, state, anchor, render_fn, flags, get_key, get_collection) {\n\tvar is_animated = (flags & EACH_IS_ANIMATED) !== 0;\n\tvar should_update = (flags & (EACH_ITEM_REACTIVE | EACH_INDEX_REACTIVE)) !== 0;\n\n\tvar length = array.length;\n\tvar items = state.items;\n\tvar first = state.first;\n\tvar current = first;\n\n\t/** @type {undefined | Set<EachItem>} */\n\tvar seen;\n\n\t/** @type {EachItem | null} */\n\tvar prev = null;\n\n\t/** @type {undefined | Set<EachItem>} */\n\tvar to_animate;\n\n\t/** @type {EachItem[]} */\n\tvar matched = [];\n\n\t/** @type {EachItem[]} */\n\tvar stashed = [];\n\n\t/** @type {V} */\n\tvar value;\n\n\t/** @type {any} */\n\tvar key;\n\n\t/** @type {EachItem | undefined} */\n\tvar item;\n\n\t/** @type {number} */\n\tvar i;\n\n\tif (is_animated) {\n\t\tfor (i = 0; i < length; i += 1) {\n\t\t\tvalue = array[i];\n\t\t\tkey = get_key(value, i);\n\t\t\titem = items.get(key);\n\n\t\t\tif (item !== undefined) {\n\t\t\t\titem.a?.measure();\n\t\t\t\t(to_animate ??= new Set()).add(item);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i = 0; i < length; i += 1) {\n\t\tvalue = array[i];\n\t\tkey = get_key(value, i);\n\t\titem = items.get(key);\n\n\t\tif (item === undefined) {\n\t\t\tvar child_anchor = current ? /** @type {TemplateNode} */ (current.e.nodes_start) : anchor;\n\n\t\t\tprev = create_item(\n\t\t\t\tchild_anchor,\n\t\t\t\tstate,\n\t\t\t\tprev,\n\t\t\t\tprev === null ? state.first : prev.next,\n\t\t\t\tvalue,\n\t\t\t\tkey,\n\t\t\t\ti,\n\t\t\t\trender_fn,\n\t\t\t\tflags,\n\t\t\t\tget_collection\n\t\t\t);\n\n\t\t\titems.set(key, prev);\n\n\t\t\tmatched = [];\n\t\t\tstashed = [];\n\n\t\t\tcurrent = prev.next;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (should_update) {\n\t\t\tupdate_item(item, value, i, flags);\n\t\t}\n\n\t\tif ((item.e.f & INERT) !== 0) {\n\t\t\tresume_effect(item.e);\n\t\t\tif (is_animated) {\n\t\t\t\titem.a?.unfix();\n\t\t\t\t(to_animate ??= new Set()).delete(item);\n\t\t\t}\n\t\t}\n\n\t\tif (item !== current) {\n\t\t\tif (seen !== undefined && seen.has(item)) {\n\t\t\t\tif (matched.length < stashed.length) {\n\t\t\t\t\t// more efficient to move later items to the front\n\t\t\t\t\tvar start = stashed[0];\n\t\t\t\t\tvar j;\n\n\t\t\t\t\tprev = start.prev;\n\n\t\t\t\t\tvar a = matched[0];\n\t\t\t\t\tvar b = matched[matched.length - 1];\n\n\t\t\t\t\tfor (j = 0; j < matched.length; j += 1) {\n\t\t\t\t\t\tmove(matched[j], start, anchor);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (j = 0; j < stashed.length; j += 1) {\n\t\t\t\t\t\tseen.delete(stashed[j]);\n\t\t\t\t\t}\n\n\t\t\t\t\tlink(state, a.prev, b.next);\n\t\t\t\t\tlink(state, prev, a);\n\t\t\t\t\tlink(state, b, start);\n\n\t\t\t\t\tcurrent = start;\n\t\t\t\t\tprev = b;\n\t\t\t\t\ti -= 1;\n\n\t\t\t\t\tmatched = [];\n\t\t\t\t\tstashed = [];\n\t\t\t\t} else {\n\t\t\t\t\t// more efficient to move earlier items to the back\n\t\t\t\t\tseen.delete(item);\n\t\t\t\t\tmove(item, current, anchor);\n\n\t\t\t\t\tlink(state, item.prev, item.next);\n\t\t\t\t\tlink(state, item, prev === null ? state.first : prev.next);\n\t\t\t\t\tlink(state, prev, item);\n\n\t\t\t\t\tprev = item;\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tmatched = [];\n\t\t\tstashed = [];\n\n\t\t\twhile (current !== null && current.k !== key) {\n\t\t\t\t// If the each block isn't inert and an item has an effect that is already inert,\n\t\t\t\t// skip over adding it to our seen Set as the item is already being handled\n\t\t\t\tif ((current.e.f & INERT) === 0) {\n\t\t\t\t\t(seen ??= new Set()).add(current);\n\t\t\t\t}\n\t\t\t\tstashed.push(current);\n\t\t\t\tcurrent = current.next;\n\t\t\t}\n\n\t\t\tif (current === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\titem = current;\n\t\t}\n\n\t\tmatched.push(item);\n\t\tprev = item;\n\t\tcurrent = item.next;\n\t}\n\n\tif (current !== null || seen !== undefined) {\n\t\tvar to_destroy = seen === undefined ? [] : array_from(seen);\n\n\t\twhile (current !== null) {\n\t\t\t// If the each block isn't inert, then inert effects are currently outroing and will be removed once the transition is finished\n\t\t\tif ((current.e.f & INERT) === 0) {\n\t\t\t\tto_destroy.push(current);\n\t\t\t}\n\t\t\tcurrent = current.next;\n\t\t}\n\n\t\tvar destroy_length = to_destroy.length;\n\n\t\tif (destroy_length > 0) {\n\t\t\tvar controlled_anchor = (flags & EACH_IS_CONTROLLED) !== 0 && length === 0 ? anchor : null;\n\n\t\t\tif (is_animated) {\n\t\t\t\tfor (i = 0; i < destroy_length; i += 1) {\n\t\t\t\t\tto_destroy[i].a?.measure();\n\t\t\t\t}\n\n\t\t\t\tfor (i = 0; i < destroy_length; i += 1) {\n\t\t\t\t\tto_destroy[i].a?.fix();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpause_effects(state, to_destroy, controlled_anchor, items);\n\t\t}\n\t}\n\n\tif (is_animated) {\n\t\tqueue_micro_task(() => {\n\t\t\tif (to_animate === undefined) return;\n\t\t\tfor (item of to_animate) {\n\t\t\t\titem.a?.apply();\n\t\t\t}\n\t\t});\n\t}\n\n\t/** @type {Effect} */ (active_effect).first = state.first && state.first.e;\n\t/** @type {Effect} */ (active_effect).last = prev && prev.e;\n}\n\n/**\n * @param {EachItem} item\n * @param {any} value\n * @param {number} index\n * @param {number} type\n * @returns {void}\n */\nfunction update_item(item, value, index, type) {\n\tif ((type & EACH_ITEM_REACTIVE) !== 0) {\n\t\tinternal_set(item.v, value);\n\t}\n\n\tif ((type & EACH_INDEX_REACTIVE) !== 0) {\n\t\tinternal_set(/** @type {Value<number>} */ (item.i), index);\n\t} else {\n\t\titem.i = index;\n\t}\n}\n\n/**\n * @template V\n * @param {Node} anchor\n * @param {EachState} state\n * @param {EachItem | null} prev\n * @param {EachItem | null} next\n * @param {V} value\n * @param {unknown} key\n * @param {number} index\n * @param {(anchor: Node, item: V | Source<V>, index: number | Value<number>, collection: () => V[]) => void} render_fn\n * @param {number} flags\n * @param {() => V[]} get_collection\n * @returns {EachItem}\n */\nfunction create_item(\n\tanchor,\n\tstate,\n\tprev,\n\tnext,\n\tvalue,\n\tkey,\n\tindex,\n\trender_fn,\n\tflags,\n\tget_collection\n) {\n\tvar previous_each_item = current_each_item;\n\tvar reactive = (flags & EACH_ITEM_REACTIVE) !== 0;\n\tvar mutable = (flags & EACH_ITEM_IMMUTABLE) === 0;\n\n\tvar v = reactive ? (mutable ? mutable_source(value) : source(value)) : value;\n\tvar i = (flags & EACH_INDEX_REACTIVE) === 0 ? index : source(index);\n\n\tif (DEV && reactive) {\n\t\t// For tracing purposes, we need to link the source signal we create with the\n\t\t// collection + index so that tracing works as intended\n\t\t/** @type {Value} */ (v).debug = () => {\n\t\t\tvar collection_index = typeof i === 'number' ? index : i.v;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\tget_collection()[collection_index];\n\t\t};\n\t}\n\n\t/** @type {EachItem} */\n\tvar item = {\n\t\ti,\n\t\tv,\n\t\tk: key,\n\t\ta: null,\n\t\t// @ts-expect-error\n\t\te: null,\n\t\tprev,\n\t\tnext\n\t};\n\n\tcurrent_each_item = item;\n\n\ttry {\n\t\titem.e = branch(() => render_fn(anchor, v, i, get_collection), hydrating);\n\n\t\titem.e.prev = prev && prev.e;\n\t\titem.e.next = next && next.e;\n\n\t\tif (prev === null) {\n\t\t\tstate.first = item;\n\t\t} else {\n\t\t\tprev.next = item;\n\t\t\tprev.e.next = item.e;\n\t\t}\n\n\t\tif (next !== null) {\n\t\t\tnext.prev = item;\n\t\t\tnext.e.prev = item.e;\n\t\t}\n\n\t\treturn item;\n\t} finally {\n\t\tcurrent_each_item = previous_each_item;\n\t}\n}\n\n/**\n * @param {EachItem} item\n * @param {EachItem | null} next\n * @param {Text | Element | Comment} anchor\n */\nfunction move(item, next, anchor) {\n\tvar end = item.next ? /** @type {TemplateNode} */ (item.next.e.nodes_start) : anchor;\n\n\tvar dest = next ? /** @type {TemplateNode} */ (next.e.nodes_start) : anchor;\n\tvar node = /** @type {TemplateNode} */ (item.e.nodes_start);\n\n\twhile (node !== end) {\n\t\tvar next_node = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\tdest.before(node);\n\t\tnode = next_node;\n\t}\n}\n\n/**\n * @param {EachState} state\n * @param {EachItem | null} prev\n * @param {EachItem | null} next\n */\nfunction link(state, prev, next) {\n\tif (prev === null) {\n\t\tstate.first = next;\n\t} else {\n\t\tprev.next = next;\n\t\tprev.e.next = next && next.e;\n\t}\n\n\tif (next !== null) {\n\t\tnext.prev = prev;\n\t\tnext.e.prev = prev && prev.e;\n\t}\n}\n","/** @import { Snippet } from 'svelte' */\n/** @import { Effect, TemplateNode } from '#client' */\n/** @import { Getters } from '#shared' */\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport { branch, block, destroy_effect, teardown } from '../../reactivity/effects.js';\nimport {\n\tdev_current_component_function,\n\tset_dev_current_component_function\n} from '../../context.js';\nimport { hydrate_next, hydrate_node, hydrating } from '../hydration.js';\nimport { create_fragment_from_html } from '../reconciler.js';\nimport { assign_nodes } from '../template.js';\nimport * as w from '../../warnings.js';\nimport * as e from '../../errors.js';\nimport { DEV } from 'esm-env';\nimport { get_first_child, get_next_sibling } from '../operations.js';\nimport { noop } from '../../../shared/utils.js';\nimport { prevent_snippet_stringification } from '../../../shared/validate.js';\n\n/**\n * @template {(node: TemplateNode, ...args: any[]) => void} SnippetFn\n * @param {TemplateNode} node\n * @param {() => SnippetFn | null | undefined} get_snippet\n * @param {(() => any)[]} args\n * @returns {void}\n */\nexport function snippet(node, get_snippet, ...args) {\n\tvar anchor = node;\n\n\t/** @type {SnippetFn | null | undefined} */\n\t// @ts-ignore\n\tvar snippet = noop;\n\n\t/** @type {Effect | null} */\n\tvar snippet_effect;\n\n\tblock(() => {\n\t\tif (snippet === (snippet = get_snippet())) return;\n\n\t\tif (snippet_effect) {\n\t\t\tdestroy_effect(snippet_effect);\n\t\t\tsnippet_effect = null;\n\t\t}\n\n\t\tif (DEV && snippet == null) {\n\t\t\te.invalid_snippet();\n\t\t}\n\n\t\tsnippet_effect = branch(() => /** @type {SnippetFn} */ (snippet)(anchor, ...args));\n\t}, EFFECT_TRANSPARENT);\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n\n/**\n * In development, wrap the snippet function so that it passes validation, and so that the\n * correct component context is set for ownership checks\n * @param {any} component\n * @param {(node: TemplateNode, ...args: any[]) => void} fn\n */\nexport function wrap_snippet(component, fn) {\n\tconst snippet = (/** @type {TemplateNode} */ node, /** @type {any[]} */ ...args) => {\n\t\tvar previous_component_function = dev_current_component_function;\n\t\tset_dev_current_component_function(component);\n\n\t\ttry {\n\t\t\treturn fn(node, ...args);\n\t\t} finally {\n\t\t\tset_dev_current_component_function(previous_component_function);\n\t\t}\n\t};\n\n\tprevent_snippet_stringification(snippet);\n\n\treturn snippet;\n}\n\n/**\n * Create a snippet programmatically\n * @template {unknown[]} Params\n * @param {(...params: Getters<Params>) => {\n * render: () => string\n * setup?: (element: Element) => void | (() => void)\n * }} fn\n * @returns {Snippet<Params>}\n */\nexport function createRawSnippet(fn) {\n\t// @ts-expect-error the types are a lie\n\treturn (/** @type {TemplateNode} */ anchor, /** @type {Getters<Params>} */ ...params) => {\n\t\tvar snippet = fn(...params);\n\n\t\t/** @type {Element} */\n\t\tvar element;\n\n\t\tif (hydrating) {\n\t\t\telement = /** @type {Element} */ (hydrate_node);\n\t\t\thydrate_next();\n\t\t} else {\n\t\t\tvar html = snippet.render().trim();\n\t\t\tvar fragment = create_fragment_from_html(html);\n\t\t\telement = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (DEV && (get_next_sibling(element) !== null || element.nodeType !== 1)) {\n\t\t\t\tw.invalid_raw_snippet_render();\n\t\t\t}\n\n\t\t\tanchor.before(element);\n\t\t}\n\n\t\tconst result = snippet.setup?.(element);\n\t\tassign_nodes(element, element);\n\n\t\tif (typeof result === 'function') {\n\t\t\tteardown(result);\n\t\t}\n\t};\n}\n","/** @import { TemplateNode, Dom, Effect } from '#client' */\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport { block, branch, pause_effect } from '../../reactivity/effects.js';\nimport { hydrate_next, hydrate_node, hydrating } from '../hydration.js';\n\n/**\n * @template P\n * @template {(props: P) => void} C\n * @param {TemplateNode} node\n * @param {() => C} get_component\n * @param {(anchor: TemplateNode, component: C) => Dom | void} render_fn\n * @returns {void}\n */\nexport function component(node, get_component, render_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar anchor = node;\n\n\t/** @type {C} */\n\tvar component;\n\n\t/** @type {Effect | null} */\n\tvar effect;\n\n\tblock(() => {\n\t\tif (component === (component = get_component())) return;\n\n\t\tif (effect) {\n\t\t\tpause_effect(effect);\n\t\t\teffect = null;\n\t\t}\n\n\t\tif (component) {\n\t\t\teffect = branch(() => render_fn(anchor, component));\n\t\t}\n\t}, EFFECT_TRANSPARENT);\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n","/** @import { ActionPayload } from '#client' */\nimport { effect, render_effect } from '../../reactivity/effects.js';\nimport { safe_not_equal } from '../../reactivity/equality.js';\nimport { deep_read_state, untrack } from '../../runtime.js';\n\n/**\n * @template P\n * @param {Element} dom\n * @param {(dom: Element, value?: P) => ActionPayload<P>} action\n * @param {() => P} [get_value]\n * @returns {void}\n */\nexport function action(dom, action, get_value) {\n\teffect(() => {\n\t\tvar payload = untrack(() => action(dom, get_value?.()) || {});\n\n\t\tif (get_value && payload?.update) {\n\t\t\tvar inited = false;\n\t\t\t/** @type {P} */\n\t\t\tvar prev = /** @type {any} */ ({}); // initialize with something so it's never equal on first run\n\n\t\t\trender_effect(() => {\n\t\t\t\tvar value = get_value();\n\n\t\t\t\t// Action's update method is coarse-grained, i.e. when anything in the passed value changes, update.\n\t\t\t\t// This works in legacy mode because of mutable_source being updated as a whole, but when using $state\n\t\t\t\t// together with actions and mutation, it wouldn't notice the change without a deep read.\n\t\t\t\tdeep_read_state(value);\n\n\t\t\t\tif (inited && safe_not_equal(prev, value)) {\n\t\t\t\t\tprev = value;\n\t\t\t\t\t/** @type {Function} */ (payload.update)(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinited = true;\n\t\t}\n\n\t\tif (payload?.destroy) {\n\t\t\treturn () => /** @type {Function} */ (payload.destroy)();\n\t\t}\n\t});\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { escape_html } from '../../escaping.js';\nimport { clsx as _clsx } from 'clsx';\n\n/**\n * `<div translate={false}>` should be rendered as `<div translate=\"no\">` and _not_\n * `<div translate=\"false\">`, which is equivalent to `<div translate=\"yes\">`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record<string, Map<any, string>>}\n */\nconst replacements = {\n\ttranslate: new Map([\n\t\t[true, 'yes'],\n\t\t[false, 'no']\n\t])\n};\n\n/**\n * @template V\n * @param {string} name\n * @param {V} value\n * @param {boolean} [is_boolean]\n * @returns {string}\n */\nexport function attr(name, value, is_boolean = false) {\n\tif (value == null || (!value && is_boolean)) return '';\n\tconst normalized = (name in replacements && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? '' : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n\nconst whitespace = [...' \\t\\n\\r\\f\\u00a0\\u000b\\ufeff'];\n\n/**\n * @param {any} value\n * @param {string | null} [hash]\n * @param {Record<string, boolean>} [directives]\n * @returns {string | null}\n */\nexport function to_class(value, hash, directives) {\n\tvar classname = value == null ? '' : '' + value;\n\n\tif (hash) {\n\t\tclassname = classname ? classname + ' ' + hash : hash;\n\t}\n\n\tif (directives) {\n\t\tfor (var key in directives) {\n\t\t\tif (directives[key]) {\n\t\t\t\tclassname = classname ? classname + ' ' + key : key;\n\t\t\t} else if (classname.length) {\n\t\t\t\tvar len = key.length;\n\t\t\t\tvar a = 0;\n\n\t\t\t\twhile ((a = classname.indexOf(key, a)) >= 0) {\n\t\t\t\t\tvar b = a + len;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(a === 0 || whitespace.includes(classname[a - 1])) &&\n\t\t\t\t\t\t(b === classname.length || whitespace.includes(classname[b]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassname = (a === 0 ? '' : classname.substring(0, a)) + classname.substring(b + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn classname === '' ? null : classname;\n}\n\n/**\n *\n * @param {Record<string,any>} styles\n * @param {boolean} important\n */\nfunction append_styles(styles, important = false) {\n\tvar separator = important ? ' !important;' : ';';\n\tvar css = '';\n\n\tfor (var key in styles) {\n\t\tvar value = styles[key];\n\t\tif (value != null && value !== '') {\n\t\t\tcss += ' ' + key + ': ' + value + separator;\n\t\t}\n\t}\n\n\treturn css;\n}\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction to_css_name(name) {\n\tif (name[0] !== '-' || name[1] !== '-') {\n\t\treturn name.toLowerCase();\n\t}\n\treturn name;\n}\n\n/**\n * @param {any} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]\n * @returns {string | null}\n */\nexport function to_style(value, styles) {\n\tif (styles) {\n\t\tvar new_style = '';\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar normal_styles;\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar important_styles;\n\n\t\tif (Array.isArray(styles)) {\n\t\t\tnormal_styles = styles[0];\n\t\t\timportant_styles = styles[1];\n\t\t} else {\n\t\t\tnormal_styles = styles;\n\t\t}\n\n\t\tif (value) {\n\t\t\tvalue = String(value)\n\t\t\t\t.replaceAll(/\\s*\\/\\*.*?\\*\\/\\s*/g, '')\n\t\t\t\t.trim();\n\n\t\t\t/** @type {boolean | '\"' | \"'\"} */\n\t\t\tvar in_str = false;\n\t\t\tvar in_apo = 0;\n\t\t\tvar in_comment = false;\n\n\t\t\tvar reserved_names = [];\n\n\t\t\tif (normal_styles) {\n\t\t\t\treserved_names.push(...Object.keys(normal_styles).map(to_css_name));\n\t\t\t}\n\t\t\tif (important_styles) {\n\t\t\t\treserved_names.push(...Object.keys(important_styles).map(to_css_name));\n\t\t\t}\n\n\t\t\tvar start_index = 0;\n\t\t\tvar name_index = -1;\n\n\t\t\tconst len = value.length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar c = value[i];\n\n\t\t\t\tif (in_comment) {\n\t\t\t\t\tif (c === '/' && value[i - 1] === '*') {\n\t\t\t\t\t\tin_comment = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (in_str) {\n\t\t\t\t\tif (in_str === c) {\n\t\t\t\t\t\tin_str = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '/' && value[i + 1] === '*') {\n\t\t\t\t\tin_comment = true;\n\t\t\t\t} else if (c === '\"' || c === \"'\") {\n\t\t\t\t\tin_str = c;\n\t\t\t\t} else if (c === '(') {\n\t\t\t\t\tin_apo++;\n\t\t\t\t} else if (c === ')') {\n\t\t\t\t\tin_apo--;\n\t\t\t\t}\n\n\t\t\t\tif (!in_comment && in_str === false && in_apo === 0) {\n\t\t\t\t\tif (c === ':' && name_index === -1) {\n\t\t\t\t\t\tname_index = i;\n\t\t\t\t\t} else if (c === ';' || i === len - 1) {\n\t\t\t\t\t\tif (name_index !== -1) {\n\t\t\t\t\t\t\tvar name = to_css_name(value.substring(start_index, name_index).trim());\n\n\t\t\t\t\t\t\tif (!reserved_names.includes(name)) {\n\t\t\t\t\t\t\t\tif (c !== ';') {\n\t\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar property = value.substring(start_index, i).trim();\n\t\t\t\t\t\t\t\tnew_style += ' ' + property + ';';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart_index = i + 1;\n\t\t\t\t\t\tname_index = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (normal_styles) {\n\t\t\tnew_style += append_styles(normal_styles);\n\t\t}\n\n\t\tif (important_styles) {\n\t\t\tnew_style += append_styles(important_styles, true);\n\t\t}\n\n\t\tnew_style = new_style.trim();\n\t\treturn new_style === '' ? null : new_style;\n\t}\n\n\treturn value == null ? null : String(value);\n}\n","import { to_class } from '../../../shared/attributes.js';\nimport { hydrating } from '../hydration.js';\n\n/**\n * @param {Element} dom\n * @param {boolean | number} is_html\n * @param {string | null} value\n * @param {string} [hash]\n * @param {Record<string, any>} [prev_classes]\n * @param {Record<string, any>} [next_classes]\n * @returns {Record<string, boolean> | undefined}\n */\nexport function set_class(dom, is_html, value, hash, prev_classes, next_classes) {\n\t// @ts-expect-error need to add __className to patched prototype\n\tvar prev = dom.__className;\n\n\tif (\n\t\thydrating ||\n\t\tprev !== value ||\n\t\tprev === undefined // for edge case of `class={undefined}`\n\t) {\n\t\tvar next_class_name = to_class(value, hash, next_classes);\n\n\t\tif (!hydrating || next_class_name !== dom.getAttribute('class')) {\n\t\t\t// Removing the attribute when the value is only an empty string causes\n\t\t\t// performance issues vs simply making the className an empty string. So\n\t\t\t// we should only remove the class if the value is nullish\n\t\t\t// and there no hash/directives :\n\t\t\tif (next_class_name == null) {\n\t\t\t\tdom.removeAttribute('class');\n\t\t\t} else if (is_html) {\n\t\t\t\tdom.className = next_class_name;\n\t\t\t} else {\n\t\t\t\tdom.setAttribute('class', next_class_name);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = value;\n\t} else if (next_classes && prev_classes !== next_classes) {\n\t\tfor (var key in next_classes) {\n\t\t\tvar is_present = !!next_classes[key];\n\n\t\t\tif (prev_classes == null || is_present !== !!prev_classes[key]) {\n\t\t\t\tdom.classList.toggle(key, is_present);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn next_classes;\n}\n","import { to_style } from '../../../shared/attributes.js';\nimport { hydrating } from '../hydration.js';\n\n/**\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {Record<string, any>} prev\n * @param {Record<string, any>} next\n * @param {string} [priority]\n */\nfunction update_styles(dom, prev = {}, next, priority) {\n\tfor (var key in next) {\n\t\tvar value = next[key];\n\n\t\tif (prev[key] !== value) {\n\t\t\tif (next[key] == null) {\n\t\t\t\tdom.style.removeProperty(key);\n\t\t\t} else {\n\t\t\t\tdom.style.setProperty(key, value, priority);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {string | null} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [prev_styles]\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [next_styles]\n */\nexport function set_style(dom, value, prev_styles, next_styles) {\n\t// @ts-expect-error\n\tvar prev = dom.__style;\n\n\tif (hydrating || prev !== value) {\n\t\tvar next_style_attr = to_style(value, next_styles);\n\n\t\tif (!hydrating || next_style_attr !== dom.getAttribute('style')) {\n\t\t\tif (next_style_attr == null) {\n\t\t\t\tdom.removeAttribute('style');\n\t\t\t} else {\n\t\t\t\tdom.style.cssText = next_style_attr;\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error\n\t\tdom.__style = value;\n\t} else if (next_styles) {\n\t\tif (Array.isArray(next_styles)) {\n\t\t\tupdate_styles(dom, prev_styles?.[0], next_styles[0]);\n\t\t\tupdate_styles(dom, prev_styles?.[1], next_styles[1], 'important');\n\t\t} else {\n\t\t\tupdate_styles(dom, prev_styles, next_styles);\n\t\t}\n\t}\n\n\treturn next_styles;\n}\n","/** @import { Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { hydrating, set_hydrating } from '../hydration.js';\nimport { get_descriptors, get_prototype_of } from '../../../shared/utils.js';\nimport { create_event, delegate } from './events.js';\nimport { add_form_reset_listener, autofocus } from './misc.js';\nimport * as w from '../../warnings.js';\nimport { LOADING_ATTR_SYMBOL } from '#client/constants';\nimport { queue_idle_task } from '../task.js';\nimport { is_capture_event, is_delegated, normalize_attribute } from '../../../../utils.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tget,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { attach } from './attachments.js';\nimport { clsx } from '../../../shared/attributes.js';\nimport { set_class } from './class.js';\nimport { set_style } from './style.js';\nimport { ATTACHMENT_KEY, NAMESPACE_HTML } from '../../../../constants.js';\nimport { block, branch, destroy_effect } from '../../reactivity/effects.js';\nimport { derived } from '../../reactivity/deriveds.js';\nimport { init_select, select_option } from './bindings/select.js';\n\nexport const CLASS = Symbol('class');\nexport const STYLE = Symbol('style');\n\nconst IS_CUSTOM_ELEMENT = Symbol('is custom element');\nconst IS_HTML = Symbol('is html');\n\n/**\n * The value/checked attribute in the template actually corresponds to the defaultValue property, so we need\n * to remove it upon hydration to avoid a bug when someone resets the form value.\n * @param {HTMLInputElement} input\n * @returns {void}\n */\nexport function remove_input_defaults(input) {\n\tif (!hydrating) return;\n\n\tvar already_removed = false;\n\n\t// We try and remove the default attributes later, rather than sync during hydration.\n\t// Doing it sync during hydration has a negative impact on performance, but deferring the\n\t// work in an idle task alleviates this greatly. If a form reset event comes in before\n\t// the idle callback, then we ensure the input defaults are cleared just before.\n\tvar remove_defaults = () => {\n\t\tif (already_removed) return;\n\t\talready_removed = true;\n\n\t\t// Remove the attributes but preserve the values\n\t\tif (input.hasAttribute('value')) {\n\t\t\tvar value = input.value;\n\t\t\tset_attribute(input, 'value', null);\n\t\t\tinput.value = value;\n\t\t}\n\n\t\tif (input.hasAttribute('checked')) {\n\t\t\tvar checked = input.checked;\n\t\t\tset_attribute(input, 'checked', null);\n\t\t\tinput.checked = checked;\n\t\t}\n\t};\n\n\t// @ts-expect-error\n\tinput.__on_r = remove_defaults;\n\tqueue_idle_task(remove_defaults);\n\tadd_form_reset_listener();\n}\n\n/**\n * @param {Element} element\n * @param {any} value\n */\nexport function set_value(element, value) {\n\tvar attributes = get_attributes(element);\n\n\tif (\n\t\tattributes.value ===\n\t\t\t(attributes.value =\n\t\t\t\t// treat null and undefined the same for the initial value\n\t\t\t\tvalue ?? undefined) ||\n\t\t// @ts-expect-error\n\t\t// `progress` elements always need their value set when it's `0`\n\t\t(element.value === value && (value !== 0 || element.nodeName !== 'PROGRESS'))\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.value = value ?? '';\n}\n\n/**\n * @param {Element} element\n * @param {boolean} checked\n */\nexport function set_checked(element, checked) {\n\tvar attributes = get_attributes(element);\n\n\tif (\n\t\tattributes.checked ===\n\t\t(attributes.checked =\n\t\t\t// treat null and undefined the same for the initial value\n\t\t\tchecked ?? undefined)\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.checked = checked;\n}\n\n/**\n * Sets the `selected` attribute on an `option` element.\n * Not set through the property because that doesn't reflect to the DOM,\n * which means it wouldn't be taken into account when a form is reset.\n * @param {HTMLOptionElement} element\n * @param {boolean} selected\n */\nexport function set_selected(element, selected) {\n\tif (selected) {\n\t\t// The selected option could've changed via user selection, and\n\t\t// setting the value without this check would set it back.\n\t\tif (!element.hasAttribute('selected')) {\n\t\t\telement.setAttribute('selected', '');\n\t\t}\n\t} else {\n\t\telement.removeAttribute('selected');\n\t}\n}\n\n/**\n * Applies the default checked property without influencing the current checked property.\n * @param {HTMLInputElement} element\n * @param {boolean} checked\n */\nexport function set_default_checked(element, checked) {\n\tconst existing_value = element.checked;\n\telement.defaultChecked = checked;\n\telement.checked = existing_value;\n}\n\n/**\n * Applies the default value property without influencing the current value property.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * @param {string} value\n */\nexport function set_default_value(element, value) {\n\tconst existing_value = element.value;\n\telement.defaultValue = value;\n\telement.value = existing_value;\n}\n\n/**\n * @param {Element} element\n * @param {string} attribute\n * @param {string | null} value\n * @param {boolean} [skip_warning]\n */\nexport function set_attribute(element, attribute, value, skip_warning) {\n\tvar attributes = get_attributes(element);\n\n\tif (hydrating) {\n\t\tattributes[attribute] = element.getAttribute(attribute);\n\n\t\tif (\n\t\t\tattribute === 'src' ||\n\t\t\tattribute === 'srcset' ||\n\t\t\t(attribute === 'href' && element.nodeName === 'LINK')\n\t\t) {\n\t\t\tif (!skip_warning) {\n\t\t\t\tcheck_src_in_dev_hydration(element, attribute, value ?? '');\n\t\t\t}\n\n\t\t\t// If we reset these attributes, they would result in another network request, which we want to avoid.\n\t\t\t// We assume they are the same between client and server as checking if they are equal is expensive\n\t\t\t// (we can't just compare the strings as they can be different between client and server but result in the\n\t\t\t// same url, so we would need to create hidden anchor elements to compare them)\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (attributes[attribute] === (attributes[attribute] = value)) return;\n\n\tif (attribute === 'loading') {\n\t\t// @ts-expect-error\n\t\telement[LOADING_ATTR_SYMBOL] = value;\n\t}\n\n\tif (value == null) {\n\t\telement.removeAttribute(attribute);\n\t} else if (typeof value !== 'string' && get_setters(element).includes(attribute)) {\n\t\t// @ts-ignore\n\t\telement[attribute] = value;\n\t} else {\n\t\telement.setAttribute(attribute, value);\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {string} value\n */\nexport function set_xlink_attribute(dom, attribute, value) {\n\tdom.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @param {string} prop\n * @param {any} value\n */\nexport function set_custom_element_data(node, prop, value) {\n\t// We need to ensure that setting custom element props, which can\n\t// invoke lifecycle methods on other custom elements, does not also\n\t// associate those lifecycle methods with the current active reaction\n\t// or effect\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet was_hydrating = hydrating;\n\tif (hydrating) {\n\t\tset_hydrating(false);\n\t}\n\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\n\ttry {\n\t\tif (\n\t\t\t// `style` should use `set_attribute` rather than the setter\n\t\t\tprop !== 'style' &&\n\t\t\t// Don't compute setters for custom elements while they aren't registered yet,\n\t\t\t// because during their upgrade/instantiation they might add more setters.\n\t\t\t// Instead, fall back to a simple \"an object, then set as property\" heuristic.\n\t\t\t(setters_cache.has(node.nodeName) ||\n\t\t\t// customElements may not be available in browser extension contexts\n\t\t\t!customElements ||\n\t\t\tcustomElements.get(node.tagName.toLowerCase())\n\t\t\t\t? get_setters(node).includes(prop)\n\t\t\t\t: value && typeof value === 'object')\n\t\t) {\n\t\t\t// @ts-expect-error\n\t\t\tnode[prop] = value;\n\t\t} else {\n\t\t\t// We did getters etc checks already, stringify before passing to set_attribute\n\t\t\t// to ensure it doesn't invoke the same logic again, and potentially populating\n\t\t\t// the setters cache too early.\n\t\t\tset_attribute(node, prop, value == null ? value : String(value));\n\t\t}\n\t} finally {\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t\tif (was_hydrating) {\n\t\t\tset_hydrating(true);\n\t\t}\n\t}\n}\n\n/**\n * Spreads attributes onto a DOM element, taking into account the currently set attributes\n * @param {Element & ElementCSSInlineStyle} element\n * @param {Record<string | symbol, any> | undefined} prev\n * @param {Record<string | symbol, any>} next New attributes - this function mutates this object\n * @param {string} [css_hash]\n * @param {boolean} [skip_warning]\n * @returns {Record<string, any>}\n */\nexport function set_attributes(element, prev, next, css_hash, skip_warning = false) {\n\tvar attributes = get_attributes(element);\n\n\tvar is_custom_element = attributes[IS_CUSTOM_ELEMENT];\n\tvar preserve_attribute_case = !attributes[IS_HTML];\n\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet is_hydrating_custom_element = hydrating && is_custom_element;\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(false);\n\t}\n\n\tvar current = prev || {};\n\tvar is_option_element = element.tagName === 'OPTION';\n\n\tfor (var key in prev) {\n\t\tif (!(key in next)) {\n\t\t\tnext[key] = null;\n\t\t}\n\t}\n\n\tif (next.class) {\n\t\tnext.class = clsx(next.class);\n\t} else if (css_hash || next[CLASS]) {\n\t\tnext.class = null; /* force call to set_class() */\n\t}\n\n\tif (next[STYLE]) {\n\t\tnext.style ??= null; /* force call to set_style() */\n\t}\n\n\tvar setters = get_setters(element);\n\n\t// since key is captured we use const\n\tfor (const key in next) {\n\t\t// let instead of var because referenced in a closure\n\t\tlet value = next[key];\n\n\t\t// Up here because we want to do this for the initial value, too, even if it's undefined,\n\t\t// and this wouldn't be reached in case of undefined because of the equality check below\n\t\tif (is_option_element && key === 'value' && value == null) {\n\t\t\t// The <option> element is a special case because removing the value attribute means\n\t\t\t// the value is set to the text content of the option element, and setting the value\n\t\t\t// to null or undefined means the value is set to the string \"null\" or \"undefined\".\n\t\t\t// To align with how we handle this case in non-spread-scenarios, this logic is needed.\n\t\t\t// There's a super-edge-case bug here that is left in in favor of smaller code size:\n\t\t\t// Because of the \"set missing props to null\" logic above, we can't differentiate\n\t\t\t// between a missing value and an explicitly set value of null or undefined. That means\n\t\t\t// that once set, the value attribute of an <option> element can't be removed. This is\n\t\t\t// a very rare edge case, and removing the attribute altogether isn't possible either\n\t\t\t// for the <option value={undefined}> case, so we're not losing any functionality here.\n\t\t\t// @ts-ignore\n\t\t\telement.value = element.__value = '';\n\t\t\tcurrent[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key === 'class') {\n\t\t\tvar is_html = element.namespaceURI === 'http://www.w3.org/1999/xhtml';\n\t\t\tset_class(element, is_html, value, css_hash, prev?.[CLASS], next[CLASS]);\n\t\t\tcurrent[key] = value;\n\t\t\tcurrent[CLASS] = next[CLASS];\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key === 'style') {\n\t\t\tset_style(element, value, prev?.[STYLE], next[STYLE]);\n\t\t\tcurrent[key] = value;\n\t\t\tcurrent[STYLE] = next[STYLE];\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar prev_value = current[key];\n\t\tif (value === prev_value) continue;\n\n\t\tcurrent[key] = value;\n\n\t\tvar prefix = key[0] + key[1]; // this is faster than key.slice(0, 2)\n\t\tif (prefix === '$$') continue;\n\n\t\tif (prefix === 'on') {\n\t\t\t/** @type {{ capture?: true }} */\n\t\t\tconst opts = {};\n\t\t\tconst event_handle_key = '$$' + key;\n\t\t\tlet event_name = key.slice(2);\n\t\t\tvar delegated = is_delegated(event_name);\n\n\t\t\tif (is_capture_event(event_name)) {\n\t\t\t\tevent_name = event_name.slice(0, -7);\n\t\t\t\topts.capture = true;\n\t\t\t}\n\n\t\t\tif (!delegated && prev_value) {\n\t\t\t\t// Listening to same event but different handler -> our handle function below takes care of this\n\t\t\t\t// If we were to remove and add listeners in this case, it could happen that the event is \"swallowed\"\n\t\t\t\t// (the browser seems to not know yet that a new one exists now) and doesn't reach the handler\n\t\t\t\t// https://github.com/sveltejs/svelte/issues/11903\n\t\t\t\tif (value != null) continue;\n\n\t\t\t\telement.removeEventListener(event_name, current[event_handle_key], opts);\n\t\t\t\tcurrent[event_handle_key] = null;\n\t\t\t}\n\n\t\t\tif (value != null) {\n\t\t\t\tif (!delegated) {\n\t\t\t\t\t/**\n\t\t\t\t\t * @this {any}\n\t\t\t\t\t * @param {Event} evt\n\t\t\t\t\t */\n\t\t\t\t\tfunction handle(evt) {\n\t\t\t\t\t\tcurrent[key].call(this, evt);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrent[event_handle_key] = create_event(event_name, element, handle, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\telement[`__${event_name}`] = value;\n\t\t\t\t\tdelegate([event_name]);\n\t\t\t\t}\n\t\t\t} else if (delegated) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[`__${event_name}`] = undefined;\n\t\t\t}\n\t\t} else if (key === 'style') {\n\t\t\t// avoid using the setter\n\t\t\tset_attribute(element, key, value);\n\t\t} else if (key === 'autofocus') {\n\t\t\tautofocus(/** @type {HTMLElement} */ (element), Boolean(value));\n\t\t} else if (!is_custom_element && (key === '__value' || (key === 'value' && value != null))) {\n\t\t\t// @ts-ignore We're not running this for custom elements because __value is actually\n\t\t\t// how Lit stores the current value on the element, and messing with that would break things.\n\t\t\telement.value = element.__value = value;\n\t\t} else if (key === 'selected' && is_option_element) {\n\t\t\tset_selected(/** @type {HTMLOptionElement} */ (element), value);\n\t\t} else {\n\t\t\tvar name = key;\n\t\t\tif (!preserve_attribute_case) {\n\t\t\t\tname = normalize_attribute(name);\n\t\t\t}\n\n\t\t\tvar is_default = name === 'defaultValue' || name === 'defaultChecked';\n\n\t\t\tif (value == null && !is_custom_element && !is_default) {\n\t\t\t\tattributes[key] = null;\n\n\t\t\t\tif (name === 'value' || name === 'checked') {\n\t\t\t\t\t// removing value/checked also removes defaultValue/defaultChecked — preserve\n\t\t\t\t\tlet input = /** @type {HTMLInputElement} */ (element);\n\t\t\t\t\tconst use_default = prev === undefined;\n\t\t\t\t\tif (name === 'value') {\n\t\t\t\t\t\tlet previous = input.defaultValue;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultValue = previous;\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinput.value = input.__value = use_default ? previous : null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet previous = input.defaultChecked;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultChecked = previous;\n\t\t\t\t\t\tinput.checked = use_default ? previous : false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.removeAttribute(key);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tis_default ||\n\t\t\t\t(setters.includes(name) && (is_custom_element || typeof value !== 'string'))\n\t\t\t) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[name] = value;\n\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\tset_attribute(element, name, value, skip_warning);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(true);\n\t}\n\n\treturn current;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} element\n * @param {(...expressions: any) => Record<string | symbol, any>} fn\n * @param {Array<() => any>} thunks\n * @param {string} [css_hash]\n * @param {boolean} [skip_warning]\n */\nexport function attribute_effect(\n\telement,\n\tfn,\n\tthunks = [],\n\tcss_hash,\n\tskip_warning = false,\n\td = derived\n) {\n\tconst deriveds = thunks.map(d);\n\n\t/** @type {Record<string | symbol, any> | undefined} */\n\tvar prev = undefined;\n\n\t/** @type {Record<symbol, Effect>} */\n\tvar effects = {};\n\n\tvar is_select = element.nodeName === 'SELECT';\n\tvar inited = false;\n\n\tblock(() => {\n\t\tvar next = fn(...deriveds.map(get));\n\n\t\tset_attributes(element, prev, next, css_hash, skip_warning);\n\n\t\tif (inited && is_select && 'value' in next) {\n\t\t\tselect_option(/** @type {HTMLSelectElement} */ (element), next.value, false);\n\t\t}\n\n\t\tfor (let symbol of Object.getOwnPropertySymbols(effects)) {\n\t\t\tif (!next[symbol]) destroy_effect(effects[symbol]);\n\t\t}\n\n\t\tfor (let symbol of Object.getOwnPropertySymbols(next)) {\n\t\t\tvar n = next[symbol];\n\n\t\t\tif (symbol.description === ATTACHMENT_KEY && (!prev || n !== prev[symbol])) {\n\t\t\t\tif (effects[symbol]) destroy_effect(effects[symbol]);\n\t\t\t\teffects[symbol] = branch(() => attach(element, () => n));\n\t\t\t}\n\t\t}\n\n\t\tprev = next;\n\t});\n\n\tif (is_select) {\n\t\tinit_select(\n\t\t\t/** @type {HTMLSelectElement} */ (element),\n\t\t\t() => /** @type {Record<string | symbol, any>} */ (prev).value\n\t\t);\n\t}\n\n\tinited = true;\n}\n\n/**\n *\n * @param {Element} element\n */\nfunction get_attributes(element) {\n\treturn /** @type {Record<string | symbol, unknown>} **/ (\n\t\t// @ts-expect-error\n\t\telement.__attributes ??= {\n\t\t\t[IS_CUSTOM_ELEMENT]: element.nodeName.includes('-'),\n\t\t\t[IS_HTML]: element.namespaceURI === NAMESPACE_HTML\n\t\t}\n\t);\n}\n\n/** @type {Map<string, string[]>} */\nvar setters_cache = new Map();\n\n/** @param {Element} element */\nfunction get_setters(element) {\n\tvar setters = setters_cache.get(element.nodeName);\n\tif (setters) return setters;\n\tsetters_cache.set(element.nodeName, (setters = []));\n\n\tvar descriptors;\n\tvar proto = element; // In the case of custom elements there might be setters on the instance\n\tvar element_proto = Element.prototype;\n\n\t// Stop at Element, from there on there's only unnecessary setters we're not interested in\n\t// Do not use contructor.name here as that's unreliable in some browser environments\n\twhile (element_proto !== proto) {\n\t\tdescriptors = get_descriptors(proto);\n\n\t\tfor (var key in descriptors) {\n\t\t\tif (descriptors[key].set) {\n\t\t\t\tsetters.push(key);\n\t\t\t}\n\t\t}\n\n\t\tproto = get_prototype_of(proto);\n\t}\n\n\treturn setters;\n}\n\n/**\n * @param {any} element\n * @param {string} attribute\n * @param {string} value\n */\nfunction check_src_in_dev_hydration(element, attribute, value) {\n\tif (!DEV) return;\n\tif (attribute === 'srcset' && srcset_url_equal(element, value)) return;\n\tif (src_url_equal(element.getAttribute(attribute) ?? '', value)) return;\n\n\tw.hydration_attribute_changed(\n\t\tattribute,\n\t\telement.outerHTML.replace(element.innerHTML, element.innerHTML && '...'),\n\t\tString(value)\n\t);\n}\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nfunction src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\treturn new URL(element_src, document.baseURI).href === new URL(url, document.baseURI).href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element\n * @param {string} srcset\n * @returns {boolean}\n */\nfunction srcset_url_equal(element, srcset) {\n\tvar element_urls = split_srcset(element.srcset);\n\tvar urls = split_srcset(srcset);\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n","import { teardown } from '../../../reactivity/effects.js';\nimport { get_descriptor } from '../../../../shared/utils.js';\n\n/**\n * Makes an `export`ed (non-prop) variable available on the `$$props` object\n * so that consumers can do `bind:x` on the component.\n * @template V\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {V} value\n * @returns {void}\n */\nexport function bind_prop(props, prop, value) {\n\tvar desc = get_descriptor(props, prop);\n\n\tif (desc && desc.set) {\n\t\tprops[prop] = value;\n\t\tteardown(() => {\n\t\t\tprops[prop] = null;\n\t\t});\n\t}\n}\n","import { STATE_SYMBOL } from '#client/constants';\nimport { effect, render_effect } from '../../../reactivity/effects.js';\nimport { untrack } from '../../../runtime.js';\nimport { queue_micro_task } from '../../task.js';\n\n/**\n * @param {any} bound_value\n * @param {Element} element_or_component\n * @returns {boolean}\n */\nfunction is_bound_this(bound_value, element_or_component) {\n\treturn (\n\t\tbound_value === element_or_component || bound_value?.[STATE_SYMBOL] === element_or_component\n\t);\n}\n\n/**\n * @param {any} element_or_component\n * @param {(value: unknown, ...parts: unknown[]) => void} update\n * @param {(...parts: unknown[]) => unknown} get_value\n * @param {() => unknown[]} [get_parts] Set if the this binding is used inside an each block,\n * \t\t\t\t\t\t\t\t\t\treturns all the parts of the each block context that are used in the expression\n * @returns {void}\n */\nexport function bind_this(element_or_component = {}, update, get_value, get_parts) {\n\teffect(() => {\n\t\t/** @type {unknown[]} */\n\t\tvar old_parts;\n\n\t\t/** @type {unknown[]} */\n\t\tvar parts;\n\n\t\trender_effect(() => {\n\t\t\told_parts = parts;\n\t\t\t// We only track changes to the parts, not the value itself to avoid unnecessary reruns.\n\t\t\tparts = get_parts?.() || [];\n\n\t\t\tuntrack(() => {\n\t\t\t\tif (element_or_component !== get_value(...parts)) {\n\t\t\t\t\tupdate(element_or_component, ...parts);\n\t\t\t\t\t// If this is an effect rerun (cause: each block context changes), then nullfiy the binding at\n\t\t\t\t\t// the previous position if it isn't already taken over by a different effect.\n\t\t\t\t\tif (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) {\n\t\t\t\t\t\tupdate(null, ...old_parts);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\t// We cannot use effects in the teardown phase, we we use a microtask instead.\n\t\t\tqueue_micro_task(() => {\n\t\t\t\tif (parts && is_bound_this(get_value(...parts), element_or_component)) {\n\t\t\t\t\tupdate(null, ...parts);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t});\n\n\treturn element_or_component;\n}\n","/** @import { ComponentContextLegacy } from '#client' */\nimport { run, run_all } from '../../../shared/utils.js';\nimport { component_context } from '../../context.js';\nimport { derived } from '../../reactivity/deriveds.js';\nimport { user_pre_effect, user_effect } from '../../reactivity/effects.js';\nimport { deep_read_state, get, untrack } from '../../runtime.js';\n\n/**\n * Legacy-mode only: Call `onMount` callbacks and set up `beforeUpdate`/`afterUpdate` effects\n * @param {boolean} [immutable]\n */\nexport function init(immutable = false) {\n\tconst context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\tconst callbacks = context.l.u;\n\tif (!callbacks) return;\n\n\tlet props = () => deep_read_state(context.s);\n\n\tif (immutable) {\n\t\tlet version = 0;\n\t\tlet prev = /** @type {Record<string, any>} */ ({});\n\n\t\t// In legacy immutable mode, before/afterUpdate only fire if the object identity of a prop changes\n\t\tconst d = derived(() => {\n\t\t\tlet changed = false;\n\t\t\tconst props = context.s;\n\t\t\tfor (const key in props) {\n\t\t\t\tif (props[key] !== prev[key]) {\n\t\t\t\t\tprev[key] = props[key];\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (changed) version++;\n\t\t\treturn version;\n\t\t});\n\n\t\tprops = () => get(d);\n\t}\n\n\t// beforeUpdate\n\tif (callbacks.b.length) {\n\t\tuser_pre_effect(() => {\n\t\t\tobserve_all(context, props);\n\t\t\trun_all(callbacks.b);\n\t\t});\n\t}\n\n\t// onMount (must run before afterUpdate)\n\tuser_effect(() => {\n\t\tconst fns = untrack(() => callbacks.m.map(run));\n\t\treturn () => {\n\t\t\tfor (const fn of fns) {\n\t\t\t\tif (typeof fn === 'function') {\n\t\t\t\t\tfn();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n\n\t// afterUpdate\n\tif (callbacks.a.length) {\n\t\tuser_effect(() => {\n\t\t\tobserve_all(context, props);\n\t\t\trun_all(callbacks.a);\n\t\t});\n\t}\n}\n\n/**\n * Invoke the getter of all signals associated with a component\n * so they can be registered to the effect this function is called in.\n * @param {ComponentContextLegacy} context\n * @param {(() => void)} props\n */\nfunction observe_all(context, props) {\n\tif (context.l.s) {\n\t\tfor (const signal of context.l.s) get(signal);\n\t}\n\n\tprops();\n}\n","/** @import { Readable } from './public' */\nimport { untrack } from '../index-client.js';\nimport { noop } from '../internal/shared/utils.js';\n\n/**\n * @template T\n * @param {Readable<T> | null | undefined} store\n * @param {(value: T) => void} run\n * @param {(value: T) => void} [invalidate]\n * @returns {() => void}\n */\nexport function subscribe_to_store(store, run, invalidate) {\n\tif (store == null) {\n\t\t// @ts-expect-error\n\t\trun(undefined);\n\n\t\t// @ts-expect-error\n\t\tif (invalidate) invalidate(undefined);\n\n\t\treturn noop;\n\t}\n\n\t// Svelte store takes a private second argument\n\t// StartStopNotifier could mutate state, and we want to silence the corresponding validation error\n\tconst unsub = untrack(() =>\n\t\tstore.subscribe(\n\t\t\trun,\n\t\t\t// @ts-expect-error\n\t\t\tinvalidate\n\t\t)\n\t);\n\n\t// Also support RxJS\n\t// @ts-expect-error TODO fix this in the types?\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n","/** @import { Readable, StartStopNotifier, Subscriber, Unsubscriber, Updater, Writable } from '../public.js' */\n/** @import { Stores, StoresValues, SubscribeInvalidateTuple } from '../private.js' */\nimport { noop, run_all } from '../../internal/shared/utils.js';\nimport { safe_not_equal } from '../../internal/client/reactivity/equality.js';\nimport { subscribe_to_store } from '../utils.js';\n\n/**\n * @type {Array<SubscribeInvalidateTuple<any> | any>}\n */\nconst subscriber_queue = [];\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n *\n * @template T\n * @param {T} [value] initial value\n * @param {StartStopNotifier<T>} [start]\n * @returns {Readable<T>}\n */\nexport function readable(value, start) {\n\treturn {\n\t\tsubscribe: writable(value, start).subscribe\n\t};\n}\n\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n *\n * @template T\n * @param {T} [value] initial value\n * @param {StartStopNotifier<T>} [start]\n * @returns {Writable<T>}\n */\nexport function writable(value, start = noop) {\n\t/** @type {Unsubscriber | null} */\n\tlet stop = null;\n\n\t/** @type {Set<SubscribeInvalidateTuple<T>>} */\n\tconst subscribers = new Set();\n\n\t/**\n\t * @param {T} new_value\n\t * @returns {void}\n\t */\n\tfunction set(new_value) {\n\t\tif (safe_not_equal(value, new_value)) {\n\t\t\tvalue = new_value;\n\t\t\tif (stop) {\n\t\t\t\t// store is ready\n\t\t\t\tconst run_queue = !subscriber_queue.length;\n\t\t\t\tfor (const subscriber of subscribers) {\n\t\t\t\t\tsubscriber[1]();\n\t\t\t\t\tsubscriber_queue.push(subscriber, value);\n\t\t\t\t}\n\t\t\t\tif (run_queue) {\n\t\t\t\t\tfor (let i = 0; i < subscriber_queue.length; i += 2) {\n\t\t\t\t\t\tsubscriber_queue[i][0](subscriber_queue[i + 1]);\n\t\t\t\t\t}\n\t\t\t\t\tsubscriber_queue.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {Updater<T>} fn\n\t * @returns {void}\n\t */\n\tfunction update(fn) {\n\t\tset(fn(/** @type {T} */ (value)));\n\t}\n\n\t/**\n\t * @param {Subscriber<T>} run\n\t * @param {() => void} [invalidate]\n\t * @returns {Unsubscriber}\n\t */\n\tfunction subscribe(run, invalidate = noop) {\n\t\t/** @type {SubscribeInvalidateTuple<T>} */\n\t\tconst subscriber = [run, invalidate];\n\t\tsubscribers.add(subscriber);\n\t\tif (subscribers.size === 1) {\n\t\t\tstop = start(set, update) || noop;\n\t\t}\n\t\trun(/** @type {T} */ (value));\n\t\treturn () => {\n\t\t\tsubscribers.delete(subscriber);\n\t\t\tif (subscribers.size === 0 && stop) {\n\t\t\t\tstop();\n\t\t\t\tstop = null;\n\t\t\t}\n\t\t};\n\t}\n\treturn { set, update, subscribe };\n}\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * @template {Stores} S\n * @template T\n * @overload\n * @param {S} stores\n * @param {(values: StoresValues<S>, set: (value: T) => void, update: (fn: Updater<T>) => void) => Unsubscriber | void} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * @template {Stores} S\n * @template T\n * @overload\n * @param {S} stores\n * @param {(values: StoresValues<S>) => T} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\n/**\n * @template {Stores} S\n * @template T\n * @param {S} stores\n * @param {Function} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\nexport function derived(stores, fn, initial_value) {\n\tconst single = !Array.isArray(stores);\n\t/** @type {Array<Readable<any>>} */\n\tconst stores_array = single ? [stores] : stores;\n\tif (!stores_array.every(Boolean)) {\n\t\tthrow new Error('derived() expects stores as input, got a falsy value');\n\t}\n\tconst auto = fn.length < 2;\n\treturn readable(initial_value, (set, update) => {\n\t\tlet started = false;\n\t\t/** @type {T[]} */\n\t\tconst values = [];\n\t\tlet pending = 0;\n\t\tlet cleanup = noop;\n\t\tconst sync = () => {\n\t\t\tif (pending) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcleanup();\n\t\t\tconst result = fn(single ? values[0] : values, set, update);\n\t\t\tif (auto) {\n\t\t\t\tset(result);\n\t\t\t} else {\n\t\t\t\tcleanup = typeof result === 'function' ? result : noop;\n\t\t\t}\n\t\t};\n\t\tconst unsubscribers = stores_array.map((store, i) =>\n\t\t\tsubscribe_to_store(\n\t\t\t\tstore,\n\t\t\t\t(value) => {\n\t\t\t\t\tvalues[i] = value;\n\t\t\t\t\tpending &= ~(1 << i);\n\t\t\t\t\tif (started) {\n\t\t\t\t\t\tsync();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tpending |= 1 << i;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tstarted = true;\n\t\tsync();\n\t\treturn function stop() {\n\t\t\trun_all(unsubscribers);\n\t\t\tcleanup();\n\t\t\t// We need to set this to false because callbacks can still happen despite having unsubscribed:\n\t\t\t// Callbacks might already be placed in the queue which doesn't know it should no longer\n\t\t\t// invoke this derived store.\n\t\t\tstarted = false;\n\t\t};\n\t});\n}\n\n/**\n * Takes a store and returns a new one derived from the old one that is readable.\n *\n * @template T\n * @param {Readable<T>} store - store to make readonly\n * @returns {Readable<T>}\n */\nexport function readonly(store) {\n\treturn {\n\t\t// @ts-expect-error TODO i suspect the bind is unnecessary\n\t\tsubscribe: store.subscribe.bind(store)\n\t};\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * @template T\n * @param {Readable<T>} store\n * @returns {T}\n */\nexport function get(store) {\n\tlet value;\n\tsubscribe_to_store(store, (_) => (value = _))();\n\t// @ts-expect-error\n\treturn value;\n}\n","/** @import { StoreReferencesContainer } from '#client' */\n/** @import { Store } from '#shared' */\nimport { subscribe_to_store } from '../../../store/utils.js';\nimport { get as get_store } from '../../../store/shared/index.js';\nimport { define_property, noop } from '../../shared/utils.js';\nimport { get } from '../runtime.js';\nimport { teardown } from './effects.js';\nimport { mutable_source, set } from './sources.js';\n\n/**\n * Whether or not the prop currently being read is a store binding, as in\n * `<Child bind:x={$y} />`. If it is, we treat the prop as mutable even in\n * runes mode, and skip `binding_property_non_reactive` validation\n */\nlet is_store_binding = false;\n\nlet IS_UNMOUNTED = Symbol();\n\n/**\n * Gets the current value of a store. If the store isn't subscribed to yet, it will create a proxy\n * signal that will be updated when the store is. The store references container is needed to\n * track reassignments to stores and to track the correct component context.\n * @template V\n * @param {Store<V> | null | undefined} store\n * @param {string} store_name\n * @param {StoreReferencesContainer} stores\n * @returns {V}\n */\nexport function store_get(store, store_name, stores) {\n\tconst entry = (stores[store_name] ??= {\n\t\tstore: null,\n\t\tsource: mutable_source(undefined),\n\t\tunsubscribe: noop\n\t});\n\n\t// if the component that setup this is already unmounted we don't want to register a subscription\n\tif (entry.store !== store && !(IS_UNMOUNTED in stores)) {\n\t\tentry.unsubscribe();\n\t\tentry.store = store ?? null;\n\n\t\tif (store == null) {\n\t\t\tentry.source.v = undefined; // see synchronous callback comment below\n\t\t\tentry.unsubscribe = noop;\n\t\t} else {\n\t\t\tvar is_synchronous_callback = true;\n\n\t\t\tentry.unsubscribe = subscribe_to_store(store, (v) => {\n\t\t\t\tif (is_synchronous_callback) {\n\t\t\t\t\t// If the first updates to the store value (possibly multiple of them) are synchronously\n\t\t\t\t\t// inside a derived, we will hit the `state_unsafe_mutation` error if we `set` the value\n\t\t\t\t\tentry.source.v = v;\n\t\t\t\t} else {\n\t\t\t\t\tset(entry.source, v);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tis_synchronous_callback = false;\n\t\t}\n\t}\n\n\t// if the component that setup this stores is already unmounted the source will be out of sync\n\t// so we just use the `get` for the stores, less performant but it avoids to create a memory leak\n\t// and it will keep the value consistent\n\tif (store && IS_UNMOUNTED in stores) {\n\t\treturn get_store(store);\n\t}\n\n\treturn get(entry.source);\n}\n\n/**\n * Unsubscribe from a store if it's not the same as the one in the store references container.\n * We need this in addition to `store_get` because someone could unsubscribe from a store but\n * then never subscribe to the new one (if any), causing the subscription to stay open wrongfully.\n * @param {Store<any> | null | undefined} store\n * @param {string} store_name\n * @param {StoreReferencesContainer} stores\n */\nexport function store_unsub(store, store_name, stores) {\n\t/** @type {StoreReferencesContainer[''] | undefined} */\n\tlet entry = stores[store_name];\n\n\tif (entry && entry.store !== store) {\n\t\t// Don't reset store yet, so that store_get above can resubscribe to new store if necessary\n\t\tentry.unsubscribe();\n\t\tentry.unsubscribe = noop;\n\t}\n\n\treturn store;\n}\n\n/**\n * Sets the new value of a store and returns that value.\n * @template V\n * @param {Store<V>} store\n * @param {V} value\n * @returns {V}\n */\nexport function store_set(store, value) {\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * @param {StoreReferencesContainer} stores\n * @param {string} store_name\n */\nexport function invalidate_store(stores, store_name) {\n\tvar entry = stores[store_name];\n\tif (entry.store !== null) {\n\t\tstore_set(entry.store, entry.source.v);\n\t}\n}\n\n/**\n * Unsubscribes from all auto-subscribed stores on destroy\n * @returns {[StoreReferencesContainer, ()=>void]}\n */\nexport function setup_stores() {\n\t/** @type {StoreReferencesContainer} */\n\tconst stores = {};\n\n\tfunction cleanup() {\n\t\tteardown(() => {\n\t\t\tfor (var store_name in stores) {\n\t\t\t\tconst ref = stores[store_name];\n\t\t\t\tref.unsubscribe();\n\t\t\t}\n\t\t\tdefine_property(stores, IS_UNMOUNTED, {\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: true\n\t\t\t});\n\t\t});\n\t}\n\n\treturn [stores, cleanup];\n}\n\n/**\n * Updates a store with a new value.\n * @param {Store<V>} store the store to update\n * @param {any} expression the expression that mutates the store\n * @param {V} new_value the new store value\n * @template V\n */\nexport function store_mutate(store, expression, new_value) {\n\tstore.set(new_value);\n\treturn expression;\n}\n\n/**\n * @param {Store<number>} store\n * @param {number} store_value\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_store(store, store_value, d = 1) {\n\tstore.set(store_value + d);\n\treturn store_value;\n}\n\n/**\n * @param {Store<number>} store\n * @param {number} store_value\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_store(store, store_value, d = 1) {\n\tconst value = store_value + d;\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * Called inside prop getters to communicate that the prop is a store binding\n */\nexport function mark_store_binding() {\n\tis_store_binding = true;\n}\n\n/**\n * Returns a tuple that indicates whether `fn()` reads a prop that is a store binding.\n * Used to prevent `binding_property_non_reactive` validation false positives and\n * ensure that these props are treated as mutable even in runes mode\n * @template T\n * @param {() => T} fn\n * @returns {[T, boolean]}\n */\nexport function capture_store_binding(fn) {\n\tvar previous_is_store_binding = is_store_binding;\n\n\ttry {\n\t\tis_store_binding = false;\n\t\treturn [fn(), is_store_binding];\n\t} finally {\n\t\tis_store_binding = previous_is_store_binding;\n\t}\n}\n","/** @import { Derived, 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 { mutable_source, set, source, update } from './sources.js';\nimport { derived, derived_safe_equal } from './deriveds.js';\nimport { get, captured_signals, untrack } from '../runtime.js';\nimport { safe_equals } from './equality.js';\nimport * as e from '../errors.js';\nimport { LEGACY_DERIVED_PROP, 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> }>}}\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\t// Handle props that can temporarily get out of sync with the parent\n\t\t\t/** @type {Record<string, (v?: unknown) => unknown>} */\n\t\t\ttarget.special[key] = prop(\n\t\t\t\t{\n\t\t\t\t\tget [key]() {\n\t\t\t\t\t\treturn target.props[key];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t/** @type {string} */ (key),\n\t\t\t\tPROPS_IS_UPDATED\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({ props, exclude, special: {}, version: source(0) }, legacy_rest_props_handler);\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 * @template {Record<string | symbol, unknown>} T\n * @type {ProxyHandler<{ props: Array<T | (() => T)> }>}}\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 * @param {Derived} current_value\n * @returns {boolean}\n */\nfunction has_destroyed_component_ctx(current_value) {\n\treturn current_value.ctx?.d ?? false;\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 immutable = (flags & PROPS_IS_IMMUTABLE) !== 0;\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\tvar is_store_sub = false;\n\tvar prop_value;\n\n\tif (bindable) {\n\t\t[prop_value, is_store_sub] = capture_store_binding(() => /** @type {V} */ (props[key]));\n\t} else {\n\t\tprop_value = /** @type {V} */ (props[key]);\n\t}\n\n\t// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})`\n\t// or `createClassComponent(Component, props)`\n\tvar is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;\n\n\tvar setter =\n\t\t(bindable &&\n\t\t\t(get_descriptor(props, key)?.set ??\n\t\t\t\t(is_entry_props && key in props && ((v) => (props[key] = v))))) ||\n\t\tundefined;\n\n\tvar fallback_value = /** @type {V} */ (fallback);\n\tvar fallback_dirty = true;\n\tvar fallback_used = false;\n\n\tvar get_fallback = () => {\n\t\tfallback_used = true;\n\t\tif (fallback_dirty) {\n\t\t\tfallback_dirty = false;\n\t\t\tif (lazy) {\n\t\t\t\tfallback_value = untrack(/** @type {() => V} */ (fallback));\n\t\t\t} else {\n\t\t\t\tfallback_value = /** @type {V} */ (fallback);\n\t\t\t}\n\t\t}\n\n\t\treturn fallback_value;\n\t};\n\n\tif (prop_value === undefined && fallback !== undefined) {\n\t\tif (setter && runes) {\n\t\t\te.props_invalid_value(key);\n\t\t}\n\n\t\tprop_value = get_fallback();\n\t\tif (setter) setter(prop_value);\n\t}\n\n\t/** @type {() => V} */\n\tvar getter;\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\tfallback_used = false;\n\t\t\treturn value;\n\t\t};\n\t} else {\n\t\t// Svelte 4 did not trigger updates when a primitive value was updated to the same value.\n\t\t// Replicate that behavior through using a derived\n\t\tvar derived_getter = (immutable ? derived : derived_safe_equal)(\n\t\t\t() => /** @type {V} */ (props[key])\n\t\t);\n\t\tderived_getter.f |= LEGACY_DERIVED_PROP;\n\t\tgetter = () => {\n\t\t\tvar value = get(derived_getter);\n\t\t\tif (value !== undefined) fallback_value = /** @type {V} */ (undefined);\n\t\t\treturn value === undefined ? fallback_value : value;\n\t\t};\n\t}\n\n\t// easy mode — prop is never written to\n\tif ((flags & PROPS_IS_UPDATED) === 0 && runes) {\n\t\treturn getter;\n\t}\n\n\t// intermediate mode — prop is written to, but the parent component had\n\t// `bind:foo` which means we can just call `$$props.foo = value` directly\n\tif (setter) {\n\t\tvar legacy_parent = props.$$legacy;\n\t\treturn function (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t\tif (arguments.length > 0) {\n\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// In that case the state proxy (if it exists) should take care of the notification.\n\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// has changed because the parent will not be able to detect the change otherwise.\n\t\t\t\tif (!runes || !mutation || legacy_parent || is_store_sub) {\n\t\t\t\t\t/** @type {Function} */ (setter)(mutation ? getter() : value);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t} else {\n\t\t\t\treturn getter();\n\t\t\t}\n\t\t};\n\t}\n\n\t// hard mode. this is where it gets ugly — the value in the child should\n\t// synchronize with the parent, but it should also be possible to temporarily\n\t// set the value to something else locally.\n\tvar from_child = false;\n\tvar was_from_child = false;\n\n\t// The derived returns the current value. The underlying mutable\n\t// source is written to from various places to persist this value.\n\tvar inner_current_value = mutable_source(prop_value);\n\tvar current_value = derived(() => {\n\t\tvar parent_value = getter();\n\t\tvar child_value = get(inner_current_value);\n\n\t\tif (from_child) {\n\t\t\tfrom_child = false;\n\t\t\twas_from_child = true;\n\t\t\treturn child_value;\n\t\t}\n\n\t\twas_from_child = false;\n\t\treturn (inner_current_value.v = parent_value);\n\t});\n\n\t// Ensure we eagerly capture the initial value if it's bindable\n\tif (bindable) {\n\t\tget(current_value);\n\t}\n\n\tif (!immutable) current_value.equals = safe_equals;\n\n\treturn function (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t// legacy nonsense — need to ensure the source is invalidated when necessary\n\t\t// also needed for when handling inspect logic so we can inspect the correct source signal\n\t\tif (captured_signals !== null) {\n\t\t\t// set this so that we don't reset to the parent value if `d`\n\t\t\t// is invalidated because of `invalidate_inner_signals` (rather\n\t\t\t// than because the parent or child value changed)\n\t\t\tfrom_child = was_from_child;\n\t\t\t// invoke getters so that signals are picked up by `invalidate_inner_signals`\n\t\t\tgetter();\n\t\t\tget(inner_current_value);\n\t\t}\n\n\t\tif (arguments.length > 0) {\n\t\t\tconst new_value = mutation ? get(current_value) : runes && bindable ? proxy(value) : value;\n\n\t\t\tif (!current_value.equals(new_value)) {\n\t\t\t\tfrom_child = true;\n\t\t\t\tset(inner_current_value, new_value);\n\t\t\t\t// To ensure the fallback value is consistent when used with proxies, we\n\t\t\t\t// update the local fallback_value, but only if the fallback is actively used\n\t\t\t\tif (fallback_used && fallback_value !== undefined) {\n\t\t\t\t\tfallback_value = new_value;\n\t\t\t\t}\n\n\t\t\t\tif (has_destroyed_component_ctx(current_value)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\tuntrack(() => get(current_value)); // force a synchronisation immediately\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\tif (has_destroyed_component_ctx(current_value)) {\n\t\t\treturn current_value.v;\n\t\t}\n\n\t\treturn get(current_value);\n\t};\n}\n","/** @import { ComponentContext, ComponentContextLegacy } from '#client' */\n/** @import { EventDispatcher } from './index.js' */\n/** @import { NotFunction } from './internal/types.js' */\nimport { 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 { lifecycle_outside_component } from './internal/shared/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 * `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\tlifecycle_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\tlifecycle_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\tlifecycle_outside_component('createEventDispatcher');\n\t}\n\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 {any} */ (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\tlifecycle_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\tlifecycle_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 } from './internal/client/runtime.js';\nexport { getContext, getAllContexts, hasContext, setContext } from './internal/client/context.js';\nexport { hydrate, mount, unmount } from './internal/client/render.js';\nexport { tick, untrack } from './internal/client/runtime.js';\nexport { createRawSnippet } from './internal/client/dom/blocks/snippet.js';\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n * @type {string}\n */\nexport const VERSION = '5.33.14';\nexport const PUBLIC_VERSION = '5';\n","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","/** @import { Source } from '#client' */\nimport { set } from '../internal/client/reactivity/sources.js';\n\n/** @param {Source<number>} source */\nexport function increment(source) {\n\tset(source, source.v + 1);\n}\n","\nexport function keyEnter(fn) {\n return function (e) {\n return e.key === 'Enter' || e.key === ' ' && !e.preventDefault() // prevent page scroll down\n ? fn.call(this, e)\n : undefined;\n };\n}\n","\nexport function setContent(node, content) {\n let actions = {\n update(content) {\n if (typeof content == 'string') {\n node.innerText = content;\n } else if (content?.domNodes) {\n node.replaceChildren(...content.domNodes);\n } else if (content?.html) {\n node.innerHTML = content.html;\n }\n }\n };\n actions.update(content);\n\n return actions;\n}\n\n/** Dispatch event occurred outside of node */\nexport function outsideEvent(node, type) {\n\n const handlePointerDown = jsEvent => {\n if (node && !node.contains(jsEvent.target)) {\n node.dispatchEvent(\n new CustomEvent(type + 'outside', {detail: {jsEvent}})\n );\n }\n };\n\n document.addEventListener(type, handlePointerDown, true);\n\n return {\n destroy() {\n document.removeEventListener(type, handlePointerDown, true);\n }\n };\n}\n\nexport function observeResize(node, callback) {\n let resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n callback(entry);\n }\n });\n resizeObserver.observe(node);\n\n return {\n destroy() {\n resizeObserver.unobserve(node);\n }\n };\n}\n","export const DAY_IN_SECONDS = 86400;\n\nexport function createDate(input = undefined) {\n if (input !== undefined) {\n return input instanceof Date ? _fromLocalDate(input) : _fromISOString(input);\n }\n\n return _fromLocalDate(new Date());\n}\n\nexport function createDuration(input) {\n if (typeof input === 'number') {\n input = {seconds: input};\n } else if (typeof input === 'string') {\n // Expected format hh[:mm[:ss]]\n let seconds = 0, exp = 2;\n for (let part of input.split(':', 3)) {\n seconds += parseInt(part, 10) * Math.pow(60, exp--);\n }\n input = {seconds};\n } else if (input instanceof Date) {\n input = {hours: input.getUTCHours(), minutes: input.getUTCMinutes(), seconds: input.getUTCSeconds()};\n }\n\n let weeks = input.weeks || input.week || 0;\n\n return {\n years: input.years || input.year || 0,\n months: input.months || input.month || 0,\n days: weeks * 7 + (input.days || input.day || 0),\n seconds: (input.hours || input.hour || 0) * 60 * 60 +\n (input.minutes || input.minute || 0) * 60 +\n (input.seconds || input.second || 0),\n inWeeks: !!weeks\n };\n}\n\nexport function cloneDate(date) {\n return new Date(date.getTime());\n}\n\nexport function addDuration(date, duration, x = 1) {\n date.setUTCFullYear(date.getUTCFullYear() + x * duration.years);\n let month = date.getUTCMonth() + x * duration.months;\n date.setUTCMonth(month);\n month %= 12;\n if (month < 0) {\n month += 12;\n }\n while (date.getUTCMonth() !== month) {\n subtractDay(date);\n }\n date.setUTCDate(date.getUTCDate() + x * duration.days);\n date.setUTCSeconds(date.getUTCSeconds() + x * duration.seconds);\n\n return date;\n}\n\nexport function subtractDuration(date, duration, x = 1) {\n return addDuration(date, duration, -x);\n}\n\nexport function addDay(date, x = 1) {\n date.setUTCDate(date.getUTCDate() + x);\n\n return date;\n}\n\nexport function subtractDay(date, x = 1) {\n return addDay(date, -x);\n}\n\nexport function setMidnight(date) {\n date.setUTCHours(0, 0, 0, 0);\n\n return date;\n}\n\nexport function toLocalDate(date) {\n return new Date(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n );\n}\n\nexport function toISOString(date, len = 19) {\n return date.toISOString().substring(0, len);\n}\n\nexport function datesEqual(date1, ...dates2) {\n return dates2.every(date2 => date1.getTime() === date2.getTime());\n}\n\nexport function nextClosestDay(date, day) {\n let diff = day - date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + (diff >= 0 ? diff : diff + 7));\n return date;\n}\n\nexport function prevClosestDay(date, day) {\n let diff = day - date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + (diff <= 0 ? diff : diff - 7));\n return date;\n}\n\n/**\n * Check whether given date is string which contains no time part\n */\nexport function noTimePart(date) {\n return typeof date === 'string' && date.length <= 10;\n}\n\n/**\n * Copy time from one date to another\n */\nexport function copyTime(toDate, fromDate) {\n toDate.setUTCHours(fromDate.getUTCHours(), fromDate.getUTCMinutes(), fromDate.getUTCSeconds(), 0);\n\n return toDate;\n}\n\n/**\n * Get duration value in seconds\n */\nexport function toSeconds(duration) {\n return duration.seconds;\n}\n\n/**\n * Move the date forward (when pressing the next button)\n */\nexport function nextDate(date, duration) {\n addDuration(date, duration);\n return date;\n}\n\n/**\n * Move the date backward (when pressing the prev button)\n */\nexport function prevDate(date, duration, hiddenDays) {\n subtractDuration(date, duration);\n if (hiddenDays.length && hiddenDays.length < 7) {\n while (hiddenDays.includes(date.getUTCDay())) {\n subtractDay(date);\n }\n }\n return date;\n}\n\n/**\n * For a given date, get its week number\n * - ISO @see https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php\n * - Western @see https://en.wikipedia.org/wiki/Week#Other_week_numbering_systems\n */\nexport function getWeekNumber(date, firstDay) {\n // Copy date so don't modify original\n date = cloneDate(date);\n if (firstDay == 0) { // Western\n // Set to nearest Saturday: current date + 6 - current day number\n date.setUTCDate(date.getUTCDate() + 6 - date.getUTCDay());\n } else { // ISO\n // Set to nearest Thursday: current date + 4 - current day number\n // Make Sunday's day number 7\n date.setUTCDate(date.getUTCDate() + 4 - (date.getUTCDay() || 7));\n }\n // Get first day of year\n let yearStart = new Date(Date.UTC(date.getUTCFullYear(),0,1));\n // Calculate full weeks to `date`\n return Math.ceil((((date - yearStart) / 1000 / DAY_IN_SECONDS) + 1) / 7);\n}\n\n/**\n * Private functions\n */\n\nfunction _fromLocalDate(date) {\n return new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n ));\n}\n\nfunction _fromISOString(str) {\n const parts = str.match(/\\d+/g);\n return new Date(Date.UTC(\n Number(parts[0]),\n Number(parts[1]) - 1,\n Number(parts[2]),\n Number(parts[3] || 0),\n Number(parts[4] || 0),\n Number(parts[5] || 0)\n ));\n}\n","export function assign(...args) {\n return Object.assign(...args);\n}\n\nexport function keys(object) {\n return Object.keys(object);\n}\n\nexport function entries(object) {\n return Object.entries(object);\n}\n\nexport function floor(value) {\n return Math.floor(value);\n}\n\nexport function ceil(value) {\n return Math.ceil(value);\n}\n\nexport function min(...args) {\n return Math.min(...args);\n}\n\nexport function max(...args) {\n return Math.max(...args);\n}\n\nexport function symbol() {\n return Symbol('ec');\n}\n\nexport function isArray(value) {\n return Array.isArray(value);\n}\n\nexport function isFunction(value) {\n return typeof value === 'function';\n}\n\nexport function run(fn) {\n return fn();\n}\n\nexport function runAll(fns) {\n fns.forEach(run);\n}\n\nexport function noop() {}\n\nexport const identity = (x) => x;\n\nexport function stopPropagation(fn) {\n return function (event) {\n event.stopPropagation();\n if (fn) {\n fn.call(this, event);\n }\n };\n}\n","import {runAll} from './utils.js';\n\nexport function debounce(fn, handle, queueStore) {\n queueStore.update(queue => queue.set(handle, fn));\n}\n\nexport function flushDebounce(queue) {\n runAll(queue);\n queue.clear();\n}\n\nexport function task(fn, handle, tasks) {\n handle ??= fn;\n if (!tasks.has(handle)) {\n tasks.set(handle, setTimeout(() => {\n tasks.delete(handle);\n fn();\n }));\n }\n}\n","import {symbol} from './utils.js';\n\nlet payloadProp = symbol();\nexport function setPayload(obj, payload) {\n obj[payloadProp] = payload;\n}\n\nexport function hasPayload(obj) {\n return !!obj?.[payloadProp];\n}\n\nexport function getPayload(obj) {\n return obj[payloadProp];\n}\n","import {hasPayload} from './payload.js';\n\nexport function createElement(tag, className, content, attrs = []) {\n let el = document.createElement(tag);\n el.className = className;\n if (typeof content == 'string') {\n el.innerText = content;\n } else if (content.domNodes) {\n el.replaceChildren(...content.domNodes);\n } else if (content.html) {\n el.innerHTML = content.html;\n }\n for (let attr of attrs) {\n el.setAttribute(...attr);\n }\n return el;\n}\n\nexport function hasYScroll(el) {\n return el.scrollHeight > el.clientHeight;\n}\n\nexport function rect(el) {\n return el.getBoundingClientRect();\n}\n\nexport function ancestor(el, up) {\n while (up--) {\n el = el.parentElement;\n }\n return el;\n}\n\nexport function height(el) {\n return rect(el).height;\n}\n\nexport function getElementWithPayload(x, y, root = document, processed = []) {\n processed.push(root);\n for (let el of root.elementsFromPoint(x, y)) {\n if (hasPayload(el)) {\n return el;\n }\n /** @see https://github.com/vkurko/calendar/issues/142 */\n if (el.shadowRoot && !processed.includes(el.shadowRoot)) {\n let shadowEl = getElementWithPayload(x, y, el.shadowRoot, processed);\n if (shadowEl) {\n return shadowEl;\n }\n }\n }\n return null;\n}\n\nexport function listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\n","import {assign} from './utils.js';\nimport {toLocalDate} from './date.js';\n\nexport function createView(view, _viewTitle, _currentRange, _activeRange) {\n return {\n type: view,\n title: _viewTitle,\n currentStart: _currentRange.start,\n currentEnd: _currentRange.end,\n activeStart: _activeRange.start,\n activeEnd: _activeRange.end,\n calendar: undefined\n };\n}\n\nexport function toViewWithLocalDates(view) {\n view = assign({}, view);\n view.currentStart = toLocalDate(view.currentStart);\n view.currentEnd = toLocalDate(view.currentEnd);\n view.activeStart = toLocalDate(view.activeStart);\n view.activeEnd = toLocalDate(view.activeEnd);\n\n return view;\n}\n\nexport function listView(view) {\n return view.startsWith('list');\n}\n\nexport function timelineView(view) {\n return view.includes('Timeline');\n}\n","import {addDay, addDuration, datesEqual, createDate, cloneDate, setMidnight, toLocalDate, toISOString, noTimePart, copyTime} from './date.js';\nimport {createElement} from './dom.js';\nimport {assign, isArray, isFunction} from './utils.js';\nimport {toViewWithLocalDates} from './view.js';\n\nlet eventId = 1;\nexport function createEvents(input) {\n return input.map(event => {\n let result = {\n id: 'id' in event ? String(event.id) : `{generated-${eventId++}}`,\n resourceIds: toArrayProp(event, 'resourceId').map(String),\n allDay: event.allDay ?? (noTimePart(event.start) && noTimePart(event.end)),\n start: createDate(event.start),\n end: createDate(event.end),\n title: event.title ?? '',\n editable: event.editable,\n startEditable: event.startEditable,\n durationEditable: event.durationEditable,\n display: event.display ?? 'auto',\n extendedProps: event.extendedProps ?? {},\n backgroundColor: event.backgroundColor ?? event.color,\n textColor: event.textColor,\n classNames: toArrayProp(event, 'className'),\n styles: toArrayProp(event, 'style')\n };\n\n if (result.allDay) {\n // Make sure all-day events start and end at midnight\n setMidnight(result.start);\n let end = cloneDate(result.end);\n setMidnight(result.end);\n if (\n !datesEqual(result.end, end) ||\n datesEqual(result.end, result.start) /** @see https://github.com/vkurko/calendar/issues/50 */\n ) {\n addDay(result.end);\n }\n }\n\n return result;\n });\n}\n\nfunction toArrayProp(input, propName) {\n let result = input[propName + 's'] ?? input[propName] ?? [];\n return isArray(result) ? result : [result];\n}\n\nexport function createEventSources(input) {\n return input.map(source => ({\n events: source.events,\n url: (source.url && source.url.trimEnd('&')) || '',\n method: (source.method && source.method.toUpperCase()) || 'GET',\n extraParams: source.extraParams || {}\n }));\n}\n\nexport function createEventChunk(event, start, end) {\n let chunk = {\n start: event.start > start ? event.start : start,\n end: event.end < end ? event.end : end,\n event\n };\n chunk.zeroDuration = datesEqual(chunk.start, chunk.end);\n\n return chunk;\n}\n\nexport function sortEventChunks(chunks) {\n // Sort by start date (all-day events always on top)\n chunks.sort((a, b) => a.start - b.start || b.event.allDay - a.event.allDay);\n}\n\nexport function createEventContent(chunk, displayEventEnd, eventContent, theme, _intlEventTime, _view) {\n let timeText = _intlEventTime.formatRange(\n chunk.start,\n displayEventEnd && chunk.event.display !== 'pointer' && !chunk.zeroDuration\n ? copyTime(cloneDate(chunk.start), chunk.end) // make Intl.formatRange output only the time part\n : chunk.start\n );\n let content;\n\n if (eventContent) {\n content = isFunction(eventContent)\n ? eventContent({\n event: toEventWithLocalDates(chunk.event),\n timeText,\n view: toViewWithLocalDates(_view)\n })\n : eventContent;\n }\n\n if (content === undefined) {\n let domNodes;\n switch (chunk.event.display) {\n case 'background':\n domNodes = [];\n break;\n case 'pointer':\n domNodes = [createTimeElement(timeText, chunk, theme)];\n break;\n default:\n domNodes = [\n ...chunk.event.allDay ? [] : [createTimeElement(timeText, chunk, theme)],\n createElement('h4', theme.eventTitle, chunk.event.title)\n ];\n }\n content = {domNodes};\n }\n\n return [timeText, content];\n}\n\nfunction createTimeElement(timeText, chunk, theme) {\n return createElement(\n 'time',\n theme.eventTime,\n timeText,\n [['datetime', toISOString(chunk.start)]]\n );\n}\n\nexport function createEventClasses(eventClassNames, event, _view) {\n let result = event.classNames;\n if (eventClassNames) {\n if (isFunction(eventClassNames)) {\n eventClassNames = eventClassNames({\n event: toEventWithLocalDates(event),\n view: toViewWithLocalDates(_view)\n });\n }\n result = [\n ...isArray(eventClassNames) ? eventClassNames : [eventClassNames],\n ...result\n ];\n }\n return result;\n}\n\nexport function toEventWithLocalDates(event) {\n return _cloneEvent(event, toLocalDate);\n}\n\nexport function cloneEvent(event) {\n return _cloneEvent(event, cloneDate);\n}\n\nfunction _cloneEvent(event, dateFn) {\n event = assign({}, event);\n event.start = dateFn(event.start);\n event.end = dateFn(event.end);\n\n return event;\n}\n\n/**\n * Prepare event chunks for month view and all-day slot in week view\n */\nexport function prepareEventChunks(chunks, hiddenDays) {\n let longChunks = {};\n\n if (chunks.length) {\n sortEventChunks(chunks);\n\n let prevChunk;\n for (let chunk of chunks) {\n let dates = [];\n let date = setMidnight(cloneDate(chunk.start));\n while (chunk.end > date) {\n if (!hiddenDays.includes(date.getUTCDay())) {\n dates.push(cloneDate(date));\n if (dates.length > 1) {\n let key = date.getTime();\n if (longChunks[key]) {\n longChunks[key].chunks.push(chunk);\n } else {\n longChunks[key] = {\n sorted: false,\n chunks: [chunk]\n };\n }\n }\n }\n addDay(date);\n }\n if (dates.length) {\n chunk.date = dates[0];\n chunk.days = dates.length;\n chunk.dates = dates;\n // Adjust the start and end dates of the chunk if hidden days affected them\n if (chunk.start < dates[0]) {\n chunk.start = dates[0];\n }\n let maxEnd = addDay(cloneDate(dates.at(-1)));\n if (chunk.end > maxEnd) {\n chunk.end = maxEnd;\n }\n } else {\n chunk.date = setMidnight(cloneDate(chunk.start));\n chunk.days = 1;\n chunk.dates = [chunk.date];\n }\n\n if (prevChunk && datesEqual(prevChunk.date, chunk.date)) {\n chunk.prev = prevChunk;\n }\n prevChunk = chunk;\n }\n }\n\n return longChunks;\n}\n\nexport function repositionEvent(chunk, longChunks, height) {\n chunk.top = 0;\n if (chunk.prev) {\n chunk.top = chunk.prev.bottom + 1;\n }\n chunk.bottom = chunk.top + height;\n let margin = 1;\n let key = chunk.date.getTime();\n if (longChunks[key]) {\n if (!longChunks[key].sorted) {\n longChunks[key].chunks.sort((a, b) => a.top - b.top);\n longChunks[key].sorted = true;\n }\n for (let longChunk of longChunks[key].chunks) {\n if (chunk.top < longChunk.bottom && chunk.bottom > longChunk.top) {\n let offset = longChunk.bottom - chunk.top + 1;\n margin += offset;\n chunk.top += offset;\n chunk.bottom += offset;\n }\n }\n }\n\n return margin;\n}\n\nexport function runReposition(refs, data) {\n refs.length = data.length;\n let result = [];\n for (let ref of refs) {\n result.push(ref?.reposition?.());\n }\n return result;\n}\n\n/**\n * Check whether the event intersects with the given date range and resources\n * @param event\n * @param start\n * @param end\n * @param resources\n * @return boolean\n */\nexport function eventIntersects(event, start, end, resources) {\n if (event.start < end && event.end > start) {\n if (resources) {\n if (!isArray(resources)) {\n resources = [resources];\n }\n return resources.some(resource => event.resourceIds.includes(resource.id));\n }\n return true;\n }\n return false;\n}\n\nexport function helperEvent(display) {\n return previewEvent(display) || ghostEvent(display) || pointerEvent(display);\n}\n\nexport function bgEvent(display) {\n return display === 'background';\n}\n\nexport function previewEvent(display) {\n return display === 'preview';\n}\n\nexport function ghostEvent(display) {\n return display === 'ghost';\n}\n\nexport function pointerEvent(display) {\n return display === 'pointer';\n}\n","\nexport function btnTextDay(text) {\n return btnText(text, 'day');\n}\n\nexport function btnTextWeek(text) {\n return btnText(text, 'week');\n}\n\nexport function btnTextMonth(text) {\n return btnText(text, 'month');\n}\n\nexport function btnTextYear(text) {\n return btnText(text, 'year');\n}\n\nfunction btnText(text, period) {\n return {\n ...text,\n next: 'Next ' + period,\n prev: 'Previous ' + period\n };\n}\n\nexport function themeView(view) {\n return theme => ({...theme, view});\n}\n","import {createDate, setMidnight} from './date.js';\n\nexport function createDateRange(input) {\n let start, end;\n if (input) {\n ({start, end} = input);\n if (start) {\n start = setMidnight(createDate(start));\n }\n if (end) {\n end = setMidnight(createDate(end));\n }\n }\n return {start, end};\n}\n\nexport function outsideRange(date, range) {\n return range.start && date < range.start || range.end && date > range.end;\n}\n\nexport function limitToRange(date, range) {\n if (range.start && date < range.start) {\n date = range.start;\n }\n if (range.end && date > range.end) {\n date = range.end;\n }\n return date;\n}\n","import {setPayload} from './payload.js';\n\nexport function createResources(input) {\n let result = [];\n _createResources(input, 0, result);\n return result;\n}\n\nfunction _createResources(input, level, flat) {\n let result = [];\n for (let item of input) {\n let resource = createResource(item);\n result.push(resource);\n flat.push(resource);\n let payload = {\n level,\n children: [],\n expanded: true,\n hidden: false\n };\n setPayload(resource, payload);\n if (item.children) {\n payload.children = _createResources(item.children, level + 1, flat);\n }\n }\n return result;\n}\n\nexport function createResource(input) {\n return {\n id: String(input.id),\n title: input.title || '',\n eventBackgroundColor: input.eventBackgroundColor,\n eventTextColor: input.eventTextColor,\n extendedProps: input.extendedProps ?? {}\n };\n}\n\nexport function resourceBackgroundColor(event, resources) {\n return findResource(event, resources)?.eventBackgroundColor;\n}\n\nexport function resourceTextColor(event, resources) {\n return findResource(event, resources)?.eventTextColor;\n}\n\nfunction findResource(event, resources) {\n return resources.find(resource => event.resourceIds.includes(resource.id));\n}\n","import {derived} from 'svelte/store';\nimport {isFunction} from './utils.js';\nimport {toLocalDate} from './date.js';\nimport {createResources} from './resources.js';\nimport {getPayload} from './payload.js';\n\nexport function intl(locale, format) {\n return derived([locale, format], ([$locale, $format]) => {\n let intl = isFunction($format)\n ? {format: $format}\n : new Intl.DateTimeFormat($locale, $format);\n return {\n format: date => intl.format(toLocalDate(date))\n };\n });\n}\n\nexport function intlRange(locale, format) {\n return derived([locale, format], ([$locale, $format]) => {\n let formatRange;\n if (isFunction($format)) {\n formatRange = $format;\n } else {\n let intl = new Intl.DateTimeFormat($locale, $format);\n formatRange = (start, end) => {\n if (start <= end) {\n return intl.formatRange(start, end);\n } else {\n // In iOS 16 and older, intl.formatRange() throws an exception if the start date is later than the end date.\n // Therefore, we first swap the parameters, and then swap the resulting parts.\n /** @see https://github.com/vkurko/calendar/issues/227 */\n let parts = intl.formatRangeToParts(end, start);\n let result = '';\n let sources = ['startRange', 'endRange'];\n let processed = [false, false];\n for (let part of parts) {\n let i = sources.indexOf(part.source);\n if (i >= 0) {\n if (!processed[i]) {\n result += _getParts(sources[1 - i], parts);\n processed[i] = true;\n }\n } else {\n result += part.value;\n }\n }\n return result;\n }\n };\n }\n return {\n formatRange: (start, end) => formatRange(toLocalDate(start), toLocalDate(end))\n };\n });\n}\n\nfunction _getParts(source, parts) {\n let result = '';\n for (let part of parts) {\n if (part.source == source) {\n result += part.value;\n }\n }\n return result;\n}\n\nexport function viewResources(state) {\n return derived(\n [state.resources, state.filterResourcesWithEvents, state._filteredEvents, state._activeRange],\n ([$resources, $filterResourcesWithEvents, $_filteredEvents, $_activeRange]) => {\n let result = $resources.filter(resource => !getPayload(resource).hidden);\n\n if ($filterResourcesWithEvents) {\n result = $resources.filter(resource => {\n for (let event of $_filteredEvents) {\n if (\n event.display !== 'background' &&\n event.resourceIds.includes(resource.id) &&\n event.start < $_activeRange.end &&\n event.end > $_activeRange.start\n ) {\n return true;\n }\n }\n return false;\n });\n }\n\n if (!result.length) {\n result = createResources([{}]);\n }\n\n return result;\n }\n );\n}\n","import {addDuration, cloneDate, createDuration, DAY_IN_SECONDS, toISOString, toSeconds} from './date.js';\nimport {max as maxFn, min as minFn, isFunction} from './utils.js';\nimport {bgEvent} from './events.js';\n\nexport function createTimes(date, $slotDuration, $slotLabelInterval, $_slotTimeLimits, $_intlSlotLabel) {\n date = cloneDate(date);\n let times = [];\n let end = cloneDate(date);\n addDuration(date, $_slotTimeLimits.min);\n addDuration(end, $_slotTimeLimits.max);\n // Labels\n if ($slotLabelInterval === undefined) {\n $slotLabelInterval = $slotDuration.seconds < 3600\n ? createDuration($slotDuration.seconds * 2)\n : $slotDuration;\n }\n let label = cloneDate(date);\n // Build times\n while (date < end) {\n times.push([\n toISOString(date),\n $_intlSlotLabel.format(date),\n date >= label\n ]);\n while ($slotLabelInterval.seconds && date >= label) {\n addDuration(label, $slotLabelInterval);\n }\n addDuration(date, $slotDuration);\n }\n\n return times;\n}\n\nexport function createSlotTimeLimits($slotMinTime, $slotMaxTime, $flexibleSlotTimeLimits, $_viewDates, $_filteredEvents) {\n let min = createDuration($slotMinTime);\n let max = createDuration($slotMaxTime);\n\n if ($flexibleSlotTimeLimits) {\n // If slotMaxTime goes past midnight, then extend it back by a maximum of 24 hours\n let minMin = createDuration(minFn(toSeconds(min), maxFn(0, toSeconds(max) - DAY_IN_SECONDS)));\n let maxMax = createDuration(maxFn(toSeconds(max), toSeconds(minMin) + DAY_IN_SECONDS));\n let filter = isFunction($flexibleSlotTimeLimits?.eventFilter)\n ? $flexibleSlotTimeLimits.eventFilter\n : event => !bgEvent(event.display);\n loop: for (let date of $_viewDates) {\n let start = addDuration(cloneDate(date), min);\n let end = addDuration(cloneDate(date), max);\n let minStart = addDuration(cloneDate(date), minMin);\n let maxEnd = addDuration(cloneDate(date), maxMax);\n for (let event of $_filteredEvents) {\n if (!event.allDay && filter(event) && event.start < maxEnd && event.end > minStart) {\n if (event.start < start) {\n let seconds = maxFn((event.start - date) / 1000, toSeconds(minMin));\n if (seconds < toSeconds(min)) {\n min.seconds = seconds;\n }\n }\n if (event.end > end) {\n let seconds = minFn((event.end - date) / 1000, toSeconds(maxMax));\n if (seconds > toSeconds(max)) {\n max.seconds = seconds;\n }\n }\n if (toSeconds(min) === toSeconds(minMin) && toSeconds(max) === toSeconds(maxMax)) {\n break loop;\n }\n }\n }\n }\n }\n\n return {min, max};\n}\n","import {\n createDate, createDuration, createEvents, createEventSources, createResources, createDateRange, keys, setMidnight\n} from '#lib';\n\nexport function createOptions(plugins) {\n let options = {\n allDayContent: undefined,\n allDaySlot: true,\n buttonText: {\n today: 'today',\n },\n customButtons: {},\n date: new Date(),\n datesSet: undefined,\n dayHeaderFormat: {\n weekday: 'short',\n month: 'numeric',\n day: 'numeric'\n },\n dayHeaderAriaLabelFormat: {\n dateStyle: 'full'\n },\n displayEventEnd: true,\n duration: {weeks: 1},\n events: [],\n eventAllUpdated: undefined,\n eventBackgroundColor: undefined,\n eventClassNames: undefined,\n eventClick: undefined,\n eventColor: undefined,\n eventContent: undefined,\n eventDidMount: undefined,\n eventFilter: undefined, // ec option\n eventMouseEnter: undefined,\n eventMouseLeave: undefined,\n eventSources: [],\n eventTextColor: undefined,\n eventTimeFormat: {\n hour: 'numeric',\n minute: '2-digit'\n },\n filterEventsWithResources: false,\n filterResourcesWithEvents: false,\n firstDay: 0,\n flexibleSlotTimeLimits: false, // ec option\n headerToolbar: {\n start: 'title',\n center: '',\n end: 'today prev,next'\n },\n height: undefined,\n hiddenDays: [],\n highlightedDates: [], // ec option\n lazyFetching: true,\n loading: undefined,\n locale: undefined,\n nowIndicator: false,\n resourceLabelContent: undefined,\n resourceLabelDidMount: undefined,\n resources: [],\n selectable: false,\n scrollTime: '06:00:00',\n slotDuration: '00:30:00',\n slotEventOverlap: true,\n slotHeight: 24, // ec option\n slotLabelInterval: undefined,\n slotLabelFormat: {\n hour: 'numeric',\n minute: '2-digit'\n },\n slotMaxTime: '24:00:00',\n slotMinTime: '00:00:00',\n slotWidth: 72,\n theme: {\n allDay: 'ec-all-day',\n active: 'ec-active',\n bgEvent: 'ec-bg-event',\n bgEvents: 'ec-bg-events',\n body: 'ec-body',\n button: 'ec-button',\n buttonGroup: 'ec-button-group',\n calendar: 'ec',\n content: 'ec-content',\n day: 'ec-day',\n dayHead: 'ec-day-head',\n days: 'ec-days',\n disabled: 'ec-disabled',\n event: 'ec-event',\n eventBody: 'ec-event-body',\n eventTime: 'ec-event-time',\n eventTitle: 'ec-event-title',\n events: 'ec-events',\n extra: 'ec-extra',\n handle: 'ec-handle',\n header: 'ec-header',\n hiddenScroll: 'ec-hidden-scroll',\n highlight: 'ec-highlight',\n icon: 'ec-icon',\n line: 'ec-line',\n lines: 'ec-lines',\n minor: 'ec-minor',\n nowIndicator: 'ec-now-indicator',\n otherMonth: 'ec-other-month',\n resource: 'ec-resource',\n sidebar: 'ec-sidebar',\n sidebarTitle: 'ec-sidebar-title',\n today: 'ec-today',\n time: 'ec-time',\n title: 'ec-title',\n toolbar: 'ec-toolbar',\n view: '',\n weekdays: ['ec-sun', 'ec-mon', 'ec-tue', 'ec-wed', 'ec-thu', 'ec-fri', 'ec-sat'],\n withScroll: 'ec-with-scroll'\n },\n titleFormat: {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n },\n validRange: undefined,\n view: undefined,\n viewDidMount: undefined,\n views: {}\n };\n\n for (let plugin of plugins) {\n plugin.createOptions?.(options);\n }\n\n return options;\n}\n\nexport function createParsers(plugins) {\n let parsers = {\n date: date => setMidnight(createDate(date)),\n duration: createDuration,\n events: createEvents,\n eventSources: createEventSources,\n hiddenDays: days => [...new Set(days)],\n highlightedDates: dates => dates.map(date => setMidnight(createDate(date))),\n resources: createResources,\n scrollTime: createDuration,\n slotDuration: createDuration,\n slotLabelInterval: input => input !== undefined ? createDuration(input) : undefined,\n slotMaxTime: createDuration,\n slotMinTime: createDuration,\n validRange: createDateRange\n };\n\n for (let plugin of plugins) {\n plugin.createParsers?.(parsers);\n }\n\n return parsers;\n}\n\nexport function diff(options, prevOptions) {\n let diff = [];\n for (let key of keys(options)) {\n if (options[key] !== prevOptions[key]) {\n diff.push([key, options[key]]);\n }\n }\n return diff;\n}\n","import {derived, get, readable, writable} from 'svelte/store';\nimport {\n addDay, addDuration, assign, cloneDate, createDate, createEvents, createView, DAY_IN_SECONDS, debounce,\n isFunction, nextClosestDay, prevClosestDay, setMidnight, subtractDay, toISOString, toLocalDate\n} from '#lib';\n\nexport function dayGrid(state) {\n return derived(state.view, $view => $view?.startsWith('dayGrid'));\n}\n\nexport function activeRange(state) {\n return derived(\n [state._currentRange, state.firstDay, state.slotMaxTime, state._dayGrid],\n ([$_currentRange, $firstDay, $slotMaxTime, $_dayGrid]) => {\n let start = cloneDate($_currentRange.start);\n let end = cloneDate($_currentRange.end);\n\n if ($_dayGrid) {\n // First day of week\n prevClosestDay(start, $firstDay);\n nextClosestDay(end, $firstDay);\n } else if ($slotMaxTime.days || $slotMaxTime.seconds > DAY_IN_SECONDS) {\n addDuration(subtractDay(end), $slotMaxTime);\n let start2 = subtractDay(cloneDate(end));\n if (start2 < start) {\n start = start2;\n }\n }\n\n return {start, end};\n }\n );\n}\n\nexport function currentRange(state) {\n return derived(\n [state.date, state.duration, state.firstDay],\n ([$date, $duration, $firstDay]) => {\n let start = cloneDate($date), end;\n if ($duration.months) {\n start.setUTCDate(1);\n } else if ($duration.inWeeks) {\n // First day of week\n prevClosestDay(start, $firstDay);\n }\n end = addDuration(cloneDate(start), $duration);\n\n return {start, end};\n }\n );\n}\n\nexport function viewDates(state) {\n return derived([state._activeRange, state.hiddenDays], ([$_activeRange, $hiddenDays]) => {\n let dates = [];\n let date = setMidnight(cloneDate($_activeRange.start));\n let end = setMidnight(cloneDate($_activeRange.end));\n while (date < end) {\n if (!$hiddenDays.includes(date.getUTCDay())) {\n dates.push(cloneDate(date));\n }\n addDay(date);\n }\n if (!dates.length && $hiddenDays.length && $hiddenDays.length < 7) {\n // Try to move the date\n state.date.update(date => {\n while ($hiddenDays.includes(date.getUTCDay())) {\n addDay(date);\n }\n return date;\n });\n dates = get(state._viewDates);\n }\n\n return dates;\n });\n}\n\nexport function viewTitle(state) {\n return derived(\n [state.date, state._activeRange, state._intlTitle, state._dayGrid],\n ([$date, $_activeRange, $_intlTitle, $_dayGrid]) => {\n return $_dayGrid\n ? $_intlTitle.formatRange($date, $date)\n : $_intlTitle.formatRange($_activeRange.start, subtractDay(cloneDate($_activeRange.end)));\n }\n );\n}\n\nexport function view(state) {\n return derived([state.view, state._viewTitle, state._currentRange, state._activeRange], args => createView(...args));\n}\n\nexport function events(state) {\n let _events = writable([]);\n let abortController;\n let fetching = 0;\n let debounceHandle = {};\n derived(\n [state.events, state.eventSources, state._activeRange, state._fetchedRange, state.lazyFetching, state.loading],\n (values, set) => debounce(() => {\n let [$events, $eventSources, $_activeRange, $_fetchedRange, $lazyFetching, $loading] = values;\n if (!$eventSources.length) {\n set($events);\n return;\n }\n // Do not fetch if new range is within the previous one\n if (!$_fetchedRange.start || $_fetchedRange.start > $_activeRange.start || $_fetchedRange.end < $_activeRange.end || !$lazyFetching) {\n if (abortController) {\n // Abort previous request\n abortController.abort();\n }\n // Create new abort controller\n abortController = new AbortController();\n // Call loading hook\n if (isFunction($loading) && !fetching) {\n $loading(true);\n }\n let stopLoading = () => {\n if (--fetching === 0 && isFunction($loading)) {\n $loading(false);\n }\n };\n let events = [];\n // Prepare handlers\n let failure = e => stopLoading();\n let success = data => {\n events = events.concat(createEvents(data));\n set(events);\n stopLoading();\n };\n // Prepare other stuff\n let startStr = toISOString($_activeRange.start)\n let endStr = toISOString($_activeRange.end);\n // Loop over event sources\n for (let source of $eventSources) {\n if (isFunction(source.events)) {\n // Events as a function\n let result = source.events({\n start: toLocalDate($_activeRange.start),\n end: toLocalDate($_activeRange.end),\n startStr,\n endStr\n }, success, failure);\n if (result !== undefined) {\n Promise.resolve(result).then(success, failure);\n }\n } else {\n // Events as a JSON feed\n // Prepare params\n let params = isFunction(source.extraParams) ? source.extraParams() : assign({}, source.extraParams);\n params.start = startStr;\n params.end = endStr;\n params = new URLSearchParams(params);\n // Prepare fetch\n let url = source.url, headers = {}, body;\n if (['GET', 'HEAD'].includes(source.method)) {\n url += (url.includes('?') ? '&' : '?') + params;\n } else {\n headers['content-type'] = 'application/x-www-form-urlencoded;charset=UTF-8';\n body = String(params); // Safari 10.1 doesn't convert to string automatically\n }\n // Do the fetch\n fetch(url, {method: source.method, headers, body, signal: abortController.signal, credentials: 'same-origin'})\n .then(response => response.json())\n .then(success)\n .catch(failure);\n }\n ++fetching;\n }\n // Save current range for future requests\n $_fetchedRange.start = $_activeRange.start;\n $_fetchedRange.end = $_activeRange.end;\n }\n }, debounceHandle, state._queue),\n []\n ).subscribe(_events.set);\n\n return _events;\n}\n\nexport function filteredEvents(state){\n let view;\n state._view.subscribe($_view => view = $_view);\n let debounceHandle = {};\n return derived(\n [state._events, state.eventFilter],\n (values, set) => debounce(() => {\n let [$_events, $eventFilter] = values;\n set(\n isFunction($eventFilter)\n ? $_events.filter((event, index, events) => $eventFilter({\n event,\n index,\n events,\n view\n }))\n : $_events\n );\n }, debounceHandle, state._queue),\n []\n );\n}\n\nexport function now() {\n return readable(createDate(), set => {\n let interval = setInterval(() => {\n set(createDate());\n }, 1000);\n\n return () => clearInterval(interval);\n });\n}\n\nexport function today(state) {\n return derived(state._now, $_now => setMidnight(cloneDate($_now)));\n}\n","import {get, writable} from 'svelte/store';\nimport {tick} from 'svelte';\nimport {createOptions, createParsers} from './options.js';\nimport {activeRange, currentRange, dayGrid, events, now, today, view as view2, viewDates, viewTitle, filteredEvents} from './stores.js';\nimport {identity, intl, intlRange, isFunction, keys} from '#lib';\n\nexport default class {\n constructor(plugins, input) {\n plugins = plugins || [];\n\n // Create options\n let options = createOptions(plugins);\n let parsers = createParsers(plugins);\n\n // Parse options\n options = parseOpts(options, parsers);\n input = parseOpts(input, parsers);\n\n // Create stores for options\n for (let [option, value] of Object.entries(options)) {\n this[option] = writable(value);\n }\n\n // Private stores\n this._queue = writable(new Map()); // debounce queue (beforeUpdate)\n this._tasks = new Map(); // timeout IDs for tasks\n this._auxiliary = writable([]); // auxiliary components\n this._dayGrid = dayGrid(this);\n this._currentRange = currentRange(this);\n this._activeRange = activeRange(this);\n this._fetchedRange = writable({start: undefined, end: undefined});\n this._events = events(this);\n this._now = now();\n this._today = today(this);\n this._intlEventTime = intlRange(this.locale, this.eventTimeFormat);\n this._intlSlotLabel = intl(this.locale, this.slotLabelFormat);\n this._intlDayHeader = intl(this.locale, this.dayHeaderFormat);\n this._intlDayHeaderAL = intl(this.locale, this.dayHeaderAriaLabelFormat);\n this._intlTitle = intlRange(this.locale, this.titleFormat);\n this._bodyEl = writable(undefined);\n this._scrollable = writable(false);\n this._recheckScrollable = writable(false);\n this._viewTitle = viewTitle(this);\n this._viewDates = viewDates(this);\n this._view = view2(this);\n this._viewComponent = writable(undefined);\n this._filteredEvents = filteredEvents(this);\n // Interaction\n this._interaction = writable({});\n this._iEvents = writable([null, null]); // interaction events: [drag/resize, pointer]\n this._iClasses = writable(identity); // interaction event css classes\n this._iClass = writable(undefined); // interaction css class for entire calendar\n\n // Set & Get\n this._set = (key, value) => {\n if (validKey(key, this)) {\n if (parsers[key]) {\n value = parsers[key](value);\n }\n this[key].set(value);\n }\n };\n this._get = key => validKey(key, this) ? get(this[key]) : undefined;\n\n // Let plugins create their private stores\n for (let plugin of plugins) {\n plugin.createStores?.(this);\n }\n\n if (input.view) {\n // Set initial view based on input\n this.view.set(input.view);\n }\n\n // Set options for each view\n let views = new Set([...keys(options.views), ...keys(input.views ?? {})]);\n for (let view of views) {\n let defOpts = mergeOpts(options, options.views[view] ?? {});\n let opts = mergeOpts(defOpts, input, input.views?.[view] ?? {});\n let component = opts.component;\n // Make sure we deal with valid opts from now on\n filterOpts(opts, this);\n // Process options\n for (let key of keys(opts)) {\n let {set, _set = set, ...rest} = this[key];\n\n this[key] = {\n // Set value in all views\n set: ['buttonText', 'theme'].includes(key)\n ? value => {\n if (isFunction(value)) {\n let result = value(defOpts[key]);\n opts[key] = result;\n set(set === _set ? result : value);\n } else {\n opts[key] = value;\n set(value);\n }\n }\n : value => {\n opts[key] = value;\n set(value);\n },\n _set,\n ...rest\n };\n }\n // When view changes...\n this.view.subscribe(newView => {\n if (newView === view) {\n // switch view component\n this._viewComponent.set(component);\n if (isFunction(opts.viewDidMount)) {\n tick().then(() => opts.viewDidMount(get(this._view)));\n }\n // update store values\n for (let key of keys(opts)) {\n this[key]._set(opts[key]);\n }\n }\n });\n }\n }\n}\n\nfunction parseOpts(opts, parsers) {\n let result = {...opts};\n for (let key of keys(parsers)) {\n if (key in result) {\n result[key] = parsers[key](result[key]);\n }\n }\n if (opts.views) {\n result.views = {};\n for (let view of keys(opts.views)) {\n result.views[view] = parseOpts(opts.views[view], parsers);\n }\n }\n return result;\n}\n\nfunction mergeOpts(...args) {\n let result = {};\n for (let opts of args) {\n let override = {};\n for (let key of ['buttonText', 'theme']) {\n if (isFunction(opts[key])) {\n override[key] = opts[key](result[key]);\n }\n }\n result = {\n ...result,\n ...opts,\n ...override\n };\n }\n return result;\n}\n\nfunction filterOpts(opts, state) {\n keys(opts)\n .filter(key => !validKey(key, state) || key === 'view')\n .forEach(key => delete opts[key]);\n}\n\nfunction validKey(key, state) {\n return state.hasOwnProperty(key) && key[0] !== '_';\n}\n","import { enable_legacy_mode_flag } from './index.js';\n\nenable_legacy_mode_flag();\n","<script>\n import {getContext, tick} from 'svelte';\n import {createDate, cloneDate, setContent, setMidnight, nextDate, prevDate, outsideRange} from '#lib';\n\n export let buttons;\n\n let {\n _currentRange, _viewTitle, _viewDates, buttonText, customButtons, date, duration, hiddenDays, theme, validRange,\n view\n } = getContext('state');\n\n let today = setMidnight(createDate());\n let prevDisabled, nextDisabled, todayDisabled;\n\n let running = false;\n function isRunning() {\n return running;\n }\n $: if (!isRunning()) {\n running = true;\n prevDisabled = false;\n nextDisabled = false;\n if ($validRange.start) {\n let currentDate = cloneDate($date);\n $date = prevDate($date, $duration, $hiddenDays);\n prevDisabled = test();\n $date = currentDate;\n }\n if ($validRange.end) {\n let currentDate = cloneDate($date);\n $date = nextDate($date, $duration);\n nextDisabled = test();\n $date = currentDate;\n }\n todayDisabled = today >= $_currentRange.start && today < $_currentRange.end;\n if (!todayDisabled && ($validRange.start || $validRange.end)) {\n let currentDate = cloneDate($date);\n $date = cloneDate(today);\n todayDisabled = test();\n $date = currentDate;\n }\n tick().then(() => running = false);\n }\n\n function test() {\n return $_viewDates.every(date => outsideRange(date, $validRange));\n }\n\n function prev() {\n $date = prevDate($date, $duration, $hiddenDays);\n }\n\n function next() {\n $date = nextDate($date, $duration);\n }\n</script>\n\n{#each buttons as button}\n {#if button == 'title'}\n <!-- svelte-ignore a11y-missing-content -->\n <h2 class=\"{$theme.title}\" use:setContent={$_viewTitle}></h2>\n {:else if button == 'prev'}\n <button\n class=\"{$theme.button} ec-{button}\"\n aria-label={$buttonText.prev}\n title={$buttonText.prev}\n on:click={prev}\n disabled={prevDisabled}\n ><i class=\"{$theme.icon} ec-{button}\"></i></button>\n {:else if button == 'next'}\n <button\n class=\"{$theme.button} ec-{button}\"\n aria-label={$buttonText.next}\n title={$buttonText.next}\n on:click={next}\n disabled={nextDisabled}\n ><i class=\"{$theme.icon} ec-{button}\"></i></button>\n {:else if button == 'today'}\n <button\n class=\"{$theme.button} ec-{button}\"\n on:click={() => $date = cloneDate(today)}\n disabled={todayDisabled}\n >{$buttonText[button]}</button>\n {:else if $customButtons[button]}\n <!-- svelte-ignore a11y_consider_explicit_label -->\n <button\n class=\"{$theme.button} ec-{button}{$customButtons[button].active ? ' ' + $theme.active : ''}\"\n on:click={$customButtons[button].click}\n use:setContent={$customButtons[button].text}\n ></button>\n {:else if button != ''}\n <button\n class=\"{$theme.button}{$view === button ? ' ' + $theme.active : ''} ec-{button}\"\n on:click={() => $view = button}\n >{$buttonText[button]}</button>\n {/if}\n{/each}\n","<script>\n import {getContext} from 'svelte';\n import {keys} from '#lib';\n import Buttons from './Buttons.svelte';\n\n let {headerToolbar, theme} = getContext('state');\n\n let sections = $derived.by(() => {\n let sections = {};\n for (let key of ['start', 'center', 'end']) {\n sections[key] = $headerToolbar[key]?.split(' ').map(group => group.split(',')) ?? [];\n }\n return sections;\n });\n</script>\n\n<nav class=\"{$theme.toolbar}\">\n {#each keys(sections) as key}\n <div class=\"ec-{key}\">\n {#each sections[key] as buttons}\n {#if buttons.length > 1}\n <div class=\"{$theme.buttonGroup}\">\n <Buttons {buttons}/>\n </div>\n {:else}\n <Buttons {buttons}/>\n {/if}\n {/each}\n </div>\n {/each}\n</nav>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {\n toISOString, toLocalDate, toViewWithLocalDates, isFunction, task, flushDebounce, hasYScroll\n } from '#lib';\n\n let {\n datesSet, eventAllUpdated, _auxiliary, _activeRange, _filteredEvents, _scrollable, _bodyEl, _tasks, _recheckScrollable,\n _queue, _view\n } = getContext('state');\n\n // datesSet callback\n $effect(() => {\n $_activeRange;\n untrack(() => {\n if (isFunction($datesSet)) {\n $datesSet({\n start: toLocalDate($_activeRange.start),\n end: toLocalDate($_activeRange.end),\n startStr: toISOString($_activeRange.start),\n endStr: toISOString($_activeRange.end),\n view: toViewWithLocalDates($_view)\n });\n }\n });\n });\n\n // eventAllUpdated callback\n $effect(() => {\n $_filteredEvents;\n untrack(() => {\n if (isFunction($eventAllUpdated)) {\n task(() => $eventAllUpdated({view: toViewWithLocalDates($_view)}), 'eau', _tasks);\n }\n });\n });\n\n $effect(() => {\n $_queue;\n untrack(() => {\n flushDebounce($_queue);\n });\n });\n\n $effect(() => {\n $_recheckScrollable;\n untrack(() => {\n if ($_bodyEl) {\n $_scrollable = hasYScroll($_bodyEl);\n }\n $_recheckScrollable = false;\n });\n });\n</script>\n\n{#each $_auxiliary as Component}\n <Component/>\n{/each}\n","<script>\n import './styles/index.scss';\n import {setContext, untrack} from 'svelte';\n import {get} from 'svelte/store';\n import {diff} from './storage/options.js';\n import State from './storage/state.js';\n import Toolbar from './Toolbar.svelte';\n import Auxiliary from './Auxiliary.svelte';\n import {\n assign, createEvents, getElementWithPayload, getPayload, listView, nextDate,\n prevDate, toEventWithLocalDates, toLocalDate, toViewWithLocalDates\n } from '#lib';\n\n let {plugins = [], options = {}} = $props();\n\n let state = new State(plugins, options);\n setContext('state', state);\n\n let {\n _viewComponent, _interaction, _iClass, _events, _scrollable,\n date, duration, hiddenDays, height, theme, view\n } = state;\n\n // Reactively update options that did change\n let prevOptions = {...options};\n $effect(() => {\n for (let [name, value] of diff(options, prevOptions)) {\n untrack(() => {\n setOption(name, value);\n });\n }\n assign(prevOptions, options);\n });\n\n export function setOption(name, value) {\n state._set(name, value);\n return this;\n }\n\n export function getOption(name) {\n let value = state._get(name);\n return value instanceof Date ? toLocalDate(value) : value;\n }\n\n export function refetchEvents() {\n state._fetchedRange.set({start: undefined, end: undefined});\n return this;\n }\n\n export function getEvents() {\n return $_events.map(toEventWithLocalDates);\n }\n\n export function getEventById(id) {\n for (let event of $_events) {\n if (event.id == id) {\n return toEventWithLocalDates(event);\n }\n }\n return null;\n }\n\n export function addEvent(event) {\n event = createEvents([event])[0];\n $_events.push(event);\n $_events = $_events;\n return toEventWithLocalDates(event);\n }\n\n export function updateEvent(event) {\n let id = String(event.id);\n let idx = $_events.findIndex(event => event.id === id);\n if (idx >= 0) {\n $_events[idx] = createEvents([event])[0];\n return toEventWithLocalDates(event);\n }\n return null;\n }\n\n export function removeEventById(id) {\n id = String(id);\n let idx = $_events.findIndex(event => event.id === id);\n if (idx >= 0) {\n $_events.splice(idx, 1);\n $_events = $_events;\n }\n return this;\n }\n\n export function getView() {\n return toViewWithLocalDates(get(state._view));\n }\n\n export function unselect() {\n $_interaction.action?.unselect();\n return this;\n }\n\n export function dateFromPoint(x, y) {\n let dayEl = getElementWithPayload(x, y);\n if (dayEl) {\n let info = getPayload(dayEl)(x, y);\n info.date = toLocalDate(info.date);\n\n return info;\n }\n return null;\n }\n\n export function next() {\n $date = nextDate($date, $duration);\n return this;\n }\n\n export function prev() {\n $date = prevDate($date, $duration, $hiddenDays);\n return this;\n }\n\n let View = $derived($_viewComponent);\n</script>\n\n<div\n class=\"{$theme.calendar} {$theme.view}{$_scrollable ? ' ' + $theme.withScroll : ''}{$_iClass ? ' ' + $theme[$_iClass] : ''}\"\n style:height={$height}\n role=\"{listView($view) ? 'list' : 'table'}\"\n>\n <Toolbar/>\n <View/>\n</div>\n<Auxiliary/>\n","import {derived} from 'svelte/store';\nimport {cloneDate, addDay, subtractDay} from '#lib';\n\nexport function days(state) {\n return derived([state.date, state.firstDay, state.hiddenDays], ([$date, $firstDay, $hiddenDays]) => {\n let days = [];\n let day = cloneDate($date);\n let max = 7;\n // First day of week\n while (day.getUTCDay() !== $firstDay && max) {\n subtractDay(day);\n --max;\n }\n for (let i = 0; i < 7; ++i) {\n if (!$hiddenDays.includes(day.getUTCDay())) {\n days.push(cloneDate(day));\n }\n addDay(day);\n }\n\n return days;\n });\n}\n","<script>\n import {getContext} from 'svelte';\n import {setContent} from '#lib';\n\n let {theme, _intlDayHeader, _intlDayHeaderAL, _days} = getContext('state');\n</script>\n\n<div class=\"{$theme.header}\">\n <div class=\"{$theme.days}\" role=\"row\">\n {#each $_days as day}\n <div class=\"{$theme.day} {$theme.weekdays?.[day.getUTCDay()]}\" role=\"columnheader\">\n <span\n aria-label=\"{$_intlDayHeaderAL.format(day)}\"\n use:setContent={$_intlDayHeader.format(day)}\n ></span>\n </div>\n {/each}\n </div>\n <div class=\"{$theme.hiddenScroll}\"></div>\n</div>\n","/** @import { Source } from '#client' */\nimport { DEV } from 'esm-env';\nimport { source, set } from '../internal/client/reactivity/sources.js';\nimport { get } from '../internal/client/runtime.js';\nimport { increment } from './utils.js';\n\nvar read_methods = ['forEach', 'isDisjointFrom', 'isSubsetOf', 'isSupersetOf'];\nvar set_like_methods = ['difference', 'intersection', 'symmetricDifference', 'union'];\n\nvar inited = false;\n\n/**\n * A reactive version of the built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) object.\n * Reading contents of the set (by iterating, or by reading `set.size` or calling `set.has(...)` as in the [example](https://svelte.dev/playground/53438b51194b4882bcc18cddf9f96f15) below) in an [effect](https://svelte.dev/docs/svelte/$effect) or [derived](https://svelte.dev/docs/svelte/$derived)\n * will cause it to be re-evaluated as necessary when the set is updated.\n *\n * Note that values in a reactive set are _not_ made [deeply reactive](https://svelte.dev/docs/svelte/$state#Deep-state).\n *\n * ```svelte\n * <script>\n * \timport { SvelteSet } from 'svelte/reactivity';\n * \tlet monkeys = new SvelteSet();\n *\n * \tfunction toggle(monkey) {\n * \t\tif (monkeys.has(monkey)) {\n * \t\t\tmonkeys.delete(monkey);\n * \t\t} else {\n * \t\t\tmonkeys.add(monkey);\n * \t\t}\n * \t}\n * </script>\n *\n * {#each ['🙈', '🙉', '🙊'] as monkey}\n * \t<button onclick={() => toggle(monkey)}>{monkey}</button>\n * {/each}\n *\n * <button onclick={() => monkeys.clear()}>clear</button>\n *\n * {#if monkeys.has('🙈')}<p>see no evil</p>{/if}\n * {#if monkeys.has('🙉')}<p>hear no evil</p>{/if}\n * {#if monkeys.has('🙊')}<p>speak no evil</p>{/if}\n * ```\n *\n * @template T\n * @extends {Set<T>}\n */\nexport class SvelteSet extends Set {\n\t/** @type {Map<T, Source<boolean>>} */\n\t#sources = new Map();\n\t#version = source(0);\n\t#size = source(0);\n\n\t/**\n\t * @param {Iterable<T> | null | undefined} [value]\n\t */\n\tconstructor(value) {\n\t\tsuper();\n\n\t\t// If the value is invalid then the native exception will fire here\n\t\tif (DEV) value = new Set(value);\n\n\t\tif (value) {\n\t\t\tfor (var element of value) {\n\t\t\t\tsuper.add(element);\n\t\t\t}\n\t\t\tthis.#size.v = super.size;\n\t\t}\n\n\t\tif (!inited) this.#init();\n\t}\n\n\t// We init as part of the first instance so that we can treeshake this class\n\t#init() {\n\t\tinited = true;\n\n\t\tvar proto = SvelteSet.prototype;\n\t\tvar set_proto = Set.prototype;\n\n\t\tfor (const method of read_methods) {\n\t\t\t// @ts-ignore\n\t\t\tproto[method] = function (...v) {\n\t\t\t\tget(this.#version);\n\t\t\t\t// @ts-ignore\n\t\t\t\treturn set_proto[method].apply(this, v);\n\t\t\t};\n\t\t}\n\n\t\tfor (const method of set_like_methods) {\n\t\t\t// @ts-ignore\n\t\t\tproto[method] = function (...v) {\n\t\t\t\tget(this.#version);\n\t\t\t\t// @ts-ignore\n\t\t\t\tvar set = /** @type {Set<T>} */ (set_proto[method].apply(this, v));\n\t\t\t\treturn new SvelteSet(set);\n\t\t\t};\n\t\t}\n\t}\n\n\t/** @param {T} value */\n\thas(value) {\n\t\tvar has = super.has(value);\n\t\tvar sources = this.#sources;\n\t\tvar s = sources.get(value);\n\n\t\tif (s === undefined) {\n\t\t\tif (!has) {\n\t\t\t\t// If the value doesn't exist, track the version in case it's added later\n\t\t\t\t// but don't create sources willy-nilly to track all possible values\n\t\t\t\tget(this.#version);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\ts = source(true);\n\t\t\tsources.set(value, s);\n\t\t}\n\n\t\tget(s);\n\t\treturn has;\n\t}\n\n\t/** @param {T} value */\n\tadd(value) {\n\t\tif (!super.has(value)) {\n\t\t\tsuper.add(value);\n\t\t\tset(this.#size, super.size);\n\t\t\tincrement(this.#version);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/** @param {T} value */\n\tdelete(value) {\n\t\tvar deleted = super.delete(value);\n\t\tvar sources = this.#sources;\n\t\tvar s = sources.get(value);\n\n\t\tif (s !== undefined) {\n\t\t\tsources.delete(value);\n\t\t\tset(s, false);\n\t\t}\n\n\t\tif (deleted) {\n\t\t\tset(this.#size, super.size);\n\t\t\tincrement(this.#version);\n\t\t}\n\n\t\treturn deleted;\n\t}\n\n\tclear() {\n\t\tif (super.size === 0) {\n\t\t\treturn;\n\t\t}\n\t\t// Clear first, so we get nice console.log outputs with $inspect\n\t\tsuper.clear();\n\t\tvar sources = this.#sources;\n\n\t\tfor (var s of sources.values()) {\n\t\t\tset(s, false);\n\t\t}\n\n\t\tsources.clear();\n\t\tset(this.#size, 0);\n\t\tincrement(this.#version);\n\t}\n\n\tkeys() {\n\t\treturn this.values();\n\t}\n\n\tvalues() {\n\t\tget(this.#version);\n\t\treturn super.values();\n\t}\n\n\tentries() {\n\t\tget(this.#version);\n\t\treturn super.entries();\n\t}\n\n\t[Symbol.iterator]() {\n\t\treturn this.keys();\n\t}\n\n\tget size() {\n\t\treturn get(this.#size);\n\t}\n}\n","<script>\n import {getContext, onMount} from 'svelte';\n import {\n bgEvent, createEventClasses, createEventContent, entries, helperEvent, identity, isFunction, keyEnter,\n resourceBackgroundColor, resourceTextColor, setContent, toEventWithLocalDates, toViewWithLocalDates\n } from '#lib';\n\n let {\n el = $bindable(),\n chunk,\n classes = identity,\n styles = identity,\n onpointerdown,\n body\n } = $props();\n\n let {\n displayEventEnd, eventBackgroundColor, eventColor, eventContent, eventClick, eventDidMount, eventClassNames,\n eventMouseEnter, eventMouseLeave, eventTextColor, resources, theme, _view, _intlEventTime\n } = getContext('state');\n\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n // Style\n let bgColor = $derived(event.backgroundColor ?? resourceBackgroundColor(event, $resources) ?? $eventBackgroundColor ?? $eventColor);\n let txtColor = $derived(event.textColor ?? resourceTextColor(event, $resources) ?? $eventTextColor);\n let style = $derived(entries(styles(\n {'background-color': bgColor, 'color': txtColor}\n )).map(entry => `${entry[0]}:${entry[1]}`).join(';'));\n\n // Class\n let classNames = $derived(classes([\n bgEvent(display) ? $theme.bgEvent : $theme.event,\n ...createEventClasses($eventClassNames, event, $_view)\n ]).join(' '));\n\n // Content\n let [timeText, content] = $derived(createEventContent(\n chunk, $displayEventEnd, $eventContent, $theme, $_intlEventTime, $_view\n ));\n\n onMount(() => {\n if (isFunction($eventDidMount)) {\n $eventDidMount({\n event: toEventWithLocalDates(event),\n timeText,\n el,\n view: toViewWithLocalDates($_view)\n });\n }\n });\n\n function createHandler(fn, display) {\n return !helperEvent(display) && isFunction(fn)\n ? jsEvent => fn({event: toEventWithLocalDates(event), el, jsEvent, view: toViewWithLocalDates($_view)})\n : undefined;\n }\n\n // Handlers\n let onclick = $derived(!bgEvent(display) && createHandler($eventClick, display) || undefined);\n let onkeydown = $derived(onclick && keyEnter(onclick));\n let onmouseenter = $derived(createHandler($eventMouseEnter, display));\n let onmouseleave = $derived(createHandler($eventMouseLeave, display));\n</script>\n\n<!-- svelte-ignore a11y_no_noninteractive_tabindex -->\n<article\n bind:this={el}\n class={classNames}\n {style}\n role={onclick ? 'button' : undefined}\n tabindex={onclick ? 0 : undefined}\n {onclick}\n {onkeydown}\n {onmouseenter}\n {onmouseleave}\n {onpointerdown}\n>\n {#snippet defaultBody()}\n <div class={$theme.eventBody} use:setContent={content}></div>\n {/snippet}\n {#if body}\n {@render body(defaultBody, bgColor, txtColor)}\n {:else}\n {@render defaultBody()}\n {/if}\n</article>\n","<script>\n import {getContext} from 'svelte';\n import BaseEvent from './BaseEvent.svelte';\n import {bgEvent, helperEvent} from \"#lib\";\n\n let {\n el = $bindable(),\n chunk,\n styles,\n axis,\n forceDate,\n forceMargin\n } = $props();\n\n let {_interaction, _iClasses} = getContext('state');\n\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n // Class\n let classes = $derived(classNames => $_iClasses(classNames, event));\n\n function createDragHandler(event) {\n return $_interaction.action?.draggable(event)\n ? jsEvent => $_interaction.action.drag(\n event, jsEvent, forceDate?.(), forceMargin?.()\n )\n : $_interaction.action?.noAction;\n }\n let onpointerdown = $derived(!bgEvent(display) && !helperEvent(display) ? createDragHandler(event) : undefined);\n\n let Resizer = $derived($_interaction.resizer);\n</script>\n\n<BaseEvent bind:el {chunk} {classes} {styles} {onpointerdown}>\n {#snippet body(defaultBody)}\n {#if Resizer}\n <Resizer {chunk} {axis} {forceDate} {forceMargin}>\n {@render defaultBody()}\n </Resizer>\n {:else}\n {@render defaultBody()}\n {/if}\n {/snippet}\n</BaseEvent>\n","<script>\n import {getContext} from 'svelte';\n import {ancestor, bgEvent, height, max, rect, repositionEvent} from '#lib';\n import {InteractableEvent} from '#components';\n\n let {chunk, longChunks = {}, inPopup = false, dates = []} = $props();\n\n let {dayMaxEvents, _hiddenEvents, _popupDate} = getContext('state');\n\n let el = $state();\n let margin = $state(1);\n let hidden = $state(false);\n\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n // Style\n let styles = $derived(style => {\n if (bgEvent(display)) {\n style['width'] = `calc(${chunk.days * 100}% + ${(chunk.days - 1)}px)`;\n } else {\n let marginTop = margin;\n if (event._margin) {\n // Force margin for helper events\n let [_margin, _dates] = event._margin;\n if (chunk.date >= _dates[0] && chunk.date <= _dates.at(-1)) {\n marginTop = _margin;\n }\n }\n style['width'] = `calc(${chunk.days * 100}% + ${(chunk.days - 1) * 7}px)`;\n style['margin-top'] = `${marginTop}px`;\n }\n if (hidden) {\n style['visibility'] = 'hidden';\n }\n return style;\n });\n\n export function reposition() {\n margin = repositionEvent(chunk, longChunks, height(el));\n if ($dayMaxEvents === true) {\n hide();\n } else {\n hidden = false;\n }\n }\n\n function hide() {\n let dayEl = ancestor(el, 2);\n let h = height(dayEl) - height(dayEl.firstElementChild) - footHeight(dayEl);\n hidden = chunk.bottom > h;\n let update = false;\n // Hide or show the event throughout all days\n for (let date of chunk.dates) {\n let hiddenEvents = $_hiddenEvents[date.getTime()];\n if (hiddenEvents) {\n let size = hiddenEvents.size;\n if (hidden) {\n hiddenEvents.add(chunk.event);\n } else {\n hiddenEvents.delete(chunk.event);\n }\n if (size !== hiddenEvents.size) {\n update = true;\n }\n }\n }\n if (update) {\n $_hiddenEvents = $_hiddenEvents;\n }\n }\n\n function footHeight(dayEl) {\n let h = 0;\n for (let i = 0; i < chunk.days; ++i) {\n h = max(h, height(dayEl.lastElementChild));\n dayEl = dayEl.nextElementSibling;\n if (!dayEl) {\n break;\n }\n }\n return h;\n }\n</script>\n\n<InteractableEvent\n bind:el\n {chunk}\n {styles}\n axis=\"x\"\n forceDate={() => inPopup ? $_popupDate : undefined}\n forceMargin={() => [rect(el).top - rect(ancestor(el, 1)).top, dates]}\n/>\n","<script>\n import {getContext, tick, untrack} from 'svelte';\n import {ancestor, rect, setContent, outsideEvent, keyEnter, toISOString, stopPropagation} from '#lib';\n import Event from './Event.svelte';\n\n let {buttonText, theme, _interaction, _intlDayPopover, _popupDate, _popupChunks} = getContext('state');\n\n let el = $state();\n let style = $state('');\n\n function position() {\n let dayEl = ancestor(el, 1);\n let bodyEl = ancestor(dayEl, 3);\n let popupRect = rect(el);\n let dayRect = rect(dayEl);\n let bodyRect = rect(bodyEl);\n style = '';\n\n let left;\n if (popupRect.width >= bodyRect.width) {\n left = bodyRect.left - dayRect.left;\n let right = dayRect.right - bodyRect.right;\n style += `right:${right}px;`;\n } else {\n left = (dayRect.width - popupRect.width) / 2;\n if (dayRect.left + left < bodyRect.left) {\n left = bodyRect.left - dayRect.left;\n } else if (dayRect.left + left + popupRect.width > bodyRect.right) {\n left = bodyRect.right - dayRect.left - popupRect.width;\n }\n }\n style += `left:${left}px;`;\n\n let top;\n if (popupRect.height >= bodyRect.height) {\n top = bodyRect.top - dayRect.top;\n let bottom = dayRect.bottom - bodyRect.bottom;\n style += `bottom:${bottom}px;`;\n } else {\n top = (dayRect.height - popupRect.height) / 2;\n if (dayRect.top + top < bodyRect.top) {\n top = bodyRect.top - dayRect.top;\n } else if (dayRect.top + top + popupRect.height > bodyRect.bottom) {\n top = bodyRect.bottom - dayRect.top - popupRect.height;\n }\n }\n style += `top:${top}px;`;\n }\n\n $effect(() => {\n // Fire reposition only on popup chunks change\n $_popupChunks;\n // Let chunks to update/mount then position the popup\n tick().then(reposition);\n });\n function reposition() {\n if ($_popupChunks.length) {\n position();\n } else {\n close();\n }\n }\n\n function close() {\n $_popupDate = null;\n $_popupChunks = [];\n }\n\n function handlePointerDownOutside() {\n close();\n $_interaction.action?.noClick();\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.popup}\"\n {style}\n use:outsideEvent={'pointerdown'}\n onpointerdown={stopPropagation()}\n onpointerdownoutside={handlePointerDownOutside}\n>\n <div class=\"{$theme.dayHead}\">\n <time datetime=\"{toISOString($_popupDate, 10)}\" use:setContent={$_intlDayPopover.format($_popupDate)}></time>\n <!-- svelte-ignore a11y_missing_attribute -->\n <a\n role=\"button\"\n tabindex=\"0\"\n aria-label={$buttonText.close}\n onclick={stopPropagation(close)}\n onkeydown={keyEnter(close)}\n >×</a>\n </div>\n <div class=\"{$theme.events}\">\n {#each $_popupChunks as chunk (chunk.event)}\n <Event {chunk} inPopup />\n {/each}\n </div>\n</div>\n","<script>\n import {getContext, onMount, tick, untrack} from 'svelte';\n import {SvelteSet} from 'svelte/reactivity';\n import {\n addDay, assign, cloneDate, createEventChunk, datesEqual, getWeekNumber, isFunction, keyEnter, outsideRange,\n runReposition, setContent, setPayload, toISOString, toLocalDate, stopPropagation\n } from '#lib';\n import Event from './Event.svelte';\n import Popup from './Popup.svelte';\n\n let {date, chunks, bgChunks, longChunks, iChunks = [], dates} = $props();\n\n let {\n date: currentDate, dayMaxEvents, highlightedDates, firstDay, moreLinkContent, theme, validRange, weekNumbers,\n weekNumberContent, _hiddenEvents, _intlDayCell, _popupDate, _popupChunks, _today, _interaction\n } = getContext('state');\n\n let el = $state();\n let hiddenEvents = new SvelteSet(); // hidden events of this day\n $effect.pre(() => {\n $_hiddenEvents[date.getTime()] = untrack(() => hiddenEvents);\n });\n let refs = [];\n let isToday = $derived(datesEqual(date, $_today));\n let otherMonth = $derived(date.getUTCMonth() !== $currentDate.getUTCMonth());\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n\n let dayBgChunks = $derived(!disabled ? bgChunks.filter(bgChunk => datesEqual(bgChunk.date, date)) : []);\n let dayChunks = $derived.by(() => {\n let dayChunks = [];\n if (!disabled) {\n for (let chunk of chunks) {\n if (datesEqual(chunk.date, date)) {\n dayChunks.push(chunk);\n // if ($dayMaxEvents !== false && dayChunks.length > $dayMaxEvents) {\n // \tchunk.hidden = true;\n // }\n }\n }\n }\n return dayChunks;\n });\n $effect.pre(() => {\n dayChunks;\n hiddenEvents.clear();\n });\n\n let moreLink = $derived.by(() => {\n let moreLink = '';\n if (!disabled && hiddenEvents.size) {\n let text = '+' + hiddenEvents.size + ' more';\n if ($moreLinkContent) {\n moreLink = isFunction($moreLinkContent)\n ? $moreLinkContent({num: hiddenEvents.size, text})\n : $moreLinkContent;\n } else {\n moreLink = text;\n }\n }\n return moreLink;\n });\n\n // dateFromPoint\n onMount(() => {\n setPayload(el, () => ({allDay: true, date, resource: undefined, dayEl: el, disabled}));\n });\n\n // Popup\n function showMore() {\n $_popupDate = date;\n }\n let showPopup = $derived($_popupDate && datesEqual(date, $_popupDate));\n // Use `pre` to tick before popup positioning tick\n $effect.pre(() => {\n dayChunks;\n longChunks;\n if (showPopup) {\n // Let chunks to reposition then set popup chunks\n tick().then(setPopupChunks);\n }\n });\n function setPopupChunks() {\n let nextDay = addDay(cloneDate(date));\n let chunks = dayChunks.concat(longChunks[date.getTime()]?.chunks || []);\n $_popupChunks = chunks\n .map(chunk => assign({}, chunk, createEventChunk(chunk.event, date, nextDay), {days: 1, dates: [date]}))\n .sort((a, b) => a.top - b.top);\n }\n\n // Week numbers\n let showWeekNumber = $derived($weekNumbers && date.getUTCDay() == ($firstDay ? 1 : 0));\n let weekNumber = $derived.by(() => {\n let weekNumber;\n if (showWeekNumber) {\n let week = getWeekNumber(date, $firstDay);\n if ($weekNumberContent) {\n weekNumber = isFunction($weekNumberContent)\n ? $weekNumberContent({date: toLocalDate(date), week})\n : $weekNumberContent;\n } else {\n weekNumber = 'W' + String(week).padStart(2, '0');\n }\n }\n return weekNumber;\n });\n\n export function reposition() {\n if (!disabled) {\n runReposition(refs, dayChunks);\n }\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{otherMonth ? ' ' + $theme.otherMonth : ''}{highlight ? ' ' + $theme.highlight : ''}{disabled ? ' ' + $theme.disabled : ''}\"\n role=\"cell\"\n onpointerdown={$_interaction.action?.select}\n>\n <div class=\"{$theme.dayHead}\">\n <time\n datetime=\"{toISOString(date, 10)}\"\n use:setContent={$_intlDayCell.format(date)}\n ></time>\n {#if showWeekNumber}\n <span\n class=\"{$theme.weekNumber}\"\n use:setContent={weekNumber}\n ></span>\n {/if}\n </div>\n <div class=\"{$theme.bgEvents}\">\n {#if !disabled}\n {#each dayBgChunks as chunk (chunk.event)}\n <Event {chunk}/>\n {/each}\n {/if}\n </div>\n {#if !disabled}\n <!-- Pointer -->\n {#if iChunks[2] && datesEqual(iChunks[2].date, date)}\n <div class=\"{$theme.events}\">\n <Event chunk={iChunks[2]}/>\n </div>\n {/if}\n <!-- Drag & Resize -->\n {#if iChunks[0] && datesEqual(iChunks[0].date, date)}\n <div class=\"{$theme.events} {$theme.preview}\">\n <Event chunk={iChunks[0]}/>\n </div>\n {/if}\n {/if}\n <div class=\"{$theme.events}\">\n {#if !disabled}\n {#each dayChunks as chunk, i (chunk.event)}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Event {chunk} {longChunks} {dates} bind:this={refs[i]}/>\n {/each}\n {/if}\n </div>\n {#if showPopup}\n <Popup/>\n {/if}\n <div class=\"{$theme.dayFoot}\">\n {#if !disabled && hiddenEvents.size}\n <!-- svelte-ignore a11y_missing_attribute -->\n <!-- svelte-ignore a11y_missing_content -->\n <!-- svelte-ignore a11y_consider_explicit_label -->\n <a\n role=\"button\"\n tabindex=\"0\"\n aria-haspopup=\"true\"\n onclick={stopPropagation(showMore)}\n onkeydown={keyEnter(showMore)}\n onpointerdown={stopPropagation()}\n use:setContent={moreLink}\n ></a>\n {/if}\n </div>\n</div>\n","<script>\n import {getContext} from 'svelte';\n import {\n addDay, bgEvent, cloneDate, createEventChunk, eventIntersects, limitToRange, prepareEventChunks,\n runReposition\n } from '#lib';\n import Day from './Day.svelte';\n\n let {dates} = $props();\n\n let {_filteredEvents, _iEvents,\n resources, filterEventsWithResources, hiddenDays, theme, validRange } = getContext('state');\n\n let refs = [];\n\n let start = $derived(limitToRange(dates[0], $validRange));\n let end = $derived(addDay(cloneDate(limitToRange(dates.at(-1), $validRange))));\n\n let [chunks, bgChunks, longChunks] = $derived.by(() => {\n let chunks = [];\n let bgChunks = [];\n for (let event of $_filteredEvents) {\n if (eventIntersects(event, start, end, $filterEventsWithResources ? $resources : undefined)) {\n let chunk = createEventChunk(event, start, end);\n if (bgEvent(event.display)) {\n if (event.allDay) {\n bgChunks.push(chunk);\n }\n } else {\n chunks.push(chunk);\n }\n }\n }\n prepareEventChunks(bgChunks, $hiddenDays);\n let longChunks = prepareEventChunks(chunks, $hiddenDays);\n return [chunks, bgChunks, longChunks];\n });\n\n let iChunks = $derived($_iEvents.map(event => {\n let chunk;\n if (event && eventIntersects(event, start, end)) {\n chunk = createEventChunk(event, start, end);\n prepareEventChunks([chunk], $hiddenDays);\n } else {\n chunk = null;\n }\n return chunk;\n }));\n\n export function reposition() {\n runReposition(refs, dates);\n }\n</script>\n\n<div class=\"{$theme.days}\" role=\"row\">\n {#each dates as date, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Day {date} {chunks} {bgChunks} {longChunks} {iChunks} {dates} bind:this={refs[i]} />\n {/each}\n</div>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {runReposition, observeResize} from '#lib';\n import Week from './Week.svelte';\n\n let {\n _bodyEl, _viewDates, _filteredEvents, _hiddenEvents, _recheckScrollable, dayMaxEvents, hiddenDays, theme\n } = getContext('state');\n\n let refs = [];\n\n let days = $derived(7 - $hiddenDays.length);\n let weeks = $derived.by(() => {\n let weeks = [];\n for (let i = 0; i < $_viewDates.length / days; ++i) {\n let dates = [];\n for (let j = 0; j < days; ++j) {\n dates.push($_viewDates[i * days + j]);\n }\n weeks.push(dates);\n }\n return weeks;\n });\n $effect.pre(() => {\n weeks;\n $dayMaxEvents;\n $_hiddenEvents = {};\n });\n\n function reposition() {\n runReposition(refs, weeks);\n }\n $effect(() => {\n $_filteredEvents;\n $_hiddenEvents;\n $dayMaxEvents;\n untrack(reposition);\n });\n</script>\n\n<div\n bind:this={$_bodyEl}\n class=\"{$theme.body}{$dayMaxEvents === true ? ' ' + $theme.uniform : ''}\"\n use:observeResize={() => $_recheckScrollable = true}\n>\n <div class=\"{$theme.content}\">\n {#each weeks as dates, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Week {dates} bind:this={refs[i]}/>\n {/each}\n </div>\n</div>\n\n<svelte:window on:resize={reposition}/>\n","import {writable} from 'svelte/store';\nimport {btnTextMonth, intl, themeView} from '#lib';\nimport {days} from './stores.js';\nimport View from './View.svelte';\n\nexport default {\n createOptions(options) {\n options.dayMaxEvents = false;\n options.dayCellFormat = {day: 'numeric'};\n options.dayPopoverFormat = {month: 'long', day: 'numeric', year: 'numeric'};\n options.moreLinkContent = undefined;\n options.weekNumbers = false;\n options.weekNumberContent = undefined;\n // Common options\n options.buttonText.dayGridMonth = 'month';\n options.buttonText.close = 'Close';\n options.theme.uniform = 'ec-uniform';\n options.theme.dayFoot = 'ec-day-foot';\n options.theme.popup = 'ec-popup';\n options.theme.weekNumber = 'ec-week-number';\n options.view = 'dayGridMonth';\n options.views.dayGridMonth = {\n buttonText: btnTextMonth,\n component: View,\n dayHeaderFormat: {weekday: 'short'},\n dayHeaderAriaLabelFormat: {weekday: 'long'},\n displayEventEnd: false,\n duration: {months: 1},\n theme: themeView('ec-day-grid ec-month-view'),\n titleFormat: {year: 'numeric', month: 'long'}\n };\n },\n\n createStores(state) {\n state._days = days(state);\n state._intlDayCell = intl(state.locale, state.dayCellFormat);\n state._intlDayPopover = intl(state.locale, state.dayPopoverFormat);\n state._hiddenEvents = writable({});\n state._popupDate = writable(null);\n state._popupChunks = writable([]);\n }\n}\n","import {bgEvent, helperEvent} from '#lib';\n\nexport function eventDraggable(event, $eventStartEditable, $editable) {\n return (event.startEditable ?? $eventStartEditable ?? event.editable ?? $editable);\n}\n\nexport function eventResizable(event, $eventDurationEditable, $editable) {\n return (event.durationEditable ?? $eventDurationEditable ?? event.editable ?? $editable);\n}\n","import {min, max} from '#lib';\n\nlet busy = false;\nexport function animate(fn) {\n if (!busy) {\n busy = true;\n window.requestAnimationFrame(() => {\n fn();\n busy = false;\n });\n }\n}\n\nexport function limit(value, minLimit, maxLimit) {\n return max(minLimit, min(maxLimit, value));\n}\n\nexport function draggable(event) {\n\n}\n","<script>\n import {getContext} from 'svelte';\n import {\n addDay, addDuration, ancestor, assign, cloneDate, cloneEvent, copyTime, createDuration, getElementWithPayload,\n getPayload, isFunction, listen, listView, max, min, noop, rect, runAll, subtractDay, subtractDuration,\n timelineView, toEventWithLocalDates, toISOString, toLocalDate, toViewWithLocalDates\n } from '#lib';\n import {animate, limit, eventDraggable} from './lib';\n\n let {_iEvents, _iClass, _events, _view, _dayGrid, _bodyEl, datesAboveResources, dateClick, dragConstraint,\n dragScroll, editable, eventStartEditable, eventDragMinDistance, eventDragStart, eventDragStop, eventDrop,\n eventLongPressDelay, eventResizeStart, eventResizeStop, eventResize, longPressDelay, resizeConstraint,\n selectable, select: selectFn, selectBackgroundColor, selectConstraint, selectLongPressDelay, selectMinDistance,\n slotDuration, slotHeight, slotWidth, unselect: unselectFn, unselectAuto, unselectCancel, validRange,\n view} = getContext('state');\n\n const ACTION_DRAG = 1;\n const ACTION_RESIZE_END = 2;\n const ACTION_RESIZE_START = 3;\n const ACTION_SELECT = 4;\n const ACTION_CLICK = 5;\n const ACTION_NO_ACTION = 6;\n let action;\n let interacting;\n let event;\n let display;\n let date, newDate;\n let resource, newResource;\n let fromX, fromY;\n let toX, toY;\n let bodyEl, bodyRect, clipEl, clipRect;\n let delta;\n let allDay;\n let iClass;\n let minResize; // minimum end time when resizing\n let selectStep; // minimum selection step\n let selected; // whether selection has been made\n let noDateClick; // do not perform date click\n let timer; // timer for long press delays\n let viewport;\n let margin;\n let extraDuration; // extra duration for zero duration events\n\n export function draggable(event) {\n return eventDraggable(event, $eventStartEditable, $editable);\n }\n\n export function drag(eventToDrag, jsEvent, forceDate, forceMargin) {\n if (!action) {\n action = validJsEvent(jsEvent) ? ACTION_DRAG : ACTION_NO_ACTION;\n\n if (complexAction()) {\n event = eventToDrag;\n\n common(jsEvent);\n\n if (forceDate) {\n // Force date in popup\n date = forceDate;\n }\n\n if (forceMargin) {\n margin = forceMargin;\n }\n\n iClass = 'dragging';\n\n move(jsEvent);\n }\n }\n }\n\n export function resize(eventToResize, jsEvent, start, axis, forceDate, forceMargin, zeroDuration) {\n if (!action) {\n action = validJsEvent(jsEvent) ? (\n start ? ACTION_RESIZE_START : ACTION_RESIZE_END\n ) : ACTION_NO_ACTION;\n\n if (complexAction()) {\n event = eventToResize;\n\n common(jsEvent);\n\n if (forceDate) {\n // Force date in popup\n date = forceDate;\n }\n\n if (forceMargin) {\n margin = forceMargin;\n }\n\n iClass = axis === 'x' ? 'resizingX' : 'resizingY';\n\n // Calculate the limits for resize\n if (resizingStart()) {\n minResize = cloneDate(event.end);\n if (allDay) {\n copyTime(minResize, event.start);\n if (minResize >= event.end) {\n subtractDay(minResize);\n }\n } else {\n subtractDuration(minResize, $slotDuration);\n if (minResize < event.start) {\n minResize = event.start;\n }\n // Overwrite the date due to possible discrepancy between calculated date\n // and resizer coordinates in browser\n date = event.start;\n }\n } else {\n minResize = cloneDate(event.start);\n if (allDay) {\n copyTime(minResize, event.end);\n if (minResize <= event.start && !zeroDuration) {\n addDay(minResize);\n }\n } else {\n addDuration(minResize, $slotDuration);\n if (minResize > event.end) {\n minResize = event.end;\n }\n // Overwrite the date due to possible discrepancy between calculated date\n // and resizer coordinates in browser\n date = event.end;\n if (!zeroDuration) {\n date = subtractDuration(cloneDate(date), $slotDuration);\n }\n }\n\n // Handle zero duration events\n if (zeroDuration && !allDay) {\n extraDuration = $slotDuration;\n }\n }\n\n move(jsEvent);\n }\n }\n }\n\n export function select(jsEvent) {\n if (!action) {\n action = validJsEvent(jsEvent) ? (\n $selectable && !listView($view) ? ACTION_SELECT : ACTION_CLICK\n ) : ACTION_NO_ACTION;\n\n if (complexAction()) {\n common(jsEvent);\n\n iClass = 'selecting';\n\n selectStep = allDay ? createDuration({day: 1}) : $slotDuration;\n\n // Create dummy source event\n event = {\n allDay,\n start: date,\n end: addDuration(cloneDate(date), selectStep),\n resourceIds: resource ? [resource.id] : []\n };\n\n move(jsEvent);\n }\n }\n }\n\n export function noAction() {\n if (!action) {\n action = ACTION_NO_ACTION;\n }\n }\n\n\tfunction common(jsEvent) {\n window.getSelection().removeAllRanges();\n\n fromX = toX = jsEvent.clientX;\n fromY = toY = jsEvent.clientY;\n\n let dayEl = getElementWithPayload(toX, toY);\n ({allDay, date, resource} = getPayload(dayEl)(toX, toY));\n\n if (timelineView($view)) {\n bodyEl = clipEl = $_bodyEl;\n } else {\n bodyEl = ancestor(dayEl, resource ? 4 : 3);\n clipEl = ancestor(dayEl, resource && (dragging() || $datesAboveResources) ? 2 : 1);\n }\n calcViewport();\n\n if (jsEvent.pointerType !== 'mouse') {\n // For touch devices init long press delay\n timer = setTimeout(() => {\n if (action) {\n interacting = true;\n move(jsEvent);\n }\n }, (selecting() ? $selectLongPressDelay : $eventLongPressDelay) ?? $longPressDelay);\n }\n }\n\n function move(jsEvent) {\n if (\n interacting ||\n jsEvent && jsEvent.pointerType === 'mouse' && distance() >= (selecting() ? $selectMinDistance : $eventDragMinDistance)\n ) {\n interacting = true;\n unselect(jsEvent);\n $_iClass = iClass;\n\n if (!$_iEvents[0]) {\n if (selecting()) {\n createIEventSelect();\n } else {\n createIEvent(jsEvent, resizing() ? $eventResizeStart : $eventDragStart);\n }\n }\n\n let payload = findPayload(findDayEl());\n if (payload) {\n let newAllDay;\n ({allDay: newAllDay, date: newDate, resource: newResource} = payload);\n\n if (newAllDay === allDay) {\n let candidate = copyIEventData({}, $_iEvents[0]);\n let constraintFn = $resizeConstraint;\n delta = createDuration((newDate - date) / 1000);\n if (resizingStart()) {\n // Resizing start\n candidate.start = addDuration(cloneDate(event.start), delta);\n if (candidate.start > minResize) {\n candidate.start = minResize;\n delta = createDuration((minResize - event.start) / 1000);\n }\n } else {\n candidate.end = addDuration(cloneDate(event.end), delta);\n if (extraDuration) {\n addDuration(candidate.end, extraDuration);\n }\n if (resizing()) {\n // Resizing end\n if (candidate.end < minResize) {\n candidate.end = minResize;\n delta = createDuration((minResize - event.end) / 1000);\n }\n } else if (selecting()) {\n // Selecting\n if (candidate.end < event.end) {\n candidate.start = subtractDuration(candidate.end, selectStep);\n candidate.end = event.end;\n } else {\n candidate.start = event.start;\n }\n constraintFn = $selectConstraint;\n } else {\n // Dragging\n candidate.start = addDuration(cloneDate(event.start), delta);\n if (resource) {\n candidate.resourceIds = event.resourceIds.filter(id => id !== resource.id);\n candidate.resourceIds.push(newResource.id);\n }\n constraintFn = $dragConstraint;\n }\n }\n // Check constraint\n do {\n if (constraintFn !== undefined) {\n candidate = copyIEventData(cloneEvent(event), candidate);\n let result = constraintFn(\n selecting()\n ? createSelectCallbackInfo(candidate, jsEvent)\n : createCallbackInfo(candidate, event, jsEvent)\n );\n if (result === false) {\n // Revert preview event\n $_iEvents[0] = copyIEventData($_iEvents[0], event);\n break;\n }\n }\n // Update preview event\n $_iEvents[0] = copyIEventData($_iEvents[0], candidate);\n } while (0);\n }\n }\n }\n\n if ($dragScroll) {\n let thresholdY = $slotHeight * 2;\n let thresholdX = $slotWidth;\n animate(() => {\n if (bodyEl) {\n if (toY < thresholdY) {\n window.scrollBy(0, max(-10, (toY - thresholdY) / 3));\n }\n if (toY < bodyRect.top + thresholdY) {\n bodyEl.scrollTop += max(-10, (toY - bodyRect.top - thresholdY) / 3);\n }\n if (toY > window.innerHeight - thresholdY) {\n window.scrollBy(0, min(10, (toY - window.innerHeight + thresholdY) / 3));\n }\n if (toY > bodyRect.bottom - thresholdY) {\n bodyEl.scrollTop += min(10, (toY - bodyRect.bottom + thresholdY) / 3);\n }\n\n if (timelineView($view)) {\n if (toX < bodyRect.left + thresholdX) {\n bodyEl.scrollLeft += max(-10, (toX - bodyRect.left - thresholdX) / 3);\n }\n if (toX > bodyRect.right - thresholdX) {\n bodyEl.scrollLeft += min(10, (toX - bodyRect.right + thresholdX) / 3);\n }\n }\n }\n });\n }\n }\n\n export function handleScroll() {\n if (complexAction()) {\n calcViewport();\n move();\n }\n }\n\n function handlePointerMove(jsEvent) {\n if (complexAction() && jsEvent.isPrimary) {\n toX = jsEvent.clientX;\n toY = jsEvent.clientY;\n move(jsEvent);\n }\n }\n\n function handlePointerUp(jsEvent) {\n if (selected && $unselectAuto && !($unselectCancel && jsEvent.target.closest($unselectCancel))) {\n unselect(jsEvent);\n }\n if (action && jsEvent.isPrimary) {\n if (interacting) {\n if (selecting()) {\n selected = true;\n if (isFunction($selectFn)) {\n let info = createSelectCallbackInfo($_iEvents[0], jsEvent);\n $selectFn(info);\n }\n } else {\n event.display = display;\n\n let callback = resizing() ? $eventResizeStop : $eventDragStop;\n if (isFunction(callback)) {\n callback({event: toEventWithLocalDates(event), jsEvent, view: toViewWithLocalDates($_view)});\n }\n\n let oldEvent = cloneEvent(event);\n updateEvent(event, $_iEvents[0]);\n\n destroyIEvent();\n\n callback = resizing() ? $eventResize : $eventDrop;\n if (isFunction(callback)) {\n let eventRef = event;\n let info = createCallbackInfo(event, oldEvent, jsEvent);\n callback(assign(info, {\n revert() {\n updateEvent(eventRef, oldEvent);\n }\n }));\n }\n }\n } else {\n if (clicking() || selecting()) {\n // Perform date click\n if (isFunction($dateClick) && !noDateClick) {\n toX = jsEvent.clientX;\n toY = jsEvent.clientY;\n let dayEl = getElementWithPayload(toX, toY);\n if (dayEl) {\n let {allDay, date, resource} = getPayload(dayEl)(toX, toY);\n $dateClick({\n allDay,\n date: toLocalDate(date),\n dateStr: toISOString(date),\n dayEl,\n jsEvent,\n view: toViewWithLocalDates($_view),\n resource\n });\n }\n }\n }\n }\n\n interacting = false;\n action = fromX = fromY = toX = toY = event = display = date = newDate = resource = newResource = delta =\n extraDuration = allDay = $_iClass = minResize = selectStep = margin = undefined;\n bodyEl = clipEl = bodyRect = clipRect = undefined;\n\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n }\n\n noDateClick = false;\n }\n\n function findDayEl() {\n // Limit coordinates to viewport\n return getElementWithPayload(\n limit(toX, viewport[0], viewport[1]),\n limit(toY, viewport[2], viewport[3])\n );\n }\n\n function findPayload(dayEl) {\n if (dayEl) {\n let payload = getPayload(dayEl)(toX, toY);\n if (payload.disabled) {\n if (!$validRange.end || payload.date < $validRange.end) {\n return findPayload(dayEl.nextElementSibling);\n }\n if (!$validRange.start || payload.date > $validRange.start) {\n return findPayload(dayEl.previousElementSibling);\n }\n } else {\n return payload;\n }\n }\n return null;\n }\n\n function calcViewport() {\n bodyRect = rect(bodyEl);\n clipRect = rect(clipEl);\n viewport = [\n max(0, clipRect.left + (timelineView($view) ? 1 : ($_dayGrid ? 0 : 8))), // left\n min(document.documentElement.clientWidth, clipRect.left + clipEl.clientWidth) - 2, // right\n max(0, bodyRect.top), // top\n min(document.documentElement.clientHeight, bodyRect.top + bodyEl.clientHeight) - 2 // bottom\n ];\n }\n\n function createIEvent(jsEvent, callback) {\n if (isFunction(callback)) {\n callback({event: toEventWithLocalDates(event), jsEvent, view: toViewWithLocalDates($_view)});\n }\n display = event.display;\n event.display = 'preview';\n $_iEvents[0] = cloneEvent(event);\n if (margin !== undefined) {\n $_iEvents[0]._margin = margin;\n }\n if (extraDuration) {\n addDuration($_iEvents[0].end, extraDuration);\n }\n event.display = 'ghost';\n $_events = $_events;\n }\n\n function createIEventSelect() {\n $_iEvents[0] = {\n id: '{select}',\n allDay: event.allDay,\n start: event.start,\n title: '',\n display: 'preview',\n extendedProps: {},\n backgroundColor: $selectBackgroundColor,\n resourceIds: event.resourceIds,\n classNames: [],\n styles: []\n };\n }\n\n function destroyIEvent() {\n $_iEvents[0] = null;\n }\n\n function copyIEventData(target, source) {\n target.start = source.start;\n target.end = source.end;\n target.resourceIds = source.resourceIds;\n return target;\n }\n\n function updateEvent(target, source) {\n copyIEventData(target, source);\n $_events = $_events;\n }\n\n function createSelectCallbackInfo(event, jsEvent) {\n let {start, end} = toEventWithLocalDates(event);\n return {\n start,\n end,\n startStr: toISOString(event.start),\n endStr: toISOString(event.end),\n allDay,\n view: toViewWithLocalDates($_view),\n resource,\n jsEvent\n };\n }\n\n function createCallbackInfo(event, oldEvent, jsEvent) {\n let info;\n if (resizing()) {\n info = resizingStart()\n ? {startDelta: delta, endDelta: createDuration(0)}\n : {startDelta: createDuration(0), endDelta: delta};\n } else {\n info = {\n delta,\n oldResource: resource !== newResource ? resource : undefined,\n newResource: resource !== newResource ? newResource : undefined\n };\n }\n assign(info, {\n event: toEventWithLocalDates(event),\n oldEvent: toEventWithLocalDates(oldEvent),\n view: toViewWithLocalDates($_view),\n jsEvent\n });\n\n return info;\n }\n\n function distance() {\n return Math.sqrt(Math.pow(toX - fromX, 2) + Math.pow(toY - fromY, 2));\n }\n\n function dragging() {\n return action === ACTION_DRAG;\n }\n\n function resizing() {\n return action === ACTION_RESIZE_END || resizingStart();\n }\n\n function resizingStart() {\n return action === ACTION_RESIZE_START;\n }\n\n function clicking() {\n return action === ACTION_CLICK;\n }\n\n function selecting() {\n return action === ACTION_SELECT;\n }\n\n function complexAction() {\n return action && action < ACTION_CLICK;\n }\n\n function validJsEvent(jsEvent) {\n return jsEvent.isPrimary && (jsEvent.pointerType !== 'mouse' || jsEvent.buttons & 1);\n }\n\n export function unselect(jsEvent) {\n if (selected) {\n selected = false;\n destroyIEvent();\n if (isFunction($unselectFn)) {\n $unselectFn({\n jsEvent,\n view: toViewWithLocalDates($_view)\n });\n }\n }\n }\n\n export function noClick() {\n noDateClick = true;\n }\n\n // Clear selection on view params change\n _view.subscribe(unselect);\n\n function handleTouchStart(jsEvent) {\n if (complexAction()) {\n let target = jsEvent.target;\n let stops = [];\n let stop = () => runAll(stops);\n stops.push(listen(window, 'touchmove', noop, {passive: false}))\n stops.push(listen(target, 'touchmove', createPreventDefaultHandler(() => interacting)));\n stops.push(listen(target, 'touchend', stop));\n stops.push(listen(target, 'touchcancel', stop));\n }\n }\n\n function createPreventDefaultHandler(condition) {\n return jsEvent => {\n if (condition()) {\n jsEvent.preventDefault();\n }\n };\n }\n</script>\n\n<svelte:window\n onpointermove={handlePointerMove}\n onpointerup={handlePointerUp}\n onpointercancel={handlePointerUp}\n onscroll={handleScroll}\n onselectstart={createPreventDefaultHandler(complexAction)}\n oncontextmenu={createPreventDefaultHandler(() => timer)}\n ontouchstart={handleTouchStart}\n/>\n","<script>\n import {getContext} from 'svelte';\n import {addDuration, cloneDate, getElementWithPayload, getPayload} from '#lib';\n\n let {_iEvents, slotDuration} = getContext('state');\n\n let x = 0, y = 0;\n\n $effect(() => {\n if ($_iEvents[0]) {\n removePointerEvent();\n }\n });\n\n function move() {\n let dayEl = getElementWithPayload(x, y);\n\n if (dayEl) {\n let {allDay, date, resource, disabled} = getPayload(dayEl)(x, y);\n if (!disabled) {\n let idx = allDay ? 2 : 1;\n\n if (!$_iEvents[idx]) {\n createPointerEvent(idx);\n }\n $_iEvents[idx].start = date;\n $_iEvents[idx].end = addDuration(cloneDate(date), $slotDuration);\n $_iEvents[idx].resourceIds = resource ? [resource.id] : [];\n\n return;\n }\n }\n\n removePointerEvent();\n }\n\n export function handleScroll() {\n move();\n }\n\n function handlePointerMove(jsEvent) {\n if (validEvent(jsEvent)) {\n x = jsEvent.clientX;\n y = jsEvent.clientY;\n move();\n }\n }\n\n function createPointerEvent(idx) {\n $_iEvents[idx] = {\n id: '{pointer}',\n title: '',\n display: 'pointer',\n extendedProps: {},\n backgroundColor: 'transparent',\n classNames: [],\n styles: []\n };\n }\n\n function removePointerEvent() {\n if ($_iEvents[1]) {\n $_iEvents[1] = null;\n }\n if ($_iEvents[2]) {\n $_iEvents[2] = null;\n }\n }\n\n function validEvent(jsEvent) {\n return jsEvent.isPrimary && jsEvent.pointerType === 'mouse';\n }\n</script>\n\n<svelte:window\n onpointermove={handlePointerMove}\n onscroll={handleScroll}\n/>\n","<script>\n import {getContext} from 'svelte';\n import {bgEvent, helperEvent} from '#lib';\n import {eventResizable} from './lib';\n\n let {chunk, axis, forceDate = undefined, forceMargin = undefined, children} = $props();\n\n let {theme, eventDurationEditable, eventResizableFromStart, editable, _interaction} = getContext('state');\n\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n let resizable = $derived(\n !bgEvent(display) && !helperEvent(display) && eventResizable(event, $eventDurationEditable, $editable)\n );\n\n function createResizeHandler(start) {\n return jsEvent => $_interaction.action.resize(\n event,\n jsEvent,\n start,\n axis,\n forceDate?.(),\n forceMargin?.(),\n chunk.zeroDuration\n );\n }\n</script>\n\n{#if resizable && $eventResizableFromStart}\n <div class=\"{$theme.resizer} {$theme.start}\" onpointerdown={createResizeHandler(true)}></div>\n{/if}\n{@render children()}\n{#if resizable}\n <div class=\"{$theme.resizer}\" onpointerdown={createResizeHandler(false)}></div>\n{/if}\n","<script>\n import {getContext} from 'svelte';\n import {bgEvent, helperEvent, listen} from '#lib';\n import {eventDraggable} from './lib';\n import Action from './Action.svelte';\n import Pointer from './Pointer.svelte';\n import Resizer from './Resizer.svelte';\n\n let {theme, editable, eventStartEditable, pointer, _bodyEl,\n _interaction, _iClasses} = getContext('state');\n\n $_interaction.resizer = Resizer;\n\n $effect(() => {\n $theme;\n $eventStartEditable;\n $editable;\n $_iClasses = (classNames, event) => {\n let {display} = event;\n return [\n ...classNames,\n helperEvent(display)\n ? [$theme[display]]\n : (\n !bgEvent(display) && eventDraggable(event, $eventStartEditable, $editable)\n ? [$theme.draggable]\n : []\n )\n ];\n };\n });\n\n $effect(() => {\n if ($_bodyEl) {\n return listen($_bodyEl, 'scroll', bodyScrollHandler);\n }\n });\n\n function bodyScrollHandler() {\n for (let component of Object.values($_interaction)) {\n component?.handleScroll?.();\n }\n }\n</script>\n\n<Action bind:this={$_interaction.action}/>\n{#if $pointer}\n <Pointer bind:this={$_interaction.pointer}/>\n{/if}\n","import Auxiliary from './Auxiliary.svelte';\n\nexport default {\n createOptions(options) {\n options.dateClick = undefined;\n options.dragConstraint = undefined;\n options.dragScroll = true;\n options.editable = false;\n options.eventDragMinDistance = 5;\n options.eventDragStart = undefined;\n options.eventDragStop = undefined;\n options.eventDrop = undefined;\n options.eventDurationEditable = true;\n options.eventLongPressDelay = undefined;\n options.eventResizableFromStart = false;\n options.eventResizeStart = undefined;\n options.eventResizeStop = undefined;\n options.eventResize = undefined;\n options.eventStartEditable = true;\n options.longPressDelay = 1000;\n options.pointer = false;\n options.resizeConstraint = undefined;\n options.select = undefined;\n options.selectBackgroundColor = undefined; // ec option\n options.selectConstraint = undefined;\n options.selectLongPressDelay = undefined;\n options.selectMinDistance = 5;\n options.unselect = undefined;\n options.unselectAuto = true;\n options.unselectCancel = '';\n options.theme.draggable = 'ec-draggable';\n options.theme.ghost = 'ec-ghost';\n options.theme.preview = 'ec-preview';\n options.theme.pointer = 'ec-pointer';\n options.theme.resizer = 'ec-resizer';\n options.theme.start = 'ec-start';\n options.theme.dragging = 'ec-dragging';\n options.theme.resizingY = 'ec-resizing-y';\n options.theme.resizingX = 'ec-resizing-x';\n options.theme.selecting = 'ec-selecting';\n },\n\n createStores(state) {\n state._auxiliary.update($_auxiliary => [...$_auxiliary, Auxiliary]);\n }\n}\n","<script>\n import {getContext} from 'svelte';\n import {BaseEvent} from '#components';\n\n let {chunk} = $props();\n\n let {theme, _interaction} = getContext('state');\n\n // Style\n let styles = $derived(style => {\n delete style['background-color'];\n delete style['color'];\n return style;\n });\n</script>\n\n<BaseEvent {chunk} {styles} onpointerdown={$_interaction.action?.noAction}>\n {#snippet body(defaultBody, bgColor, txtColor)}\n <div class=\"{$theme.eventTag}\" style:background-color={bgColor}></div>\n {@render defaultBody()}\n {/snippet}\n</BaseEvent>\n","<script>\n import {getContext} from 'svelte';\n import {\n addDay, bgEvent, cloneDate, createEventChunk, datesEqual, eventIntersects, outsideRange, setContent, setPayload,\n sortEventChunks, toISOString\n } from '#lib';\n import Event from './Event.svelte';\n\n let {date} = $props();\n\n let {_filteredEvents, _interaction, _intlListDay, _intlListDaySide, _today,\n resources, filterEventsWithResources, highlightedDates, theme, validRange} = getContext('state');\n\n let el = $state();\n let isToday = $derived(datesEqual(date, $_today));\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n let datetime = $derived(toISOString(date, 10));\n\n let chunks = $derived.by(() => {\n let chunks = [];\n if (!disabled) {\n let start = date;\n let end = addDay(cloneDate(date));\n for (let event of $_filteredEvents) {\n if (!bgEvent(event.display) && eventIntersects(event, start, end, $filterEventsWithResources ? $resources : undefined)) {\n let chunk = createEventChunk(event, start, end);\n chunks.push(chunk);\n }\n }\n sortEventChunks(chunks);\n }\n return chunks;\n });\n\n // dateFromPoint\n $effect(() => {\n if (el) {\n setPayload(el, () => ({allDay: true, date, resource: undefined, dayEl: el, disabled}));\n }\n });\n</script>\n\n{#if chunks.length}\n <div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{highlight ? ' ' + $theme.highlight : ''}\"\n role=\"listitem\"\n onpointerdown={$_interaction.action?.select}\n >\n <!-- svelte-ignore a11y_missing_content -->\n <h4 class=\"{$theme.dayHead}\">\n <time {datetime} use:setContent={$_intlListDay.format(date)}></time>\n <time class=\"{$theme.daySide}\" {datetime} use:setContent={$_intlListDaySide.format(date)}></time>\n </h4>\n {#each chunks as chunk (chunk.event)}\n <Event {chunk}/>\n {/each}\n </div>\n{/if}\n","<script>\n import {getContext} from 'svelte';\n import {addDay, cloneDate, toViewWithLocalDates, setContent, bgEvent, isFunction} from '#lib';\n import Day from './Day.svelte';\n\n let {_bodyEl, _filteredEvents, _view, _viewDates, noEventsClick, noEventsContent, theme} = getContext('state');\n\n let noEvents = $derived.by(() => {\n let noEvents = true;\n if ($_viewDates.length) {\n let start = $_viewDates[0];\n let end = addDay(cloneDate($_viewDates.at(-1)));\n for (let event of $_filteredEvents) {\n if (!bgEvent(event.display) && event.start < end && event.end > start) {\n noEvents = false;\n break;\n }\n }\n }\n return noEvents;\n });\n\n let content = $derived(isFunction($noEventsContent) ? $noEventsContent() : $noEventsContent);\n\n function onclick(jsEvent) {\n if (isFunction($noEventsClick)) {\n $noEventsClick({jsEvent, view: toViewWithLocalDates($_view)});\n }\n }\n</script>\n\n<div bind:this={$_bodyEl} class=\"{$theme.body}\">\n <div class=\"{$theme.content}\">\n {#if noEvents}\n <!-- svelte-ignore a11y_click_events_have_key_events -->\n <!-- svelte-ignore a11y_no_static_element_interactions -->\n <div use:setContent={content} class=\"{$theme.noEvents}\" {onclick}></div>\n {:else}\n {#each $_viewDates as date}\n <Day {date}/>\n {/each}\n {/if}\n </div>\n</div>\n","import {btnTextDay, btnTextWeek, btnTextMonth, btnTextYear, intl, themeView} from '#lib';\nimport View from './View.svelte';\n\nexport default {\n createOptions(options) {\n // Common options\n options.buttonText.listDay = 'list';\n options.buttonText.listWeek = 'list';\n options.buttonText.listMonth = 'list';\n options.buttonText.listYear = 'list';\n options.listDayFormat = {weekday: 'long'};\n options.listDaySideFormat = {year: 'numeric', month: 'long', day: 'numeric'};\n options.noEventsClick = undefined; // ec option\n options.noEventsContent = 'No events';\n options.theme.daySide = 'ec-day-side';\n options.theme.eventTag = 'ec-event-tag';\n options.theme.noEvents = 'ec-no-events';\n options.view = 'listWeek';\n options.views.listDay = {\n buttonText: btnTextDay,\n component: View,\n duration: {days: 1},\n theme: themeView('ec-list ec-day-view')\n };\n options.views.listWeek = {\n buttonText: btnTextWeek,\n component: View,\n duration: {weeks: 1},\n theme: themeView('ec-list ec-week-view')\n };\n options.views.listMonth = {\n buttonText: btnTextMonth,\n component: View,\n duration: {months: 1},\n theme: themeView('ec-list ec-month-view')\n };\n options.views.listYear = {\n buttonText: btnTextYear,\n component: View,\n duration: {years: 1},\n theme: themeView('ec-list ec-year-view')\n };\n },\n\n createStores(state) {\n state._intlListDay = intl(state.locale, state.listDayFormat);\n state._intlListDaySide = intl(state.locale, state.listDaySideFormat);\n }\n}\n","import {derived} from 'svelte/store';\nimport {createDate, createSlotTimeLimits, createTimes, setMidnight} from '#lib';\n\nexport function times(state) {\n return derived(\n [state.slotDuration, state.slotLabelInterval, state._slotTimeLimits, state._intlSlotLabel],\n args => createTimes(setMidnight(createDate()), ...args)\n );\n}\n\nexport function slotTimeLimits(state) {\n return derived(\n [state.slotMinTime, state.slotMaxTime, state.flexibleSlotTimeLimits, state._viewDates, state._filteredEvents],\n args => createSlotTimeLimits(...args)\n );\n}\n","import {isFunction, sortEventChunks} from '#lib';\n\nexport function groupEventChunks(chunks) {\n if (!chunks.length) {\n return;\n }\n\n sortEventChunks(chunks);\n\n // Group\n let group = {\n columns: [],\n end: chunks[0].end\n };\n for (let chunk of chunks) {\n let c = 0;\n if (chunk.start < group.end) {\n for (; c < group.columns.length; ++c) {\n if (group.columns[c].at(-1).end <= chunk.start) {\n break;\n }\n }\n if (chunk.end > group.end) {\n group.end = chunk.end;\n }\n } else {\n group = {\n columns: [],\n end: chunk.end\n };\n }\n\n if (group.columns.length < c + 1) {\n group.columns.push([]);\n }\n group.columns[c].push(chunk);\n\n chunk.group = group;\n chunk.column = c;\n }\n}\n\nexport function createAllDayContent(allDayContent) {\n let text = 'all-day';\n let content;\n if (allDayContent) {\n content = isFunction(allDayContent) ? allDayContent({text}) : allDayContent;\n if (typeof content === 'string') {\n content = {html: content};\n }\n } else {\n content = {\n html: text\n };\n }\n\n return content;\n}\n","<script>\n import {getContext} from 'svelte';\n import {setContent} from '#lib';\n import {createAllDayContent} from './utils.js';\n\n let {children, lines} = $props();\n\n let {allDayContent, slotLabelInterval, theme, _times} = getContext('state');\n\n let allDayText = $derived(createAllDayContent($allDayContent));\n let showAllTimes = $derived($slotLabelInterval && $slotLabelInterval.seconds <= 0);\n</script>\n\n<div class=\"{$theme.sidebar}\">\n <div class=\"{$theme.sidebarTitle}\" use:setContent={allDayText}></div>\n {#each $_times as time, i}\n <time\n class=\"{$theme.time}{(i || showAllTimes) && time[2] ? '' : ' ' + $theme.minor}\"\n datetime=\"{time[0]}\"\n use:setContent={time[1]}\n ></time>\n {/each}\n</div>\n<div class=\"{$theme.days}\" role=\"row\">\n <div class=\"{$theme.lines}\">{#if lines}{@render lines()}{/if}</div>\n {#if children}\n {@render children()}\n {/if}\n</div>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {observeResize} from '#lib';\n import Section from './Section.svelte';\n\n let {children} = $props();\n\n let {\n _bodyEl, _viewDates, _slotTimeLimits, _times, _recheckScrollable, scrollTime, slotDuration, slotHeight, theme\n } = getContext('state');\n\n let el = $state();\n\n $effect(() => {\n $_bodyEl = el;\n });\n\n $effect(() => {\n $_viewDates;\n $scrollTime;\n untrack(scrollToTime);\n });\n\n function scrollToTime() {\n el.scrollTop = (($scrollTime.seconds - $_slotTimeLimits.min.seconds) / $slotDuration.seconds - 0.5) * $slotHeight;\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.body}\"\n use:observeResize={() => $_recheckScrollable = true}\n>\n <div class=\"{$theme.content}\">\n <Section {children}>\n {#snippet lines()}\n {#each $_times as time}\n <div class=\"{$theme.line}{time[2] ? '' : ' ' + $theme.minor}\"></div>\n {/each}\n {/snippet}\n </Section>\n </div>\n</div>\n","<script>\n import {getContext} from 'svelte';\n import {bgEvent, ghostEvent, helperEvent} from '#lib';\n import {InteractableEvent} from '#components';\n\n let {date, chunk} = $props();\n\n let {slotEventOverlap, slotDuration, slotHeight, _slotTimeLimits} = getContext('state');\n\n let display = $derived(chunk.event.display);\n\n // Style\n let styles = $derived(style => {\n let step = $slotDuration.seconds;\n let offset = $_slotTimeLimits.min.seconds;\n let start = (chunk.start - date) / 1000;\n let end = (chunk.end - date) / 1000;\n let top = (start - offset) / step * $slotHeight;\n let height = (end - start) / step * $slotHeight || $slotHeight;\n let maxHeight = ($_slotTimeLimits.max.seconds - start) / step * $slotHeight;\n style['top'] = `${top}px`;\n style['min-height'] = `${height}px`;\n style['height'] = `${height}px`;\n style['max-height'] = `${maxHeight}px`;\n if (!bgEvent(display) && !helperEvent(display) || ghostEvent(display)) {\n style['z-index'] = `${chunk.column + 1}`;\n style['left'] = `${100 / chunk.group.columns.length * chunk.column}%`;\n style['width'] = `${100 / chunk.group.columns.length * ($slotEventOverlap ? 0.5 * (1 + chunk.group.columns.length - chunk.column) : 1)}%`;\n }\n return style;\n });\n</script>\n\n<InteractableEvent {chunk} {styles} axis=\"y\" />\n","<script>\n import {getContext} from 'svelte';\n\n let {slotDuration, slotHeight, theme, _now, _today, _slotTimeLimits} = getContext('state');\n\n let start = $derived(($_now - $_today) / 1000);\n // Style\n let top = $derived.by(() => {\n let step = $slotDuration.seconds;\n let offset = $_slotTimeLimits.min.seconds;\n return (start - offset) / step * $slotHeight;\n });\n</script>\n\n<div\n class=\"{$theme.nowIndicator}\"\n style=\"top:{top}px\"\n></div>\n","<script>\n import {getContext, onMount} from 'svelte';\n import {\n addDuration, bgEvent, cloneDate, createEventChunk, datesEqual, eventIntersects, floor, outsideRange, rect,\n setPayload\n } from '#lib';\n import {groupEventChunks} from './utils.js';\n import Event from './Event.svelte';\n import NowIndicator from './NowIndicator.svelte';\n\n let {date, resource = undefined} = $props();\n\n let {_filteredEvents, _iEvents, highlightedDates, nowIndicator, slotDuration, slotHeight, filterEventsWithResources,\n theme, resources, validRange, _interaction, _today, _slotTimeLimits} = getContext('state');\n\n let el = $state();\n\n let isToday = $derived(datesEqual(date, $_today));\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n\n let start = $derived(addDuration(cloneDate(date), $_slotTimeLimits.min));\n let end = $derived(addDuration(cloneDate(date), $_slotTimeLimits.max));\n\n let resourceFilter = $derived(resource ?? ($filterEventsWithResources ? $resources : undefined));\n\n let [chunks, bgChunks] = $derived.by(() => {\n if (disabled) {\n return [[], []];\n }\n let chunks = [];\n let bgChunks = [];\n for (let event of $_filteredEvents) {\n if ((!event.allDay || bgEvent(event.display)) && eventIntersects(event, start, end, resourceFilter)) {\n let chunk = createEventChunk(event, start, end);\n switch (event.display) {\n case 'background': bgChunks.push(chunk); break;\n default: chunks.push(chunk);\n }\n }\n }\n groupEventChunks(chunks);\n return [chunks, bgChunks];\n });\n\n let iChunks = $derived.by(() => {\n if (disabled) {\n return [];\n }\n return $_iEvents.map(\n event => event && eventIntersects(event, start, end, resource) ? createEventChunk(event, start, end) : null\n );\n });\n\n function dateFromPoint(x, y) {\n y -= rect(el).top;\n return {\n allDay: false,\n date: addDuration(\n addDuration(cloneDate(date), $_slotTimeLimits.min),\n $slotDuration,\n floor(y / $slotHeight)\n ),\n resource,\n dayEl: el,\n disabled\n };\n }\n\n onMount(() => {\n setPayload(el, dateFromPoint);\n });\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{highlight ? ' ' + $theme.highlight : ''}{disabled ? ' ' + $theme.disabled : ''}\"\n role=\"cell\"\n onpointerdown={!disabled ? $_interaction.action?.select : undefined}\n>\n <div class=\"{$theme.bgEvents}\">\n {#if !disabled}\n {#each bgChunks as chunk (chunk.event)}\n <Event {date} {chunk}/>\n {/each}\n {/if}\n </div>\n <div class=\"{$theme.events}\">\n {#if !disabled}\n <!-- Pointer -->\n {#if iChunks[1]}\n <Event {date} chunk={iChunks[1]}/>\n {/if}\n {#each chunks as chunk (chunk.event)}\n <Event {date} {chunk}/>\n {/each}\n <!-- Drag, Resize & Select -->\n {#if iChunks[0] && !iChunks[0].event.allDay}\n <Event {date} chunk={iChunks[0]}/>\n {/if}\n {/if}\n </div>\n <div class=\"{$theme.extra}\">\n <!-- Now indicator -->\n {#if $nowIndicator && isToday && !disabled}\n <NowIndicator />\n {/if}\n </div>\n</div>\n","<script>\n import {ancestor, bgEvent, height, rect, repositionEvent} from '#lib';\n import {InteractableEvent} from '#components';\n\n let {chunk, longChunks = {}} = $props();\n\n let el = $state();\n let margin = $state(1);\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n // Style\n let styles = $derived(style => {\n if (bgEvent(display)) {\n style['width'] = `calc(${chunk.days * 100}% + ${(chunk.days - 1)}px)`;\n } else {\n style['width'] = `calc(${chunk.days * 100}% + ${(chunk.days - 1) * 7}px)`;\n style['margin-top'] = `${event._margin ?? margin}px`;\n }\n return style;\n });\n\n export function reposition() {\n if (!el) {\n return;\n }\n margin = repositionEvent(chunk, longChunks, height(el));\n }\n</script>\n\n<InteractableEvent\n bind:el\n {chunk}\n {styles}\n axis=\"x\"\n forceMargin={() => rect(el).top - rect(ancestor(el, 1)).top}\n/>\n","<script>\n import {getContext, onMount} from 'svelte';\n import {datesEqual, outsideRange, runReposition, setPayload} from '../../../lib';\n import Event from './Event.svelte';\n\n let {date, chunks, bgChunks, longChunks, iChunks = [], resource = undefined} = $props();\n\n let {highlightedDates, theme, validRange, _interaction, _today} = getContext('state');\n\n let el = $state();\n let refs = [];\n\n let dayChunks = $derived(chunks.filter(chunk => datesEqual(chunk.date, date)));\n let dayBgChunks = $derived(bgChunks.filter(bgChunk => datesEqual(bgChunk.date, date)));\n\n let isToday = $derived(datesEqual(date, $_today));\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n\n // dateFromPoint\n onMount(() => {\n setPayload(el, () => ({\n allDay: true,\n date,\n resource,\n dayEl: el,\n disabled\n }));\n });\n\n export function reposition() {\n if (!disabled) {\n runReposition(refs, dayChunks);\n }\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{highlight ? ' ' + $theme.highlight : ''}{disabled ? ' ' + $theme.disabled : ''}\"\n role=\"cell\"\n onpointerdown={!disabled ? $_interaction.action?.select : undefined}\n>\n <div class=\"{$theme.bgEvents}\">\n {#if !disabled}\n {#each dayBgChunks as chunk (chunk.event)}\n <Event {chunk}/>\n {/each}\n {/if}\n </div>\n <!-- Drag, Resize & Select -->\n {#if iChunks[0] && datesEqual(iChunks[0].date, date) && !disabled}\n <div class=\"{$theme.events} {$theme.preview}\">\n <Event chunk={iChunks[0]}/>\n </div>\n {/if}\n <div class=\"{$theme.events}\">\n {#if !disabled}\n {#each dayChunks as chunk, i (chunk.event)}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Event {chunk} {longChunks} bind:this={refs[i]}/>\n {/each}\n {/if}\n </div>\n</div>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {\n addDay, bgEvent, cloneDate, createEventChunk, eventIntersects, limitToRange, prepareEventChunks, runReposition\n } from '../../../lib';\n import Day from './Day.svelte';\n\n let {dates, resource = undefined} = $props();\n\n let {_filteredEvents, _iEvents, hiddenDays, resources, filterEventsWithResources, validRange } = getContext('state');\n\n let refs = [];\n\n let start = $derived(limitToRange(dates[0], $validRange));\n let end = $derived(addDay(cloneDate(limitToRange(dates.at(-1), $validRange))));\n\n let resourceFilter = $derived(resource ?? (\n $filterEventsWithResources ? $resources : undefined\n ));\n\n let [chunks, bgChunks, longChunks] = $derived.by(() => {\n let chunks = [];\n let bgChunks = [];\n for (let event of $_filteredEvents) {\n if (event.allDay && eventIntersects(event, start, end, resourceFilter)) {\n let chunk = createEventChunk(event, start, end);\n if (bgEvent(event.display)) {\n bgChunks.push(chunk);\n } else {\n chunks.push(chunk);\n }\n }\n }\n prepareEventChunks(bgChunks, $hiddenDays);\n let longChunks = prepareEventChunks(chunks, $hiddenDays);\n return [chunks, bgChunks, longChunks];\n });\n\n function reposition() {\n runReposition(refs, dates);\n }\n $effect(() => {\n chunks;\n untrack(reposition);\n });\n\n let iChunks = $derived($_iEvents.map(event => {\n let chunk;\n if (event && event.allDay && eventIntersects(event, start, end, resource)) {\n chunk = createEventChunk(event, start, end);\n prepareEventChunks([chunk], $hiddenDays);\n } else {\n chunk = null;\n }\n return chunk;\n }));\n</script>\n\n{#each dates as date, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Day {date} {chunks} {bgChunks} {longChunks} {iChunks} {resource} bind:this={refs[i]} />\n{/each}\n\n<svelte:window on:resize={reposition}/>\n","<script>\n import {getContext} from 'svelte';\n import {datesEqual, setContent, toISOString} from '#lib';\n import Section from './Section.svelte';\n import Body from './Body.svelte';\n import Day from './Day.svelte';\n import Week from './all-day/Week.svelte';\n\n let {_viewDates, _intlDayHeader, _intlDayHeaderAL, _today, allDaySlot, theme} = getContext('state');\n</script>\n\n<div class=\"{$theme.header}\">\n <Section>\n {#each $_viewDates as date}\n <div\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{datesEqual(date, $_today) ? ' ' + $theme.today : ''}\"\n role=\"columnheader\"\n >\n <time\n datetime=\"{toISOString(date, 10)}\"\n aria-label=\"{$_intlDayHeaderAL.format(date)}\"\n use:setContent={$_intlDayHeader.format(date)}\n ></time>\n </div>\n {/each}\n </Section>\n <div class=\"{$theme.hiddenScroll}\"></div>\n</div>\n{#if $allDaySlot}\n <div class=\"{$theme.allDay}\">\n <div class=\"{$theme.content}\">\n <Section>\n <Week dates={$_viewDates}/>\n </Section>\n <div class=\"{$theme.hiddenScroll}\"></div>\n </div>\n </div>\n{/if}\n<Body>\n{#each $_viewDates as date}\n <Day {date}/>\n{/each}\n</Body>\n","import {btnTextDay, btnTextWeek, themeView} from '#lib';\nimport {slotTimeLimits, times} from './stores.js';\nimport View from './View.svelte';\n\nexport {default as Section} from './Section.svelte';\nexport {default as Body} from './Body.svelte';\nexport {default as Day} from './Day.svelte';\nexport {default as Week} from './all-day/Week.svelte';\n\nexport default {\n createOptions(options) {\n // Common options\n options.buttonText.timeGridDay = 'day';\n options.buttonText.timeGridWeek = 'week';\n options.view = 'timeGridWeek';\n options.views.timeGridDay = {\n buttonText: btnTextDay,\n component: View,\n dayHeaderFormat: {weekday: 'long'},\n duration: {days: 1},\n theme: themeView('ec-time-grid ec-day-view'),\n titleFormat: {year: 'numeric', month: 'long', day: 'numeric'}\n };\n options.views.timeGridWeek = {\n buttonText: btnTextWeek,\n component: View,\n duration: {weeks: 1},\n theme: themeView('ec-time-grid ec-week-view')\n };\n },\n\n createStores(state) {\n state._slotTimeLimits = slotTimeLimits(state); // flexible limits\n state._times = times(state);\n }\n}\n","<script>\n import {getContext, onMount, untrack} from 'svelte';\n import {setContent, toLocalDate, isFunction} from '#lib';\n\n let {resource, date = undefined, setLabel = undefined} = $props();\n\n let {resourceLabelContent, resourceLabelDidMount, _intlDayHeaderAL} = getContext('state');\n\n let el = $state();\n // Content\n let content = $derived.by(() => {\n if ($resourceLabelContent) {\n return isFunction($resourceLabelContent)\n ? $resourceLabelContent({\n resource,\n date: date ? toLocalDate(date) : undefined,\n })\n : $resourceLabelContent;\n } else {\n return resource.title;\n }\n });\n // Aria-label\n let ariaLabel = $state();\n $effect(() => {\n content;\n untrack(() => {\n if (date) {\n ariaLabel = $_intlDayHeaderAL.format(date) + ', ' + el.innerText;\n } else if (setLabel) {\n ariaLabel = undefined;\n setLabel(el.innerText);\n }\n });\n });\n\n onMount(() => {\n if (isFunction($resourceLabelDidMount)) {\n $resourceLabelDidMount({\n resource,\n date: date ? toLocalDate(date) : undefined,\n el\n });\n }\n });\n</script>\n\n<span\n bind:this={el}\n aria-label=\"{ariaLabel}\"\n use:setContent={content}\n></span>\n","<script>\n import {getContext} from 'svelte';\n import {datesEqual, setContent, toISOString} from '#lib';\n import {Section, Body, Day, Week} from '../time-grid/index.js';\n import Label from './Label.svelte';\n\n let {\n datesAboveResources, _today, _viewDates, _viewResources, _intlDayHeader, _intlDayHeaderAL, allDaySlot, theme\n } = getContext('state');\n\n let loops = $derived($datesAboveResources ? [$_viewDates, $_viewResources] : [$_viewResources, $_viewDates]);\n\n let resourceLabels = $state([]);\n</script>\n\n<div class=\"{$theme.header}\">\n <Section>\n {#each loops[0] as item0, i}\n <div class=\"{$theme.resource}\">\n {#if $datesAboveResources}\n <div class=\"{$theme.day} {$theme.weekdays?.[item0.getUTCDay()]}{datesEqual(item0, $_today) ? ' ' + $theme.today : ''}\">\n <time\n datetime=\"{toISOString(item0, 10)}\"\n aria-label=\"{$_intlDayHeaderAL.format(item0)}\"\n use:setContent={$_intlDayHeader.format(item0)}\n ></time>\n </div>\n {:else}\n <div class=\"{$theme.day}\">\n <Label resource={item0} setLabel={e => resourceLabels[i] = e.detail + ', '} />\n </div>\n {/if}\n {#if loops[1].length > 1}\n <div class=\"{$theme.days}\">\n {#each loops[1] as item1}\n {#if $datesAboveResources}\n <div class=\"{$theme.day}\" role=\"columnheader\">\n <Label resource={item1} date={item0} />\n </div>\n {:else}\n <div\n class=\"{$theme.day} {$theme.weekdays?.[item1.getUTCDay()]}{datesEqual(item1, $_today) ? ' ' + $theme.today : ''}\"\n role=\"columnheader\"\n >\n <time\n datetime=\"{toISOString(item1, 10)}\"\n aria-label=\"{resourceLabels[i]}{$_intlDayHeaderAL.format(item1)}\"\n use:setContent={$_intlDayHeader.format(item1)}\n ></time>\n </div>\n {/if}\n {/each}\n </div>\n {/if}\n </div>\n {/each}\n </Section>\n <div class=\"{$theme.hiddenScroll}\"></div>\n</div>\n{#if $allDaySlot}\n <div class=\"{$theme.allDay}\">\n <div class=\"{$theme.content}\">\n <Section>\n {#if $datesAboveResources}\n {#each $_viewDates as date}\n <div class=\"{$theme.resource}\">\n {#each $_viewResources as resource}\n <Week dates={[date]} {resource}/>\n {/each}\n </div>\n {/each}\n {:else}\n {#each $_viewResources as resource}\n <div class=\"{$theme.resource}\">\n <Week dates={$_viewDates} {resource}/>\n </div>\n {/each}\n {/if}\n </Section>\n <div class=\"{$theme.hiddenScroll}\"></div>\n </div>\n </div>\n{/if}\n<Body>\n{#each loops[0] as item0}\n <div class=\"{$theme.resource}\">\n {#each loops[1] as item1}\n <Day\n date={$datesAboveResources ? item0 : item1}\n resource={$datesAboveResources ? item1 : item0}\n />\n {/each}\n </div>\n{/each}\n</Body>\n","import {btnTextDay, btnTextWeek, themeView, viewResources} from '#lib';\nimport TimeGrid from '../time-grid/index.js';\nimport View from './View.svelte';\n\nexport default {\n createOptions(options) {\n options.datesAboveResources = false;\n // Common options\n options.buttonText.resourceTimeGridDay = 'resources';\n options.buttonText.resourceTimeGridWeek = 'resources';\n options.view = 'resourceTimeGridWeek';\n options.views.resourceTimeGridDay = {\n buttonText: btnTextDay,\n component: View,\n duration: {days: 1},\n theme: themeView('ec-time-grid ec-resource-day-view')\n };\n options.views.resourceTimeGridWeek = {\n buttonText: btnTextWeek,\n component: View,\n duration: {weeks: 1},\n theme: themeView('ec-time-grid ec-resource-week-view')\n };\n },\n\n createStores(state) {\n if (!('_times' in state)) {\n TimeGrid.createStores(state);\n }\n if (!('_viewResources' in state)) {\n state._viewResources = viewResources(state);\n }\n }\n}\n","import {derived} from 'svelte/store';\nimport {createSlotTimeLimits, createTimes, getPayload} from '#lib';\n\n// slotTimeLimits per day\nexport function dayTimeLimits(state) {\n return derived(\n [state.slotMinTime, state.slotMaxTime, state.flexibleSlotTimeLimits, state._viewDates, state._filteredEvents],\n ([$slotMinTime, $slotMaxTime, $flexibleSlotTimeLimits, $_viewDates, $_filteredEvents]) => {\n let dayTimeLimits = {};\n for (let date of $_viewDates) {\n dayTimeLimits[date.getTime()] = createSlotTimeLimits(\n $slotMinTime,\n $slotMaxTime,\n $flexibleSlotTimeLimits,\n [date],\n $_filteredEvents\n );\n }\n\n return dayTimeLimits;\n }\n );\n}\n\nexport function dayTimes(state) {\n return derived(\n [state._viewDates, state.slotDuration, state.slotLabelInterval, state._dayTimeLimits, state._intlSlotLabel],\n ([$_viewDates, $slotDuration, $slotLabelInterval, $_dayTimeLimits, $_intlSlotLabel]) => {\n let dayTimes = {};\n for (let date of $_viewDates) {\n let time = date.getTime();\n dayTimes[time] = time in $_dayTimeLimits\n ? createTimes(date, $slotDuration, $slotLabelInterval, $_dayTimeLimits[time], $_intlSlotLabel)\n : [];\n }\n\n return dayTimes;\n }\n );\n}\n\nexport function nestedResources(state) {\n return derived(state.resources, $resources => $resources.some(resource => getPayload(resource).children.length));\n}\n","<script>\n import {getContext, onMount} from 'svelte';\n import {setContent, toLocalDate, isFunction} from '#lib';\n\n let {resource, date = undefined} = $props();\n\n let {resourceLabelContent, resourceLabelDidMount} = getContext('state');\n\n let el = $state();\n // Content\n let content = $derived.by(() => {\n if ($resourceLabelContent) {\n return isFunction($resourceLabelContent)\n ? $resourceLabelContent({\n resource,\n date: date ? toLocalDate(date) : undefined,\n })\n : $resourceLabelContent;\n } else {\n return resource.title;\n }\n });\n\n onMount(() => {\n if (isFunction($resourceLabelDidMount)) {\n $resourceLabelDidMount({\n resource,\n date: date ? toLocalDate(date) : undefined,\n el\n });\n }\n });\n</script>\n\n<span\n bind:this={el}\n use:setContent={content}\n></span>\n","<script>\n import {getContext} from 'svelte';\n import {getPayload, identity} from '#lib';\n\n let {resource} = $props();\n\n let {resources, theme} = getContext('state');\n\n let payload = $state.raw({});\n let expanded = $state(true);\n\n $effect.pre(() => {\n payload = getPayload(resource);\n expanded = payload.expanded;\n });\n\n function onclick() {\n expanded = !expanded;\n payload.expanded = expanded;\n toggle(payload.children, expanded);\n resources.update(identity);\n }\n\n function toggle(children, expand) {\n for (let child of children) {\n let payload = getPayload(child);\n payload.hidden = !expand;\n if (payload.expanded) {\n toggle(payload.children, expand);\n }\n }\n }\n</script>\n\n{#each Array(payload.level) as level}\n <span class=\"{$theme.expander}\"></span>\n{/each}\n\n<span class=\"{$theme.expander}\">\n {#if payload.children?.length}\n <button class=\"{$theme.button}\" {onclick}>\n {#if expanded}−{:else}+{/if}\n </button>\n {/if}\n</span>\n","<script>\n import {getContext} from 'svelte';\n import {max} from '#lib';\n import Label from './Label.svelte';\n import Expander from './Expander.svelte';\n\n let {_viewResources, _headerHeight, _bodyEl, _resHs, _sidebarEl, _nestedResources, theme} = getContext('state');\n\n function onwheel(jsEvent) {\n $_bodyEl.scrollBy({\n top: jsEvent.deltaY < 0 ? -30 : 30\n });\n }\n</script>\n\n<div class=\"{$theme.sidebar}\">\n <div class=\"{$theme.sidebarTitle}\" style=\"flex-basis: {$_headerHeight}px\"></div>\n <div class=\"{$theme.content}\" bind:this={$_sidebarEl} {onwheel}>\n {#each $_viewResources as resource}\n <div class=\"{$theme.resource}\" style=\"flex-basis: {max($_resHs.get(resource) ?? 0, 34)}px\" role=\"rowheader\">\n {#if $_nestedResources}\n <Expander {resource} />\n {/if}\n <Label {resource}/>\n </div>\n {/each}\n </div>\n</div>\n","<script>\n import {getContext} from 'svelte';\n import {datesEqual, setContent, toISOString, toSeconds, observeResize} from '#lib';\n\n let {_headerEl, _headerHeight, _intlDayHeader, _intlDayHeaderAL, _dayTimes, _today, _viewDates,\n slotDuration, theme} = getContext('state');\n</script>\n\n<div class=\"{$theme.header}\" bind:this={$_headerEl} use:observeResize={() => $_headerHeight = $_headerEl.clientHeight}>\n <div class=\"{$theme.days}\" role=\"row\">\n {#each $_viewDates as date}\n <div class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{datesEqual(date, $_today) ? ' ' + $theme.today : ''}\">\n {#if toSeconds($slotDuration)}\n <div class=\"{$theme.dayHead}\">\n <time\n datetime=\"{toISOString(date, 10)}\"\n aria-label=\"{$_intlDayHeaderAL.format(date)}\"\n use:setContent={$_intlDayHeader.format(date)}\n ></time>\n </div>\n <div class=\"{$theme.times}\">\n {#each $_dayTimes[date.getTime()] as time}\n <div class=\"{$theme.time}{time[2] ? '' : ' ' + $theme.minor}\" role=\"columnheader\">\n <time\n datetime=\"{time[0]}\"\n use:setContent={time[1]}\n ></time>\n </div>\n {/each}\n </div>\n {:else}\n <div class=\"{$theme.time}\" role=\"columnheader\">\n <time\n datetime=\"{toISOString(date, 10)}\"\n aria-label=\"{$_intlDayHeaderAL.format(date)}\"\n use:setContent={$_intlDayHeader.format(date)}\n ></time>\n </div>\n {/if}\n </div>\n {/each}\n </div>\n <div class=\"{$theme.hiddenScroll}\"></div>\n</div>\n","import {addDay, addDuration, cloneDate, createDuration, datesEqual, sortEventChunks, toSeconds} from '#lib';\n\nexport function prepareEventChunks(chunks, $_viewDates, $_dayTimeLimits, $slotDuration) {\n let longChunks = {};\n let filteredChunks = [];\n\n if (chunks.length) {\n sortEventChunks(chunks);\n\n let step = toSeconds($slotDuration);\n let prevChunk;\n for (let chunk of chunks) {\n let prevDayEnd;\n if (step) {\n let slots = 0;\n for (let i = 0; i < $_viewDates.length; ++i) {\n let slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, $_viewDates[i]);\n let dayStart = addDuration(cloneDate($_viewDates[i]), slotTimeLimits.min);\n let dayEnd = addDuration(cloneDate($_viewDates[i]), slotTimeLimits.max);\n if (!chunk.date) {\n if (chunk.start < dayEnd && chunk.end > dayStart) {\n // The first day is found\n chunk.date = $_viewDates[i];\n if (chunk.start < dayStart) {\n // Adjust chunk start\n chunk.start = dayStart;\n }\n // Calculate offset\n chunk.offset = (chunk.start - dayStart) / 1000 / step;\n // Calculate slots\n if (chunk.end > dayEnd) {\n slots += dayEnd - chunk.start;\n } else {\n slots += chunk.end - chunk.start || step * 1000;\n break;\n }\n }\n } else {\n if (chunk.end <= dayStart) {\n // Adjust chunk end\n chunk.end = prevDayEnd;\n break;\n }\n // The chunk is long one\n let key = $_viewDates[i].getTime();\n if (longChunks[key]) {\n longChunks[key].push(chunk);\n } else {\n longChunks[key] = [chunk];\n }\n // Calculate slots\n if (chunk.end > dayEnd) {\n slots += dayEnd - dayStart;\n } else {\n slots += chunk.end - dayStart;\n break;\n }\n }\n prevDayEnd = dayEnd;\n }\n chunk.slots = slots / 1000 / step;\n } else {\n // Month view\n let days = 0;\n for (let i = 0; i < $_viewDates.length; ++i) {\n let dayStart = $_viewDates[i];\n let dayEnd = addDay(cloneDate(dayStart));\n if (!chunk.date) {\n if (chunk.start < dayEnd) {\n // The first day is found\n chunk.date = dayStart;\n if (chunk.start < dayStart) {\n // Adjust chunk start\n chunk.start = dayStart;\n }\n ++days;\n }\n } else {\n if (chunk.end <= dayStart) {\n // Adjust chunk end\n chunk.end = prevDayEnd;\n break;\n }\n // The chunk is long one\n let key = dayStart.getTime();\n if (longChunks[key]) {\n longChunks[key].push(chunk);\n } else {\n longChunks[key] = [chunk];\n }\n ++days;\n }\n prevDayEnd = dayEnd;\n }\n chunk.days = days;\n }\n\n if (!chunk.date) {\n // Chunk is outside the slot time limits, so skip it\n continue;\n }\n\n if (prevChunk && datesEqual(prevChunk.date, chunk.date)) {\n chunk.prev = prevChunk;\n }\n prevChunk = chunk;\n filteredChunks.push(chunk);\n }\n }\n\n return [filteredChunks, longChunks];\n}\n\nexport function repositionEvent(chunk, dayChunks, longChunks, height, allDay) {\n chunk.top = 0;\n chunk.bottom = height;\n let margin = 1;\n let key = chunk.date.getTime();\n longChunks = longChunks?.[key] ?? [];\n let chunks = [...dayChunks, ...longChunks];\n chunks.sort((a, b) => (a.top ?? 0) - (b.top ?? 0) || a.start - b.start || b.event.allDay - a.event.allDay);\n for (let dayChunk of chunks) {\n if (dayChunk === chunk) {\n continue;\n }\n if ((allDay || chunk.start < dayChunk.end && chunk.end > dayChunk.start) && chunk.top < dayChunk.bottom && chunk.bottom > dayChunk.top) {\n let offset = dayChunk.bottom - chunk.top + 1;\n margin += offset;\n chunk.top += offset;\n chunk.bottom += offset;\n }\n }\n\n return margin;\n}\n\nexport function getSlotTimeLimits($_dayTimeLimits, date) {\n return $_dayTimeLimits[date.getTime()] ?? {min: createDuration(0), max: createDuration(0)};\n}\n","<script>\n import {getContext} from 'svelte';\n import {height, helperEvent, toSeconds} from '#lib';\n import {repositionEvent} from './lib.js';\n import {InteractableEvent} from '#components';\n\n let {chunk, dayChunks = [], longChunks = {}, resource = undefined} = $props();\n\n let {slotDuration, slotWidth} = getContext('state');\n\n let el = $state();\n let margin = $state(helperEvent(chunk.event.display) ? 1 : 0);\n let event = $derived(chunk.event);\n // Style\n let width = $derived('slots' in chunk ? chunk.slots * $slotWidth : chunk.days * 100);\n let styles = $derived(style => {\n if ('slots' in chunk) {\n let left = chunk.offset * $slotWidth;\n style['left'] = `${left}px`;\n style['width'] = `${width}px`;\n } else {\n // Month view\n style['width'] = `${width}%`;\n }\n let marginTop = margin;\n if (event._margin) {\n // Force margin for helper events\n let [_margin, _resource] = event._margin;\n if (resource === _resource) {\n marginTop = _margin;\n }\n }\n style['margin-top'] = `${marginTop}px`;\n return style;\n });\n\n export function reposition() {\n if (!el) {\n return 0;\n }\n let h = height(el);\n margin = repositionEvent(chunk, dayChunks, longChunks, h, !toSeconds($slotDuration));\n return margin + h;\n }\n</script>\n\n{#if width > 0}\n <InteractableEvent bind:el {chunk} {styles} axis=\"x\" forceMargin={() => [margin, resource]} />\n{/if}\n","<script>\n import {getContext} from 'svelte';\n import {\n addDuration, ceil, cloneDate, datesEqual, floor, max, outsideRange, rect, runReposition, setPayload, toSeconds\n } from '#lib';\n import {getSlotTimeLimits} from './lib.js';\n import Event from './Event.svelte';\n\n let {date, resource, chunks, bgChunks, longChunks, iChunks = []} = $props();\n\n let {\n highlightedDates, slotDuration, slotWidth, theme, validRange, _interaction, _today, _dayTimeLimits\n } = getContext('state');\n\n let el = $state();\n let refs = [];\n\n let isToday = $derived(datesEqual(date, $_today));\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n\n let slotTimeLimits = $derived(getSlotTimeLimits($_dayTimeLimits, date));\n let allDay = $derived(!toSeconds($slotDuration));\n let pointerIdx = $derived(allDay ? 2 : 1);\n\n let dayChunks = $derived(chunks.filter(chunkIntersects));\n let dayBgChunks = $derived(bgChunks.filter(bgChunk => (!allDay || bgChunk.event.allDay) && chunkIntersects(bgChunk)));\n\n function chunkIntersects(chunk) {\n return datesEqual(chunk.date, date);\n }\n\n function dateFromPoint(x, y) {\n x -= rect(el).left;\n return {\n allDay,\n date: allDay\n ? cloneDate(date)\n : addDuration(\n addDuration(cloneDate(date), slotTimeLimits.min),\n $slotDuration,\n floor(x / $slotWidth)\n ),\n resource,\n dayEl: el,\n disabled\n };\n }\n $effect(() => {\n setPayload(el, dateFromPoint);\n });\n\n export function reposition() {\n return max(...runReposition(refs, dayChunks));\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{highlight ? ' ' + $theme.highlight : ''}{disabled ? ' ' + $theme.disabled : ''}\"\n style=\"flex-grow: {allDay ? null : ceil((toSeconds(slotTimeLimits.max) - toSeconds(slotTimeLimits.min)) / toSeconds($slotDuration))}\"\n role=\"cell\"\n onpointerdown={$_interaction.action?.select}\n>\n <div class=\"{$theme.events}\">\n {#if !disabled}\n {#each dayBgChunks as chunk (chunk.event)}\n <Event {chunk}/>\n {/each}\n <!-- Pointer -->\n {#if iChunks[pointerIdx] && chunkIntersects(iChunks[pointerIdx])}\n <Event chunk={iChunks[pointerIdx]}/>\n {/if}\n {#each dayChunks as chunk, i (chunk.event)}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Event {chunk} {dayChunks} {longChunks} {resource} bind:this={refs[i]}/>\n {/each}\n <!-- Drag, Resize & Select -->\n {#if iChunks[0] && chunkIntersects(iChunks[0])}\n <Event chunk={iChunks[0]} {resource}/>\n {/if}\n {/if}\n </div>\n</div>\n","<script>\n import {getContext} from 'svelte';\n import {\n addDay, addDuration, bgEvent, ceil, cloneDate, createEventChunk, DAY_IN_SECONDS, eventIntersects,\n limitToRange, max, runReposition\n } from '#lib';\n import {getSlotTimeLimits, prepareEventChunks} from './lib.js';\n import Day from './Day.svelte';\n\n let {resource} = $props();\n\n let {\n _viewDates, _filteredEvents, _iEvents, _resHs, _dayTimeLimits, slotDuration, theme, validRange\n } = getContext('state');\n\n let refs = [];\n let height = $state(0);\n\n let [start, end] = $derived.by(() => {\n let start = cloneDate(limitToRange($_viewDates[0], $validRange));\n let end = cloneDate(limitToRange($_viewDates.at(-1), $validRange));\n let slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, start);\n addDuration(start, slotTimeLimits.min);\n slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, end);\n if (slotTimeLimits.max.seconds > DAY_IN_SECONDS) {\n addDuration(end, slotTimeLimits.max) /** @see https://github.com/vkurko/calendar/issues/333 */\n } else {\n addDay(end);\n }\n return [start, end];\n });\n\n let [chunks, bgChunks, longChunks] = $derived.by(() => {\n let chunks = [];\n let bgChunks = [];\n let longChunks;\n for (let event of $_filteredEvents) {\n if (eventIntersects(event, start, end, resource)) {\n let chunk = createEventChunk(event, start, end);\n if (bgEvent(event.display)) {\n bgChunks.push(chunk);\n } else {\n chunks.push(chunk);\n }\n }\n }\n [bgChunks] = prepareEventChunks(bgChunks, $_viewDates, $_dayTimeLimits, $slotDuration);\n [chunks, longChunks] = prepareEventChunks(chunks, $_viewDates, $_dayTimeLimits, $slotDuration);\n return [chunks, bgChunks, longChunks];\n });\n\n let iChunks = $derived($_iEvents.map(event => {\n let chunk;\n if (event && eventIntersects(event, start, end, resource)) {\n chunk = createEventChunk(event, start, end);\n [[chunk]] = prepareEventChunks([chunk], $_viewDates, $_dayTimeLimits, $slotDuration);\n } else {\n chunk = null;\n }\n return chunk;\n }));\n\n export function reposition() {\n height = ceil(max(...runReposition(refs, $_viewDates))) + 10;\n $_resHs.set(resource, height);\n $_resHs = $_resHs;\n }\n</script>\n\n<div class=\"{$theme.days}\" style=\"flex-basis: {max(height, 34)}px\" role=\"row\">\n {#each $_viewDates as date, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Day {date} {resource} {chunks} {bgChunks} {longChunks} {iChunks} bind:this={refs[i]}/>\n {/each}\n</div>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {observeResize, runReposition, toSeconds} from '#lib';\n import {getSlotTimeLimits} from './lib.js';\n import Days from './Days.svelte';\n\n let {_bodyEl, _bodyHeight, _bodyWidth, _bodyScrollLeft, _headerEl, _filteredEvents, _sidebarEl, _dayTimes, _dayTimeLimits,\n _recheckScrollable, _resHs, _viewResources, _viewDates, scrollTime, slotDuration, slotWidth, theme} = getContext('state');\n\n let refs = [];\n\n function scrollToTime() {\n let slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, $_viewDates[0]);\n $_bodyEl.scrollLeft = (toSeconds($scrollTime) - toSeconds(slotTimeLimits.min)) / toSeconds($slotDuration) * $slotWidth;\n $_bodyScrollLeft = $_bodyEl.scrollLeft;\n }\n $effect(() => {\n $_viewDates;\n $scrollTime;\n untrack(scrollToTime);\n });\n\n function reposition() {\n $_resHs.clear();\n runReposition(refs, $_viewResources);\n }\n $effect(() => {\n $_filteredEvents;\n $_viewResources;\n untrack(reposition);\n });\n\n function onscroll() {\n $_headerEl.scrollLeft = $_bodyEl.scrollLeft;\n $_sidebarEl.scrollTop = $_bodyEl.scrollTop;\n $_bodyScrollLeft = $_bodyEl.scrollLeft;\n }\n\n function onresize() {\n $_bodyHeight = $_bodyEl.clientHeight;\n $_bodyWidth = $_bodyEl.clientWidth;\n $_recheckScrollable = true;\n }\n</script>\n\n<div\n bind:this={$_bodyEl}\n class=\"{$theme.body}\"\n {onscroll}\n use:observeResize={onresize}\n>\n <div class=\"{$theme.content}\">\n <div class=\"{$theme.lines}\">\n {#each $_viewDates as date}\n {#each $_dayTimes[date.getTime()] as time}\n <div class=\"{$theme.line}{time[2] ? '' : ' ' + $theme.minor}\"></div>\n {/each}\n {/each}\n </div>\n {#each $_viewResources as resource, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Days {resource} bind:this={refs[i]}/>\n {/each}\n </div>\n</div>\n\n<svelte:window on:resize={reposition}/>\n","<script>\n import {getContext} from 'svelte';\n import {addDuration, cloneDate, datesEqual} from '#lib';\n import {getSlotTimeLimits} from './lib.js';\n\n let {slotDuration, slotWidth, theme, _bodyHeight, _bodyWidth, _bodyScrollLeft,\n _headerHeight, _dayTimeLimits, _now, _today, _viewDates} = getContext('state');\n\n // Style\n let left = $derived.by(() => {\n let offset = 0;\n for (let i = 0; i < $_viewDates.length; ++i) {\n let slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, $_viewDates[i]);\n if (datesEqual($_viewDates[i], $_today)) {\n let dayStart = addDuration(cloneDate($_viewDates[i]), slotTimeLimits.min);\n let dayEnd = addDuration(cloneDate($_viewDates[i]), slotTimeLimits.max);\n if ($_now >= dayStart && $_now <= dayEnd) {\n offset += ($_now - dayStart) / 1000;\n break;\n } else {\n return null;\n }\n } else {\n offset += slotTimeLimits.max.seconds - slotTimeLimits.min.seconds;\n }\n }\n let step = $slotDuration.seconds;\n return offset / step * $slotWidth - $_bodyScrollLeft;\n });\n</script>\n\n{#if left !== null && left >= 3 && left <= $_bodyWidth - 3}\n <div\n class=\"{$theme.nowIndicator}\"\n style:top=\"{$_headerHeight+2}px\"\n style:left=\"{left}px\"\n style:height=\"{$_bodyHeight-1}px\"\n ></div>\n{/if}\n","<script>\n import {getContext} from 'svelte';\n import Sidebar from './Sidebar.svelte';\n import Header from './Header.svelte';\n import Body from './Body.svelte';\n import NowIndicator from './NowIndicator.svelte';\n\n let {nowIndicator, theme} = getContext('state');\n</script>\n\n<div class=\"{$theme.container}\">\n <Sidebar/>\n <div class=\"{$theme.main}\">\n <Header/>\n <Body/>\n {#if $nowIndicator}\n <NowIndicator/>\n {/if}\n </div>\n</div>\n","import {writable} from 'svelte/store';\nimport {btnTextDay, btnTextMonth, btnTextWeek, themeView, viewResources} from '#lib';\nimport {dayTimeLimits, dayTimes, nestedResources} from './stores.js';\nimport View from './View.svelte';\n\nexport default {\n\tcreateOptions(options) {\n\t\t// Common options\n\t\toptions.buttonText.resourceTimelineDay = 'timeline';\n\t\toptions.buttonText.resourceTimelineWeek = 'timeline';\n\t\toptions.buttonText.resourceTimelineMonth = 'timeline';\n\t\toptions.theme.expander = 'ec-expander';\n\t\toptions.theme.main = 'ec-main';\n\t\toptions.theme.times = 'ec-times';\n\t\toptions.theme.container = 'ec-container';\n\t\toptions.view = 'resourceTimelineWeek';\n\t\toptions.views.resourceTimelineDay = {\n\t\t\tbuttonText: btnTextDay,\n\t\t\tcomponent: View,\n\t\t\tdisplayEventEnd: false,\n\t\t\tdayHeaderFormat: {weekday: 'long'},\n\t\t\tduration: {days: 1},\n\t\t\tslotDuration: '01:00',\n\t\t\ttheme: themeView('ec-timeline ec-resource-day-view'),\n\t\t\ttitleFormat: {year: 'numeric', month: 'long', day: 'numeric'}\n\t\t};\n\t\toptions.views.resourceTimelineWeek = {\n\t\t\tbuttonText: btnTextWeek,\n\t\t\tcomponent: View,\n\t\t\tdisplayEventEnd: false,\n\t\t\tduration: {weeks: 1},\n\t\t\tslotDuration: '01:00',\n\t\t\ttheme: themeView('ec-timeline ec-resource-week-view')\n\t\t};\n\t\toptions.views.resourceTimelineMonth = {\n\t\t\tbuttonText: btnTextMonth,\n\t\t\tcomponent: View,\n\t\t\tdisplayEventEnd: false,\n\t\t\tdayHeaderFormat: {\n\t\t\t\tweekday: 'short',\n\t\t\t\tday: 'numeric'\n\t\t\t},\n\t\t\tduration: {months: 1},\n\t\t\tslotDuration: {days: 1},\n\t\t\ttheme: themeView('ec-timeline ec-resource-month-view'),\n\t\t\ttitleFormat: {year: 'numeric', month: 'long'}\n\t\t};\n\t},\n\n\tcreateStores(state) {\n\t\tif (!('_viewResources' in state)) {\n\t\t\tstate._viewResources = viewResources(state);\n\t\t}\n\t\tstate._bodyHeight = writable(0);\n\t\tstate._bodyWidth = writable(0);\n\t\tstate._bodyScrollLeft = writable(0);\n\t\tstate._headerEl = writable(undefined);\n\t\tstate._headerHeight = writable(0);\n\t\tstate._dayTimeLimits = dayTimeLimits(state); // flexible time limits per day\n\t\tstate._dayTimes = dayTimes(state);\n\t\tstate._nestedResources = nestedResources(state);\n\t\tstate._resHs = writable(new Map()); // resource row heights\n\t\tstate._sidebarEl = writable(undefined);\n\t}\n}\n","import {mount, unmount} from 'svelte';\nimport {Calendar} from './index.svelte.js';\n\nexport function createCalendar(target, plugins, options) {\n return mount(Calendar, {\n target,\n props: {\n plugins,\n options\n }\n });\n}\n\nexport function destroyCalendar(calendar) {\n return unmount(calendar);\n}\n\nexport {\n DayGrid,\n Interaction,\n List,\n ResourceTimeGrid,\n ResourceTimeline,\n TimeGrid\n} from './index.svelte.js';\n","import {createCalendar, DayGrid, Interaction, List, ResourceTimeGrid, ResourceTimeline, TimeGrid} from './index.es.js';\n\nexport function create(target, options) {\n return createCalendar(target, [\n DayGrid,\n Interaction,\n List,\n ResourceTimeGrid,\n ResourceTimeline,\n TimeGrid\n ], options);\n}\n\nexport {destroyCalendar as destroy} from './index.es.js';\n"],"names":["is_array","index_of","array_from","define_property","get_descriptor","get_descriptors","object_prototype","array_prototype","get_prototype_of","is_extensible","noop","run","fn","run_all","arr","i","to_array","value","n","array","element","DERIVED","EFFECT","RENDER_EFFECT","BLOCK_EFFECT","BRANCH_EFFECT","ROOT_EFFECT","BOUNDARY_EFFECT","UNOWNED","DISCONNECTED","CLEAN","DIRTY","MAYBE_DIRTY","INERT","DESTROYED","EFFECT_RAN","EFFECT_TRANSPARENT","LEGACY_DERIVED_PROP","HEAD_EFFECT","EFFECT_HAS_DERIVED","EFFECT_IS_UPDATING","STATE_SYMBOL","LEGACY_PROPS","LOADING_ATTR_SYMBOL","equals","safe_not_equal","a","b","safe_equals","effect_in_teardown","rune","effect_in_unowned_derived","effect_orphan","effect_update_depth_exceeded","props_invalid_value","key","state_descriptors_fixed","state_prototype_fixed","state_unsafe_mutation","legacy_mode_flag","tracing_mode_flag","enable_legacy_mode_flag","EACH_ITEM_REACTIVE","EACH_INDEX_REACTIVE","EACH_IS_CONTROLLED","EACH_IS_ANIMATED","EACH_ITEM_IMMUTABLE","PROPS_IS_IMMUTABLE","PROPS_IS_RUNES","PROPS_IS_UPDATED","PROPS_IS_BINDABLE","PROPS_IS_LAZY_INITIAL","TEMPLATE_FRAGMENT","TEMPLATE_USE_IMPORT_NODE","UNINITIALIZED","NAMESPACE_HTML","lifecycle_outside_component","name","component_context","set_component_context","context","getContext","get_or_init_context_map","setContext","push","props","runes","ctx","source","teardown","pop","component","context_stack_item","component_effects","previous_effect","active_effect","previous_reaction","active_reaction","component_effect","set_active_effect","set_active_reaction","effect","is_runes","get_parent_context","parent","context_map","proxy","prototype","sources","is_proxied_array","version","reaction","with_parent","result","_","prop","descriptor","e.state_descriptors_fixed","s","set","target","update_version","ls","receiver","exists","_a","v","get","has","other_s","own_keys","e.state_prototype_fixed","signal","d","derived","flags","parent_derived","user_derived","push_reaction_value","derived_safe_equal","destroy_derived_effects","effects","destroy_effect","get_derived_parent_effect","execute_derived","prev_active_effect","update_reaction","update_derived","increment_write_version","is_destroying_effect","status","skip_reaction","set_signal_status","old_values","stack","state","mutable_source","initial_value","immutable","should_proxy","untracking","reaction_sources","e.state_unsafe_mutation","new_value","internal_set","old_value","mark_reactions","untracked_writes","set_untracked_writes","reactions","length","schedule_effect","hydrating","$window","is_firefox","first_child_getter","next_sibling_getter","init_operations","element_prototype","node_prototype","text_prototype","create_text","get_first_child","node","get_next_sibling","child","is_text","first_child","fragment","first","sibling","count","next_sibling","clear_text_content","validate_effect","e.effect_orphan","e.effect_in_unowned_derived","e.effect_in_teardown","push_effect","parent_effect","parent_last","create_effect","type","sync","update_effect","e","inert","user_effect","defer","user_pre_effect","render_effect","component_root","options","fulfil","pause_effect","legacy_pre_effect","deps","token","untrack","legacy_pre_effect_reset","check_dirtiness","template_effect","thunks","deriveds","block","branch","execute_effect_teardown","previously_destroying_effect","set_is_destroying_effect","destroy_effect_children","remove_dom","next","destroy_block_effect_children","removed","remove_effect_dom","remove_reactions","transitions","transition","unlink_effect","end","prev","callback","pause_children","run_out_transitions","remaining","check","local","transparent","resume_effect","resume_children","micro_tasks","idle_tasks","run_micro_tasks","tasks","run_idle_tasks","queue_micro_task","flush_tasks","is_throwing_error","is_flushing","last_scheduled_effect","is_updating_effect","queued_root_effects","dev_effect_stack","new_deps","skipped_deps","write_version","read_version","dependencies","is_unowned","dependency","is_disconnected","is_unowned_connected","propagate_error","error","current","should_rethrow_error","handle_error","schedule_possible_effect_self_invalidation","root","previous_deps","previous_skipped_deps","previous_untracked_writes","previous_skip_reaction","previous_reaction_sources","previous_component_context","previous_untracking","remove_reaction","index","new_length","start_index","was_updating_effect","dep","infinite_loop_guard","e.effect_update_depth_exceeded","flush_queued_root_effects","flush_count","root_effects","collected_effects","process_effects","flush_queued_effects","is_branch","is_skippable_branch","flushSync","tick","is_derived","STATUS_MASK","deep_read_state","deep_read","visited","proto","descriptors","PASSIVE_EVENTS","is_passive_event","without_reactive_context","all_registered_events","root_event_handles","create_event","event_name","dom","handler","target_handler","event","handle_event_propagation","capture","passive","delegate","events","handler_element","owner_document","path","current_target","path_idx","handled_at","at_idx","handler_idx","throw_error","other_errors","parent_element","delegated","data","create_fragment_from_html","html","elem","assign_nodes","start","from_html","content","is_fragment","use_import_node","has_start","clone","text","comment","frag","anchor","append","set_text","str","mount","_mount","document_listeners","Component","intro","registered_events","event_handle","unmount","anchor_node","mounted_components","if_block","root_index","hydrate_index","consequent_effect","alternate_effect","condition","has_branch","set_branch","flag","update_branch","new_condition","pause_effects","items","controlled_anchor","items_map","is_controlled","parent_node","link","item","each","get_collection","get_key","render_fn","fallback_fn","fallback","was_empty","each_array","collection","reconcile","is_animated","should_update","seen","to_animate","matched","stashed","child_anchor","create_item","update_item","_b","j","move","to_destroy","destroy_length","_c","_d","reactive","mutable","dest","next_node","snippet","get_snippet","args","snippet_effect","get_component","action","get_value","payload","inited","r","f","o","clsx","_clsx","to_class","hash","directives","classname","append_styles","styles","important","separator","css","to_css_name","to_style","new_style","normal_styles","important_styles","in_str","in_apo","in_comment","reserved_names","name_index","len","property","set_class","is_html","prev_classes","next_classes","next_class_name","update_styles","priority","set_style","prev_styles","next_styles","next_style_attr","IS_CUSTOM_ELEMENT","IS_HTML","set_attribute","attribute","skip_warning","attributes","get_attributes","get_setters","setters_cache","setters","element_proto","bind_prop","desc","is_bound_this","bound_value","element_or_component","bind_this","update","get_parts","old_parts","parts","init","callbacks","changed","observe_all","fns","subscribe_to_store","store","invalidate","unsub","subscriber_queue","readable","writable","stop","subscribers","run_queue","subscriber","subscribe","stores","single","stores_array","auto","started","values","pending","cleanup","unsubscribers","is_store_binding","IS_UNMOUNTED","store_get","store_name","entry","is_synchronous_callback","get_store","store_set","setup_stores","store_mutate","expression","capture_store_binding","previous_is_store_binding","has_destroyed_component_ctx","current_value","bindable","lazy","is_store_sub","prop_value","is_entry_props","setter","fallback_value","fallback_dirty","fallback_used","get_fallback","e.props_invalid_value","getter","derived_getter","legacy_parent","mutation","from_child","inner_current_value","parent_value","child_value","onMount","init_update_callbacks","l","PUBLIC_VERSION","increment","keyEnter","setContent","actions","outsideEvent","handlePointerDown","jsEvent","observeResize","resizeObserver","entries","DAY_IN_SECONDS","createDate","input","_fromLocalDate","_fromISOString","createDuration","seconds","exp","part","weeks","cloneDate","date","addDuration","duration","x","month","subtractDay","subtractDuration","addDay","setMidnight","toLocalDate","toISOString","datesEqual","date1","dates2","date2","nextClosestDay","day","diff","prevClosestDay","noTimePart","copyTime","toDate","fromDate","toSeconds","nextDate","prevDate","hiddenDays","getWeekNumber","firstDay","yearStart","assign","keys","object","floor","ceil","min","max","symbol","isArray","isFunction","runAll","identity","stopPropagation","debounce","handle","queueStore","queue","flushDebounce","task","payloadProp","setPayload","obj","hasPayload","getPayload","createElement","tag","className","attrs","el","attr","hasYScroll","rect","ancestor","up","height","getElementWithPayload","y","processed","shadowEl","listen","createView","view","_viewTitle","_currentRange","_activeRange","toViewWithLocalDates","listView","timelineView","eventId","createEvents","toArrayProp","propName","createEventSources","createEventChunk","chunk","sortEventChunks","chunks","createEventContent","displayEventEnd","eventContent","theme","_intlEventTime","_view","timeText","toEventWithLocalDates","domNodes","createTimeElement","createEventClasses","eventClassNames","_cloneEvent","cloneEvent","dateFn","prepareEventChunks","longChunks","prevChunk","dates","maxEnd","repositionEvent","margin","longChunk","offset","runReposition","refs","ref","eventIntersects","resources","resource","helperEvent","display","previewEvent","ghostEvent","pointerEvent","bgEvent","btnTextDay","btnText","btnTextWeek","btnTextMonth","btnTextYear","period","themeView","createDateRange","outsideRange","range","limitToRange","createResources","_createResources","level","flat","createResource","resourceBackgroundColor","findResource","resourceTextColor","intl","locale","format","$locale","$format","intlRange","formatRange","_getParts","viewResources","$resources","$filterResourcesWithEvents","$_filteredEvents","$_activeRange","createTimes","$slotDuration","$slotLabelInterval","$_slotTimeLimits","$_intlSlotLabel","times","label","createSlotTimeLimits","$slotMinTime","$slotMaxTime","$flexibleSlotTimeLimits","$_viewDates","minMin","minFn","maxFn","maxMax","filter","loop","minStart","createOptions","plugins","plugin","createParsers","parsers","days","prevOptions","dayGrid","$view","activeRange","$_currentRange","$firstDay","$_dayGrid","start2","currentRange","$date","$duration","viewDates","$hiddenDays","viewTitle","$_intlTitle","_events","abortController","fetching","debounceHandle","$events","$eventSources","$_fetchedRange","$lazyFetching","$loading","stopLoading","failure","success","startStr","endStr","params","url","headers","body","response","filteredEvents","$_view","$_events","$eventFilter","now","interval","today","$_now","State","parseOpts","option","view2","validKey","views","defOpts","mergeOpts","opts","filterOpts","_set","rest","newView","override","buttons","$.prop","$$props","_viewDates","buttonText","customButtons","validRange","prevDisabled","$.mutable_source","nextDisabled","todayDisabled","running","isRunning","test","$validRange","$.store_set","$.set","currentDate","$.each","button","$_viewTitle","$.template_effect","$.set_class","h2","$theme","$.get","$.set_attribute","button_1","$buttonText","button_2","$.set_text","$.event","button_3","$customButtons","$$args","button_4","button_5","text_1","$$render","consequent_5","consequent_4","alternate_4","consequent_3","alternate_3","consequent_2","alternate_2","consequent_1","alternate_1","consequent","alternate","headerToolbar","sections","$.derived","$headerToolbar","group","$.index","$$anchor","div_1","nav","datesSet","eventAllUpdated","_auxiliary","_filteredEvents","_scrollable","_bodyEl","_tasks","_recheckScrollable","_queue","$.user_effect","$datesSet","$eventAllUpdated","$_queue","$_recheckScrollable","$_bodyEl","$_auxiliary","_viewComponent","_interaction","_iClass","setOption","getOption","refetchEvents","getEvents","getEventById","id","addEvent","updateEvent","idx","$.untrack","removeEventById","getView","unselect","$_interaction","dateFromPoint","dayEl","info","View","$_viewComponent","$_scrollable","$_iClass","$height","_intlDayHeader","_intlDayHeaderAL","_days","$_days","$_intlDayHeader","div_2","$0","$_intlDayHeaderAL","div","div_3","read_methods","set_like_methods","_SvelteSet","__privateAdd","_SvelteSet_instances","_sources","_version","_size","__privateGet","__privateMethod","init_fn","deleted","set_proto","method","SvelteSet","classes","eventBackgroundColor","eventColor","eventClick","eventDidMount","eventMouseEnter","eventMouseLeave","eventTextColor","bgColor","$eventBackgroundColor","$eventColor","txtColor","$eventTextColor","style","classNames","$eventClassNames","$displayEventEnd","$eventContent","$_intlEventTime","$$array","$eventDidMount","createHandler","onclick","$eventClick","onkeydown","onmouseenter","$eventMouseEnter","onmouseleave","$eventMouseLeave","$.clsx","defaultBody","$.bind_this","article","$$value","_iClasses","$_iClasses","createDragHandler","onpointerdown","Resizer","$.noop","inPopup","dayMaxEvents","_hiddenEvents","_popupDate","$.state","hidden","marginTop","_margin","_dates","reposition","$dayMaxEvents","hide","h","footHeight","hiddenEvents","$_hiddenEvents","size","$_popupDate","_intlDayPopover","_popupChunks","position","bodyEl","popupRect","dayRect","bodyRect","left","right","top","bottom","$_popupChunks","close","handlePointerDownOutside","$_intlDayPopover","event_handler_1","event_handler_2","iChunks","highlightedDates","moreLinkContent","weekNumbers","weekNumberContent","_intlDayCell","_today","$.user_pre_effect","$.store_mutate","isToday","$_today","otherMonth","$currentDate","highlight","$highlightedDates","disabled","dayBgChunks","bgChunk","dayChunks","moreLink","$moreLinkContent","showMore","showPopup","setPopupChunks","nextDay","showWeekNumber","$weekNumbers","weekNumber","week","$weekNumberContent","$.action","time","$$node","$$action_arg","$_intlDayCell","span","node_2","div_4","node_9","consequent_6","event_handler","consequent_7","div_5","div_6","_iEvents","filterEventsWithResources","$$d","bgChunks","$filterEventsWithResources","$_iEvents","DayGrid","eventDraggable","$eventStartEditable","$editable","eventResizable","$eventDurationEditable","busy","animate","limit","minLimit","maxLimit","_dayGrid","datesAboveResources","dateClick","dragConstraint","dragScroll","editable","eventStartEditable","eventDragMinDistance","eventDragStart","eventDragStop","eventDrop","eventLongPressDelay","eventResizeStart","eventResizeStop","eventResize","longPressDelay","resizeConstraint","selectable","selectFn","selectBackgroundColor","selectConstraint","selectLongPressDelay","selectMinDistance","slotDuration","slotHeight","slotWidth","unselectFn","unselectAuto","unselectCancel","ACTION_DRAG","ACTION_RESIZE_END","ACTION_RESIZE_START","ACTION_SELECT","ACTION_CLICK","ACTION_NO_ACTION","interacting","newDate","newResource","fromX","fromY","toX","toY","clipEl","clipRect","delta","allDay","iClass","minResize","selectStep","selected","noDateClick","timer","viewport","extraDuration","draggable","drag","eventToDrag","forceDate","forceMargin","validJsEvent","complexAction","common","resize","eventToResize","axis","zeroDuration","resizingStart","select","$selectable","noAction","dragging","$datesAboveResources","calcViewport","selecting","$selectLongPressDelay","$eventLongPressDelay","$longPressDelay","distance","$selectMinDistance","$eventDragMinDistance","createIEventSelect","createIEvent","resizing","$eventResizeStart","$eventDragStart","findPayload","findDayEl","newAllDay","candidate","copyIEventData","constraintFn","$resizeConstraint","$selectConstraint","$dragConstraint","createSelectCallbackInfo","createCallbackInfo","$dragScroll","thresholdY","$slotHeight","thresholdX","$slotWidth","handleScroll","handlePointerMove","handlePointerUp","$unselectAuto","$unselectCancel","$selectFn","$eventResizeStop","$eventDragStop","oldEvent","destroyIEvent","$eventResize","$eventDrop","eventRef","clicking","$dateClick","$selectBackgroundColor","$unselectFn","noClick","handleTouchStart","stops","createPreventDefaultHandler","removePointerEvent","createPointerEvent","validEvent","eventDurationEditable","eventResizableFromStart","resizable","createResizeHandler","$eventResizableFromStart","pointer","bodyScrollHandler","Action","Pointer","$pointer","Interaction","Auxiliary","_intlListDay","_intlListDaySide","datetime","$_intlListDay","time_1","$_intlListDaySide","node_1","h4","$noEventsClick","noEventsClick","noEventsContent","noEvents","$noEventsContent","List","slotTimeLimits","groupEventChunks","c","createAllDayContent","allDayContent","slotLabelInterval","_times","allDayText","$allDayContent","showAllTimes","$_times","_slotTimeLimits","scrollTime","$scrollTime","scrollToTime","slotEventOverlap","step","maxHeight","$slotEventOverlap","_now","nowIndicator","resourceFilter","node_4","$nowIndicator","node_5","allDaySlot","$1","$allDaySlot","TimeGrid","setLabel","resourceLabelContent","resourceLabelDidMount","$resourceLabelContent","ariaLabel","$resourceLabelDidMount","_viewResources","loops","$_viewResources","resourceLabels","$.proxy","item0","item1","$3","node_10","div_10","node_11","div_11","div_8","div_9","div_12","div_13","div_7","ResourceTimeGrid","dayTimeLimits","dayTimes","$_dayTimeLimits","nestedResources","expanded","toggle","children","expand","span_1","_headerHeight","_resHs","_sidebarEl","_nestedResources","onwheel","$_nestedResources","$_resHs","$_sidebarEl","$_headerHeight","_headerEl","_dayTimes","$_dayTimes","time_2","$_headerEl","filteredChunks","prevDayEnd","slots","getSlotTimeLimits","dayStart","dayEnd","dayChunk","width","_resource","_dayTimeLimits","pointerIdx","chunkIntersects","node_3","$$d_1","$$array_3","_bodyHeight","_bodyWidth","_bodyScrollLeft","onscroll","onresize","$_bodyScrollLeft","$_bodyHeight","$_bodyWidth","ResourceTimeline","createCalendar","Calendar","destroyCalendar","calendar","create"],"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,60,67]}
|
|
1
|
+
{"version":3,"file":"event-calendar.min.js","sources":["../../../node_modules/svelte/src/internal/shared/utils.js","../../../node_modules/svelte/src/internal/client/constants.js","../../../node_modules/svelte/src/internal/client/reactivity/equality.js","../../../node_modules/svelte/src/internal/client/errors.js","../../../node_modules/svelte/src/internal/flags/index.js","../../../node_modules/svelte/src/constants.js","../../../node_modules/svelte/src/internal/shared/errors.js","../../../node_modules/svelte/src/internal/client/context.js","../../../node_modules/svelte/src/internal/client/proxy.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/dom/hydration.js","../../../node_modules/svelte/src/internal/client/dom/operations.js","../../../node_modules/svelte/src/internal/client/reactivity/effects.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/runtime.js","../../../node_modules/svelte/src/utils.js","../../../node_modules/svelte/src/internal/client/dom/elements/bindings/shared.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/internal/client/render.js","../../../node_modules/svelte/src/internal/client/dom/blocks/if.js","../../../node_modules/svelte/src/internal/client/dom/blocks/each.js","../../../node_modules/svelte/src/internal/client/dom/blocks/snippet.js","../../../node_modules/svelte/src/internal/client/dom/blocks/svelte-component.js","../../../node_modules/svelte/src/internal/client/dom/elements/actions.js","../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/svelte/src/internal/shared/attributes.js","../../../node_modules/svelte/src/internal/client/dom/elements/class.js","../../../node_modules/svelte/src/internal/client/dom/elements/style.js","../../../node_modules/svelte/src/internal/client/dom/elements/attributes.js","../../../node_modules/svelte/src/internal/client/dom/elements/bindings/props.js","../../../node_modules/svelte/src/internal/client/dom/elements/bindings/this.js","../../../node_modules/svelte/src/internal/client/dom/legacy/lifecycle.js","../../../node_modules/svelte/src/store/utils.js","../../../node_modules/svelte/src/store/shared/index.js","../../../node_modules/svelte/src/internal/client/reactivity/store.js","../../../node_modules/svelte/src/internal/client/reactivity/props.js","../../../node_modules/svelte/src/index-client.js","../../../node_modules/svelte/src/version.js","../../../node_modules/svelte/src/internal/disclose-version.js","../../../node_modules/svelte/src/reactivity/utils.js","../../core/src/lib/a11y.js","../../core/src/lib/actions.js","../../core/src/lib/date.js","../../core/src/lib/utils.js","../../core/src/lib/debounce.js","../../core/src/lib/payload.js","../../core/src/lib/dom.js","../../core/src/lib/view.js","../../core/src/lib/events.js","../../core/src/lib/options.js","../../core/src/lib/range.js","../../core/src/lib/resources.js","../../core/src/lib/stores.js","../../core/src/lib/times.js","../../core/src/storage/options.js","../../core/src/storage/stores.js","../../core/src/storage/state.js","../../../node_modules/svelte/src/internal/flags/legacy.js","../../core/src/Buttons.svelte","../../core/src/Toolbar.svelte","../../core/src/Auxiliary.svelte","../../core/src/Calendar.svelte","../../core/src/plugins/day-grid/stores.js","../../core/src/plugins/day-grid/Header.svelte","../../../node_modules/svelte/src/reactivity/set.js","../../core/src/lib/components/BaseEvent.svelte","../../core/src/lib/components/InteractableEvent.svelte","../../core/src/plugins/day-grid/Event.svelte","../../core/src/plugins/day-grid/Popup.svelte","../../core/src/plugins/day-grid/Day.svelte","../../core/src/plugins/day-grid/Week.svelte","../../core/src/plugins/day-grid/Body.svelte","../../core/src/plugins/day-grid/index.js","../../core/src/plugins/interaction/lib/events.js","../../core/src/plugins/interaction/lib/utils.js","../../core/src/plugins/interaction/Action.svelte","../../core/src/plugins/interaction/Pointer.svelte","../../core/src/plugins/interaction/Resizer.svelte","../../core/src/plugins/interaction/Auxiliary.svelte","../../core/src/plugins/interaction/index.js","../../core/src/plugins/list/Event.svelte","../../core/src/plugins/list/Day.svelte","../../core/src/plugins/list/Body.svelte","../../core/src/plugins/list/index.js","../../core/src/plugins/time-grid/stores.js","../../core/src/plugins/time-grid/utils.js","../../core/src/plugins/time-grid/Section.svelte","../../core/src/plugins/time-grid/Body.svelte","../../core/src/plugins/time-grid/Event.svelte","../../core/src/plugins/time-grid/NowIndicator.svelte","../../core/src/plugins/time-grid/Day.svelte","../../core/src/plugins/time-grid/all-day/Event.svelte","../../core/src/plugins/time-grid/all-day/Day.svelte","../../core/src/plugins/time-grid/all-day/Week.svelte","../../core/src/plugins/time-grid/View.svelte","../../core/src/plugins/time-grid/index.js","../../core/src/plugins/resource-time-grid/Label.svelte","../../core/src/plugins/resource-time-grid/View.svelte","../../core/src/plugins/resource-time-grid/index.js","../../core/src/plugins/resource-timeline/stores.js","../../core/src/plugins/resource-timeline/Label.svelte","../../core/src/plugins/resource-timeline/Expander.svelte","../../core/src/plugins/resource-timeline/Sidebar.svelte","../../core/src/plugins/resource-timeline/Header.svelte","../../core/src/plugins/resource-timeline/lib.js","../../core/src/plugins/resource-timeline/Event.svelte","../../core/src/plugins/resource-timeline/Day.svelte","../../core/src/plugins/resource-timeline/Days.svelte","../../core/src/plugins/resource-timeline/Body.svelte","../../core/src/plugins/resource-timeline/NowIndicator.svelte","../../core/src/plugins/resource-timeline/View.svelte","../../core/src/plugins/resource-timeline/index.js","../../core/src/index.es.js","../../core/src/index.iife.js"],"sourcesContent":["// 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","export 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;\nexport const UNOWNED = 1 << 8;\nexport const DISCONNECTED = 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;\nexport const EFFECT_RAN = 1 << 15;\n/** 'Transparent' effects do not create a transition boundary */\nexport const EFFECT_TRANSPARENT = 1 << 16;\n/** Svelte 4 legacy mode props need to be handled with deriveds and be recognized elsewhere, hence the dedicated flag */\nexport const LEGACY_DERIVED_PROP = 1 << 17;\nexport const INSPECT_EFFECT = 1 << 18;\nexport const HEAD_EFFECT = 1 << 19;\nexport const EFFECT_HAS_DERIVED = 1 << 20;\nexport const EFFECT_IS_UPDATING = 1 << 21;\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\nexport const ELEMENT_NODE = 1;\nexport const TEXT_NODE = 3;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\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","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\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\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\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\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\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\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\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 ? `Keyed each block has duplicate key \\`${value}\\` at indexes ${a} and ${b}` : `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\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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_orphan`);\n\t}\n}\n\n/**\n * Maximum update depth exceeded. This can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops\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 can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops\\nhttps://svelte.dev/e/effect_update_depth_exceeded`);\n\n\t\terror.name = 'Svelte error';\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 * 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\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\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\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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/rune_outside_svelte`);\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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_unsafe_mutation`);\n\t}\n}","export let legacy_mode_flag = false;\nexport let tracing_mode_flag = false;\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","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;\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'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","/* 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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/lifecycle_outside_component`);\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\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\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\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/svelte_element_invalid_this_value`);\n\t}\n}","/** @import { ComponentContext } from '#client' */\n\nimport { DEV } from 'esm-env';\nimport { lifecycle_outside_component } from '../shared/errors.js';\nimport { source } from './reactivity/sources.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from './runtime.js';\nimport { effect, teardown } from './reactivity/effects.js';\nimport { legacy_mode_flag } from '../flags/index.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/**\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 * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\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 * @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\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\tvar ctx = (component_context = {\n\t\tp: component_context,\n\t\tc: null,\n\t\td: false,\n\t\te: null,\n\t\tm: false,\n\t\ts: props,\n\t\tx: null,\n\t\tl: null\n\t});\n\n\tif (legacy_mode_flag && !runes) {\n\t\tcomponent_context.l = {\n\t\t\ts: null,\n\t\t\tu: null,\n\t\t\tr1: [],\n\t\t\tr2: source(false)\n\t\t};\n\t}\n\n\tteardown(() => {\n\t\t/** @type {ComponentContext} */ (ctx).d = true;\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\tconst context_stack_item = component_context;\n\tif (context_stack_item !== null) {\n\t\tif (component !== undefined) {\n\t\t\tcontext_stack_item.x = component;\n\t\t}\n\t\tconst component_effects = context_stack_item.e;\n\t\tif (component_effects !== null) {\n\t\t\tvar previous_effect = active_effect;\n\t\t\tvar previous_reaction = active_reaction;\n\t\t\tcontext_stack_item.e = null;\n\t\t\ttry {\n\t\t\t\tfor (var i = 0; i < component_effects.length; i++) {\n\t\t\t\t\tvar component_effect = component_effects[i];\n\t\t\t\t\tset_active_effect(component_effect.effect);\n\t\t\t\t\tset_active_reaction(component_effect.reaction);\n\t\t\t\t\teffect(component_effect.fn);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tset_active_effect(previous_effect);\n\t\t\t\tset_active_reaction(previous_reaction);\n\t\t\t}\n\t\t}\n\t\tcomponent_context = context_stack_item.p;\n\t\tif (DEV) {\n\t\t\tdev_current_component_function = context_stack_item.p?.function ?? null;\n\t\t}\n\t\tcontext_stack_item.m = true;\n\t}\n\t// Micro-optimization: Don't set .a above to the empty object\n\t// so it can be garbage-collected when the return here is unused\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\tlifecycle_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 { Source } from '#client' */\nimport { DEV } from 'esm-env';\nimport { get, active_effect, active_reaction, set_active_reaction } 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 { state as source, set } 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('CreatedAt') : null;\n\tvar reaction = active_reaction;\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\tvar previous_reaction = active_reaction;\n\t\tset_active_reaction(reaction);\n\n\t\t/** @type {T} */\n\t\tvar result = fn();\n\n\t\tset_active_reaction(previous_reaction);\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}\n\n\t/** Used in dev for $inspect.trace() */\n\tvar path = '';\n\n\t/** @param {string} new_path */\n\tfunction update_path(new_path) {\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}\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\tupdate_version(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\t// When working with arrays, we need to also ensure we update the length when removing\n\t\t\t\t// an indexed property\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);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tset(s, UNINITIALIZED);\n\t\t\t\tupdate_version(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 a 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\t\t\t\t\tset(s, proxy(value));\n\n\t\t\t\t\tsources.set(prop, s);\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\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\tupdate_version(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 {Source<number>} signal\n * @param {1 | -1} [d]\n */\nfunction update_version(signal, d = 1) {\n\tset(signal, signal.v + d);\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","/** @import { Derived, Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { CLEAN, DERIVED, DIRTY, EFFECT_HAS_DERIVED, MAYBE_DIRTY, UNOWNED } from '#client/constants';\nimport {\n\tactive_reaction,\n\tactive_effect,\n\tset_signal_status,\n\tskip_reaction,\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 { destroy_effect } from './effects.js';\nimport { inspect_effects, set_inspect_effects } from './sources.js';\nimport { get_stack } from '../dev/tracing.js';\nimport { tracing_mode_flag } from '../../flags/index.js';\nimport { component_context } from '../context.js';\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 || (parent_derived !== null && (parent_derived.f & UNOWNED) !== 0)) {\n\t\tflags |= UNOWNED;\n\t} else {\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_HAS_DERIVED;\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} */ (null),\n\t\twv: 0,\n\t\tparent: parent_derived ?? active_effect\n\t};\n\n\tif (DEV && tracing_mode_flag) {\n\t\tsignal.created = get_stack('CreatedAt');\n\t}\n\n\treturn signal;\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\tpush_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\treturn /** @type {Effect} */ (parent);\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_inspect_effects = inspect_effects;\n\t\tset_inspect_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\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_inspect_effects(prev_inspect_effects);\n\t\t\tstack.pop();\n\t\t}\n\t} else {\n\t\ttry {\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\tderived.v = value;\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) return;\n\n\tvar status =\n\t\t(skip_reaction || (derived.f & UNOWNED) !== 0) && derived.deps !== null ? MAYBE_DIRTY : CLEAN;\n\n\tset_signal_status(derived, status);\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\tschedule_effect,\n\tset_untracked_writes,\n\tset_signal_status,\n\tuntrack,\n\tincrement_write_version,\n\tupdate_effect,\n\treaction_sources,\n\tcheck_dirtiness,\n\tuntracking,\n\tis_destroying_effect,\n\tpush_reaction_value\n} from '../runtime.js';\nimport { equals, safe_equals } from './equality.js';\nimport {\n\tCLEAN,\n\tDERIVED,\n\tDIRTY,\n\tBRANCH_EFFECT,\n\tINSPECT_EFFECT,\n\tUNOWNED,\n\tMAYBE_DIRTY,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT\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 { proxy } from '../proxy.js';\nimport { execute_derived } from './deriveds.js';\n\nexport let inspect_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_inspect_effects(v) {\n\tinspect_effects = v;\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('CreatedAt');\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 & INSPECT_EFFECT) !== 0) &&\n\t\tis_runes() &&\n\t\t(active_reaction.f & (DERIVED | BLOCK_EFFECT | INSPECT_EFFECT)) !== 0 &&\n\t\t!(reaction_sources?.[1].includes(source) && reaction_sources[0] === active_reaction)\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\tif (DEV && tracing_mode_flag) {\n\t\t\tsource.updated = get_stack('UpdatedAt');\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\t\t\tset_signal_status(source, (source.f & UNOWNED) === 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 (DEV && inspect_effects.size > 0) {\n\t\t\tconst inspects = Array.from(inspect_effects);\n\n\t\t\tfor (const effect of inspects) {\n\t\t\t\t// Mark clean inspect-effects as maybe dirty and then check their dirtiness\n\t\t\t\t// instead of just updating the effects - this way we avoid overfiring.\n\t\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t\t}\n\t\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\t\tupdate_effect(effect);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tinspect_effects.clear();\n\t\t}\n\t}\n\n\treturn value;\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 * @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// Skip any effects that are already dirty\n\t\tif ((flags & DIRTY) !== 0) continue;\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 & INSPECT_EFFECT) !== 0) {\n\t\t\tinspect_effects.add(reaction);\n\t\t\tcontinue;\n\t\t}\n\n\t\tset_signal_status(reaction, status);\n\n\t\t// If the signal a) was previously clean or b) is an unowned derived, then mark it\n\t\tif ((flags & (CLEAN | UNOWNED)) !== 0) {\n\t\t\tif ((flags & DERIVED) !== 0) {\n\t\t\t\tmark_reactions(/** @type {Derived} */ (reaction), MAYBE_DIRTY);\n\t\t\t} else {\n\t\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t\t}\n\t\t}\n\t}\n}\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 * Removes all nodes starting at `hydrate_node` up until the next hydration end comment\n */\nexport function remove_nodes() {\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\tnode.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 { 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 { TEXT_NODE } from '#client/constants';\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[]} fragment\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function first_child(fragment, is_text) {\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 *\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 { ComponentContext, ComponentContextLegacy, Derived, Effect, TemplateNode, TransitionManager } from '#client' */\nimport {\n\tcheck_dirtiness,\n\tactive_effect,\n\tactive_reaction,\n\tupdate_effect,\n\tget,\n\tis_destroying_effect,\n\tremove_reactions,\n\tschedule_effect,\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\tUNOWNED,\n\tCLEAN,\n\tINSPECT_EFFECT,\n\tHEAD_EFFECT,\n\tMAYBE_DIRTY,\n\tEFFECT_HAS_DERIVED,\n\tBOUNDARY_EFFECT\n} from '#client/constants';\nimport { set } from './sources.js';\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 { derived } from './deriveds.js';\nimport { component_context, dev_current_component_function } from '../context.js';\n\n/**\n * @param {'$effect' | '$effect.pre' | '$inspect'} rune\n */\nexport function validate_effect(rune) {\n\tif (active_effect === null && active_reaction === null) {\n\t\te.effect_orphan(rune);\n\t}\n\n\tif (active_reaction !== null && (active_reaction.f & UNOWNED) !== 0 && active_effect === null) {\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 * @param {boolean} push\n * @returns {Effect}\n */\nfunction create_effect(type, fn, sync, push = true) {\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 & INSPECT_EFFECT) !== 0) {\n\t\t\tparent = parent.parent;\n\t\t}\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,\n\t\tfirst: null,\n\t\tfn,\n\t\tlast: null,\n\t\tnext: null,\n\t\tparent,\n\t\tprev: null,\n\t\tteardown: null,\n\t\ttransitions: null,\n\t\twv: 0\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// if an effect has no dependencies, no DOM and no teardown function,\n\t// don't bother adding it to the effect tree\n\tvar inert =\n\t\tsync &&\n\t\teffect.deps === null &&\n\t\teffect.first === null &&\n\t\teffect.nodes_start === null &&\n\t\teffect.teardown === null &&\n\t\t(effect.f & (EFFECT_HAS_DERIVED | BOUNDARY_EFFECT)) === 0;\n\n\tif (!inert && push) {\n\t\tif (parent !== null) {\n\t\t\tpush_effect(effect, parent);\n\t\t}\n\n\t\t// if we're in a derived, add the effect there too\n\t\tif (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) {\n\t\t\tvar derived = /** @type {Derived} */ (active_reaction);\n\t\t\t(derived.effects ??= []).push(effect);\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\t// Non-nested `$effect(...)` in a component should be deferred\n\t// until the component is mounted\n\tvar defer =\n\t\tactive_effect !== null &&\n\t\t(active_effect.f & BRANCH_EFFECT) !== 0 &&\n\t\tcomponent_context !== null &&\n\t\t!component_context.m;\n\n\tif (DEV) {\n\t\tdefine_property(fn, 'name', {\n\t\t\tvalue: '$effect'\n\t\t});\n\t}\n\n\tif (defer) {\n\t\tvar context = /** @type {ComponentContext} */ (component_context);\n\t\t(context.e ??= []).push({\n\t\t\tfn,\n\t\t\teffect: active_effect,\n\t\t\treaction: active_reaction\n\t\t});\n\t} else {\n\t\tvar signal = effect(fn);\n\t\treturn signal;\n\t}\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 render_effect(fn);\n}\n\n/** @param {() => void | (() => void)} fn */\nexport function inspect_effect(fn) {\n\treturn create_effect(INSPECT_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\tconst effect = create_effect(ROOT_EFFECT, 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\tconst effect = create_effect(ROOT_EFFECT, 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 }} */\n\tvar token = { effect: null, ran: false };\n\tcontext.l.r1.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\tset(context.l.r2, 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\tif (!get(context.l.r2)) return;\n\n\t\t// Run dirty `$:` statements\n\t\tfor (var token of context.l.r1) {\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 (check_dirtiness(effect)) {\n\t\t\t\tupdate_effect(effect);\n\t\t\t}\n\n\t\t\ttoken.ran = false;\n\t\t}\n\n\t\tcontext.l.r2.v = false; // set directly to avoid rerunning this effect\n\t});\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function render_effect(fn) {\n\treturn create_effect(RENDER_EFFECT, fn, true);\n}\n\n/**\n * @param {(...expressions: any) => void | (() => void)} fn\n * @param {Array<() => any>} thunks\n * @param {<T>(fn: () => T) => Derived<T>} d\n * @returns {Effect}\n */\nexport function template_effect(fn, thunks = [], d = derived) {\n\tif (DEV) {\n\t\t// wrap the effect so that we can decorate stack trace with `in {expression}`\n\t\t// (TODO maybe there's a better approach?)\n\t\treturn render_effect(() => {\n\t\t\tvar outer = /** @type {Effect} */ (active_effect);\n\t\t\tvar inner = () => fn(...deriveds.map(get));\n\n\t\t\tdefine_property(outer.fn, 'name', { value: '{expression}' });\n\t\t\tdefine_property(inner, 'name', { value: '{expression}' });\n\n\t\t\tconst deriveds = thunks.map(d);\n\t\t\tblock(inner);\n\t\t});\n\t}\n\n\tconst deriveds = thunks.map(d);\n\treturn block(() => fn(...deriveds.map(get)));\n}\n\n/**\n * @param {(() => void)} fn\n * @param {number} flags\n */\nexport function block(fn, flags = 0) {\n\treturn create_effect(RENDER_EFFECT | BLOCK_EFFECT | flags, fn, true);\n}\n\n/**\n * @param {(() => void)} fn\n * @param {boolean} [push]\n */\nexport function branch(fn, push = true) {\n\treturn create_effect(RENDER_EFFECT | BRANCH_EFFECT, fn, true, push);\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\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\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 */\nexport function pause_effect(effect, callback) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\n\tpause_children(effect, transitions, true);\n\n\trun_out_transitions(transitions, () => {\n\t\tdestroy_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 = (child.f & EFFECT_TRANSPARENT) !== 0 || (child.f & BRANCH_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\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","import { run_all } from '../../shared/utils.js';\n\n// Fallback for when requestIdleCallback is not available\nconst request_idle_callback =\n\ttypeof requestIdleCallback === 'undefined'\n\t\t? (/** @type {() => void} */ cb) => setTimeout(cb, 1)\n\t\t: requestIdleCallback;\n\n/** @type {Array<() => void>} */\nlet micro_tasks = [];\n\n/** @type {Array<() => void>} */\nlet idle_tasks = [];\n\nfunction run_micro_tasks() {\n\tvar tasks = micro_tasks;\n\tmicro_tasks = [];\n\trun_all(tasks);\n}\n\nfunction run_idle_tasks() {\n\tvar tasks = idle_tasks;\n\tidle_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) {\n\t\tqueueMicrotask(run_micro_tasks);\n\t}\n\n\tmicro_tasks.push(fn);\n}\n\n/**\n * @param {() => void} fn\n */\nexport function queue_idle_task(fn) {\n\tif (idle_tasks.length === 0) {\n\t\trequest_idle_callback(run_idle_tasks);\n\t}\n\n\tidle_tasks.push(fn);\n}\n\n/**\n * Synchronously run any queued tasks.\n */\nexport function flush_tasks() {\n\tif (micro_tasks.length > 0) {\n\t\trun_micro_tasks();\n\t}\n\n\tif (idle_tasks.length > 0) {\n\t\trun_idle_tasks();\n\t}\n}\n","/** @import { Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { FILENAME } from '../../constants.js';\nimport { is_firefox } from './dom/operations.js';\nimport { BOUNDARY_EFFECT, EFFECT_RAN } from './constants.js';\nimport { define_property, get_descriptor } from '../shared/utils.js';\nimport { active_effect } from './runtime.js';\n\n/**\n * @param {unknown} error\n */\nexport function handle_error(error) {\n\tvar effect = /** @type {Effect} */ (active_effect);\n\n\tif (DEV && error instanceof Error) {\n\t\tadjust_error(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\tthrow error;\n\t\t}\n\n\t\t// @ts-expect-error\n\t\teffect.fn(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// @ts-expect-error\n\t\t\t\teffect.fn(error);\n\t\t\t\treturn;\n\t\t\t} catch {}\n\t\t}\n\n\t\teffect = effect.parent;\n\t}\n\n\tthrow error;\n}\n\n/** @type {WeakSet<Error>} */\nconst adjusted_errors = new WeakSet();\n\n/**\n * Add useful information to the error message/stack in development\n * @param {Error} error\n * @param {Effect} effect\n */\nfunction adjust_error(error, effect) {\n\tif (adjusted_errors.has(error)) return;\n\tadjusted_errors.add(error);\n\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\tdefine_property(error, 'message', {\n\t\tvalue: error.message + `\\n${component_stack}\\n`\n\t});\n\n\tif (error.stack) {\n\t\t// Filter out internal modules\n\t\tdefine_property(error, 'stack', {\n\t\t\tvalue: error.stack\n\t\t\t\t.split('\\n')\n\t\t\t\t.filter((line) => !line.includes('svelte/src/internal'))\n\t\t\t\t.join('\\n')\n\t\t});\n\t}\n}\n","/** @import { Derived, Effect, Reaction, Signal, Source, Value } from '#client' */\nimport { DEV } from 'esm-env';\nimport { define_property, get_descriptors, get_prototype_of, index_of } from '../shared/utils.js';\nimport {\n\tdestroy_block_effect_children,\n\tdestroy_effect_children,\n\texecute_effect_teardown,\n\tunlink_effect\n} from './reactivity/effects.js';\nimport {\n\tEFFECT,\n\tDIRTY,\n\tMAYBE_DIRTY,\n\tCLEAN,\n\tDERIVED,\n\tUNOWNED,\n\tDESTROYED,\n\tINERT,\n\tBRANCH_EFFECT,\n\tSTATE_SYMBOL,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tLEGACY_DERIVED_PROP,\n\tDISCONNECTED,\n\tEFFECT_IS_UPDATING\n} from './constants.js';\nimport { flush_tasks } from './dom/task.js';\nimport { internal_set, old_values } from './reactivity/sources.js';\nimport { destroy_derived_effects, update_derived } from './reactivity/deriveds.js';\nimport * as e from './errors.js';\n\nimport { 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\tis_runes,\n\tset_component_context,\n\tset_dev_current_component_function\n} from './context.js';\nimport { handle_error, invoke_error_boundary } from './error-handling.js';\nimport { snapshot } from '../shared/clone.js';\n\nlet is_flushing = false;\n\n/** @type {Effect | null} */\nlet last_scheduled_effect = null;\n\nlet is_updating_effect = false;\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// Handle effect queues\n\n/** @type {Effect[]} */\nlet queued_root_effects = [];\n\n/** @type {Effect[]} Stack of effects, dev only */\nlet dev_effect_stack = [];\n// Handle signal reactivity tree dependencies and reactions\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 | [active_reaction: Reaction, sources: Source[]]}\n */\nexport let reaction_sources = null;\n\n/** @param {Value} value */\nexport function push_reaction_value(value) {\n\tif (active_reaction !== null && active_reaction.f & EFFECT_IS_UPDATING) {\n\t\tif (reaction_sources === null) {\n\t\t\treaction_sources = [active_reaction, [value]];\n\t\t} else {\n\t\t\treaction_sources[1].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 **/\nlet 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\n// If we are working with a get() chain that has no active container,\n// to prevent memory leaks, we skip adding the reaction.\nexport let skip_reaction = false;\n// Handle collecting all signals which are read during a specific time frame\n/** @type {Set<Value> | null} */\nexport let captured_signals = null;\n\n/** @param {Set<Value> | null} value */\nexport function set_captured_signals(value) {\n\tcaptured_signals = 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 check_dirtiness(reaction) {\n\tvar flags = reaction.f;\n\n\tif ((flags & DIRTY) !== 0) {\n\t\treturn true;\n\t}\n\n\tif ((flags & MAYBE_DIRTY) !== 0) {\n\t\tvar dependencies = reaction.deps;\n\t\tvar is_unowned = (flags & UNOWNED) !== 0;\n\n\t\tif (dependencies !== null) {\n\t\t\tvar i;\n\t\t\tvar dependency;\n\t\t\tvar is_disconnected = (flags & DISCONNECTED) !== 0;\n\t\t\tvar is_unowned_connected = is_unowned && active_effect !== null && !skip_reaction;\n\t\t\tvar length = dependencies.length;\n\n\t\t\t// If we are working with a disconnected or an unowned signal that is now connected (due to an active effect)\n\t\t\t// then we need to re-connect the reaction to the dependency\n\t\t\tif (is_disconnected || is_unowned_connected) {\n\t\t\t\tvar derived = /** @type {Derived} */ (reaction);\n\t\t\t\tvar parent = derived.parent;\n\n\t\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\t\tdependency = dependencies[i];\n\n\t\t\t\t\t// We always re-add all reactions (even duplicates) if the derived was\n\t\t\t\t\t// previously disconnected, however we don't if it was unowned as we\n\t\t\t\t\t// de-duplicate dependencies in that case\n\t\t\t\t\tif (is_disconnected || !dependency?.reactions?.includes(derived)) {\n\t\t\t\t\t\t(dependency.reactions ??= []).push(derived);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (is_disconnected) {\n\t\t\t\t\tderived.f ^= DISCONNECTED;\n\t\t\t\t}\n\t\t\t\t// If the unowned derived is now fully connected to the graph again (it's unowned and reconnected, has a parent\n\t\t\t\t// and the parent is not unowned), then we can mark it as connected again, removing the need for the unowned\n\t\t\t\t// flag\n\t\t\t\tif (is_unowned_connected && parent !== null && (parent.f & UNOWNED) === 0) {\n\t\t\t\t\tderived.f ^= UNOWNED;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tdependency = dependencies[i];\n\n\t\t\t\tif (check_dirtiness(/** @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\t// Unowned signals should never be marked as clean unless they\n\t\t// are used within an active_effect without skip_reaction\n\t\tif (!is_unowned || (active_effect !== null && !skip_reaction)) {\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\tfor (var i = 0; i < reactions.length; i++) {\n\t\tvar reaction = reactions[i];\n\n\t\tif (reaction_sources?.[1].includes(signal) && reaction_sources[0] === active_reaction) continue;\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_skip_reaction = skip_reaction;\n\tvar previous_reaction_sources = reaction_sources;\n\tvar previous_component_context = component_context;\n\tvar previous_untracking = untracking;\n\n\tvar flags = reaction.f;\n\n\tnew_deps = /** @type {null | Value[]} */ (null);\n\tskipped_deps = 0;\n\tuntracked_writes = null;\n\tskip_reaction =\n\t\t(flags & UNOWNED) !== 0 && (untracking || !is_updating_effect || active_reaction === null);\n\tactive_reaction = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;\n\n\treaction_sources = null;\n\tset_component_context(reaction.ctx);\n\tuntracking = false;\n\tread_version++;\n\n\treaction.f |= EFFECT_IS_UPDATING;\n\n\ttry {\n\t\tvar result = /** @type {Function} */ (0, reaction.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 (!skip_reaction) {\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\treturn result;\n\t} catch (error) {\n\t\thandle_error(error);\n\t} finally {\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\tskip_reaction = previous_skip_reaction;\n\t\treaction_sources = previous_reaction_sources;\n\t\tset_component_context(previous_component_context);\n\t\tuntracking = previous_untracking;\n\n\t\treaction.f ^= EFFECT_IS_UPDATING;\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\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.\n\t\tif ((dependency.f & (UNOWNED | DISCONNECTED)) === 0) {\n\t\t\tdependency.f ^= DISCONNECTED;\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}\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\n\t\tif (DEV) {\n\t\t\tdev_effect_stack.push(effect);\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}\n\t}\n}\n\nfunction log_effect_stack() {\n\t// eslint-disable-next-line no-console\n\tconsole.error(\n\t\t'Last ten effects were: ',\n\t\tdev_effect_stack.slice(-10).map((d) => d.fn)\n\t);\n\tdev_effect_stack = [];\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 is garbage, ignore. Instead add a console.error message.\n\t\t\tdefine_property(error, 'stack', {\n\t\t\t\tvalue: ''\n\t\t\t});\n\t\t}\n\t\t// Try and handle the error so it can be caught at a boundary, that's\n\t\t// if there's an effect available from when it was last scheduled\n\t\tif (last_scheduled_effect !== null) {\n\t\t\tif (DEV) {\n\t\t\t\ttry {\n\t\t\t\t\tinvoke_error_boundary(error, last_scheduled_effect);\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Only log the effect stack if the error is re-thrown\n\t\t\t\t\tlog_effect_stack();\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinvoke_error_boundary(error, last_scheduled_effect);\n\t\t\t}\n\t\t} else {\n\t\t\tif (DEV) {\n\t\t\t\tlog_effect_stack();\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\nfunction flush_queued_root_effects() {\n\tvar was_updating_effect = is_updating_effect;\n\n\ttry {\n\t\tvar flush_count = 0;\n\t\tis_updating_effect = true;\n\n\t\twhile (queued_root_effects.length > 0) {\n\t\t\tif (flush_count++ > 1000) {\n\t\t\t\tinfinite_loop_guard();\n\t\t\t}\n\n\t\t\tvar root_effects = queued_root_effects;\n\t\t\tvar length = root_effects.length;\n\n\t\t\tqueued_root_effects = [];\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tvar collected_effects = process_effects(root_effects[i]);\n\t\t\t\tflush_queued_effects(collected_effects);\n\t\t\t}\n\t\t\told_values.clear();\n\t\t}\n\t} finally {\n\t\tis_flushing = false;\n\t\tis_updating_effect = was_updating_effect;\n\n\t\tlast_scheduled_effect = null;\n\t\tif (DEV) {\n\t\t\tdev_effect_stack = [];\n\t\t}\n\t}\n}\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\tfor (var i = 0; i < length; i++) {\n\t\tvar effect = effects[i];\n\n\t\tif ((effect.f & (DESTROYED | INERT)) === 0) {\n\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\tupdate_effect(effect);\n\n\t\t\t\t// Effects with no dependencies or teardown do not get added to the effect tree.\n\t\t\t\t// Deferred effects (e.g. `$effect(...)`) _are_ added to the tree because we\n\t\t\t\t// don't know if we need to keep them until they are executed. Doing the check\n\t\t\t\t// here (rather than in `update_effect`) allows us to skip the work for\n\t\t\t\t// immediate effects.\n\t\t\t\tif (effect.deps === null && effect.first === null && effect.nodes_start === null) {\n\t\t\t\t\tif (effect.teardown === null) {\n\t\t\t\t\t\t// remove this effect from the graph\n\t\t\t\t\t\tunlink_effect(effect);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// keep the effect in the graph, but free up some memory\n\t\t\t\t\t\teffect.fn = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @returns {void}\n */\nexport function schedule_effect(signal) {\n\tif (!is_flushing) {\n\t\tis_flushing = true;\n\t\tqueueMicrotask(flush_queued_root_effects);\n\t}\n\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\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/**\n *\n * This function both runs render effects and collects user effects in topological order\n * from the starting effect passed in. Effects will be collected when they match the filtered\n * bitwise flag passed in only. The collected effects array will be populated with all the user\n * effects to be flushed.\n *\n * @param {Effect} root\n * @returns {Effect[]}\n */\nfunction process_effects(root) {\n\t/** @type {Effect[]} */\n\tvar effects = [];\n\n\t/** @type {Effect | null} */\n\tvar effect = root;\n\n\twhile (effect !== null) {\n\t\tvar flags = effect.f;\n\t\tvar is_branch = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0;\n\t\tvar is_skippable_branch = is_branch && (flags & CLEAN) !== 0;\n\n\t\tif (!is_skippable_branch && (flags & INERT) === 0) {\n\t\t\tif ((flags & EFFECT) !== 0) {\n\t\t\t\teffects.push(effect);\n\t\t\t} else if (is_branch) {\n\t\t\t\teffect.f ^= CLEAN;\n\t\t\t} else {\n\t\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\t\tupdate_effect(effect);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** @type {Effect | null} */\n\t\t\tvar child = effect.first;\n\n\t\t\tif (child !== null) {\n\t\t\t\teffect = child;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tvar parent = effect.parent;\n\t\teffect = effect.next;\n\n\t\twhile (effect === null && parent !== null) {\n\t\t\teffect = parent.next;\n\t\t\tparent = parent.parent;\n\t\t}\n\t}\n\n\treturn effects;\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\tvar result;\n\n\tif (fn) {\n\t\tis_flushing = true;\n\t\tflush_queued_root_effects();\n\n\t\tis_flushing = true;\n\t\tresult = fn();\n\t}\n\n\twhile (true) {\n\t\tflush_tasks();\n\n\t\tif (queued_root_effects.length === 0) {\n\t\t\t// this would be reset in `flush_queued_root_effects` but since we are early returning here,\n\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\tis_flushing = false;\n\t\t\tlast_scheduled_effect = null;\n\t\t\tif (DEV) {\n\t\t\t\tdev_effect_stack = [];\n\t\t\t}\n\t\t\treturn /** @type {T} */ (result);\n\t\t}\n\n\t\tis_flushing = true;\n\t\tflush_queued_root_effects();\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\tawait Promise.resolve();\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 * @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\tif (captured_signals !== null) {\n\t\tcaptured_signals.add(signal);\n\t}\n\n\t// Register the dependency on the current reaction signal.\n\tif (active_reaction !== null && !untracking) {\n\t\tif (!reaction_sources?.[1].includes(signal) || reaction_sources[0] !== active_reaction) {\n\t\t\tvar deps = active_reaction.deps;\n\t\t\tif (signal.rv < read_version) {\n\t\t\t\tsignal.rv = read_version;\n\t\t\t\t// If the signal is accessing the same dependencies in the same\n\t\t\t\t// order as it did last time, increment `skipped_deps`\n\t\t\t\t// rather than updating `new_deps`, which creates GC cost\n\t\t\t\tif (new_deps === null && deps !== null && deps[skipped_deps] === signal) {\n\t\t\t\t\tskipped_deps++;\n\t\t\t\t} else if (new_deps === null) {\n\t\t\t\t\tnew_deps = [signal];\n\t\t\t\t} else if (!skip_reaction || !new_deps.includes(signal)) {\n\t\t\t\t\t// Normally we can push duplicated dependencies to `new_deps`, but if we're inside\n\t\t\t\t\t// an unowned derived because skip_reaction is true, then we need to ensure that\n\t\t\t\t\t// we don't have duplicates\n\t\t\t\t\tnew_deps.push(signal);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tis_derived &&\n\t\t/** @type {Derived} */ (signal).deps === null &&\n\t\t/** @type {Derived} */ (signal).effects === null\n\t) {\n\t\tvar derived = /** @type {Derived} */ (signal);\n\t\tvar parent = derived.parent;\n\n\t\tif (parent !== null && (parent.f & UNOWNED) === 0) {\n\t\t\t// If the derived is owned by another derived then mark it as unowned\n\t\t\t// as the derived value might have been referenced in a different context\n\t\t\t// since and thus its parent might not be its true owner anymore\n\t\t\tderived.f ^= UNOWNED;\n\t\t}\n\t}\n\n\tif (is_derived) {\n\t\tderived = /** @type {Derived} */ (signal);\n\n\t\tif (check_dirtiness(derived)) {\n\t\t\tupdate_derived(derived);\n\t\t}\n\t}\n\n\tif (\n\t\tDEV &&\n\t\ttracing_mode_flag &&\n\t\t!untracking &&\n\t\ttracing_expressions !== null &&\n\t\tactive_reaction !== null &&\n\t\ttracing_expressions.reaction === active_reaction\n\t) {\n\t\t// Used when mapping state between special blocks like `each`\n\t\tif (signal.trace) {\n\t\t\tsignal.trace();\n\t\t} else {\n\t\t\tvar trace = get_stack('TracedAt');\n\n\t\t\tif (trace) {\n\t\t\t\tvar entry = tracing_expressions.entries.get(signal);\n\n\t\t\t\tif (entry === undefined) {\n\t\t\t\t\tentry = { traces: [] };\n\t\t\t\t\ttracing_expressions.entries.set(signal, entry);\n\t\t\t\t}\n\n\t\t\t\tvar last = entry.traces[entry.traces.length - 1];\n\n\t\t\t\t// traces can be duplicated, e.g. by `snapshot` invoking both\n\t\t\t\t// both `getOwnPropertyDescriptor` and `get` traps at once\n\t\t\t\tif (trace.stack !== last?.stack) {\n\t\t\t\t\tentry.traces.push(trace);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (is_destroying_effect && old_values.has(signal)) {\n\t\treturn old_values.get(signal);\n\t}\n\n\treturn signal.v;\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 * Capture an array of all the signals that are read when `fn` is called\n * @template T\n * @param {() => T} fn\n */\nfunction capture_signals(fn) {\n\tvar previous_captured_signals = captured_signals;\n\tcaptured_signals = new Set();\n\n\tvar captured = captured_signals;\n\tvar signal;\n\n\ttry {\n\t\tuntrack(fn);\n\t\tif (previous_captured_signals !== null) {\n\t\t\tfor (signal of captured_signals) {\n\t\t\t\tprevious_captured_signals.add(signal);\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tcaptured_signals = previous_captured_signals;\n\t}\n\n\treturn captured;\n}\n\n/**\n * Invokes a function and captures all signals that are read during the invocation,\n * then invalidates them.\n * @param {() => any} fn\n */\nexport function invalidate_inner_signals(fn) {\n\tvar captured = capture_signals(() => untrack(fn));\n\n\tfor (var signal of captured) {\n\t\t// Go one level up because derived signals created as part of props in legacy mode\n\t\tif ((signal.f & LEGACY_DERIVED_PROP) !== 0) {\n\t\t\tfor (const dep of /** @type {Derived} */ (signal).deps || []) {\n\t\t\t\tif ((dep.f & DERIVED) === 0) {\n\t\t\t\t\t// Use internal_set instead of set here and below to avoid mutation validation\n\t\t\t\t\tinternal_set(dep, dep.v);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tinternal_set(signal, signal.v);\n\t\t}\n\t}\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, unknown>} obj\n * @param {string[]} keys\n * @returns {Record<string, unknown>}\n */\nexport function exclude_from_object(obj, keys) {\n\t/** @type {Record<string, 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\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","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 is_delegated(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'hidden',\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\nexport const 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.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'$inspect',\n\t'$inspect().with',\n\t'$inspect.trace',\n\t'$host'\n]);\n\n/** @typedef {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 {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 {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 { 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 { teardown } from '../../reactivity/effects.js';\nimport { define_property, is_array } 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/**\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\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// @ts-expect-error is added below\n\tvar handled_at = 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\tif (is_array(delegated)) {\n\t\t\t\t\t\tvar [fn, ...data] = delegated;\n\t\t\t\t\t\tfn.apply(current_target, [event, ...data]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelegated.call(current_target, event);\n\t\t\t\t\t}\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, 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 {NAMESPACE_SVG | 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\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\t/** @type {Effect} */ (active_effect).nodes_end = hydrate_node;\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","/** @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, branch } from './reactivity/effects.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tset_hydrate_node,\n\tset_hydrating\n} 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 { reset_head_anchor } from './dom/blocks/svelte-head.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 } from './constants.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\t\thydrate_next();\n\n\t\tconst instance = _mount(component, { ...options, anchor });\n\n\t\tif (\n\t\t\thydrate_node === null ||\n\t\t\thydrate_node.nodeType !== COMMENT_NODE ||\n\t\t\t/** @type {Comment} */ (hydrate_node).data !== HYDRATION_END\n\t\t) {\n\t\t\tw.hydration_mismatch();\n\t\t\tthrow HYDRATION_ERROR;\n\t\t}\n\n\t\tset_hydrating(false);\n\n\t\treturn /** @type {Exports} */ (instance);\n\t} catch (error) {\n\t\tif (error === HYDRATION_ERROR) {\n\t\t\tif (options.recover === false) {\n\t\t\t\te.hydration_failed();\n\t\t\t}\n\n\t\t\t// If an error occured above, the operations might not yet have been initialised.\n\t\t\tinit_operations();\n\t\t\tclear_text_content(target);\n\n\t\t\tset_hydrating(false);\n\t\t\treturn mount(component, options);\n\t\t}\n\n\t\tthrow error;\n\t} finally {\n\t\tset_hydrating(was_hydrating);\n\t\tset_hydrate_node(previous_hydrate_node);\n\t\treset_head_anchor();\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\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\tbranch(() => {\n\t\t\tif (context) {\n\t\t\t\tpush({});\n\t\t\t\tvar ctx = /** @type {ComponentContext} */ (component_context);\n\t\t\t\tctx.c = context;\n\t\t\t}\n\n\t\t\tif (events) {\n\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/** @type {any} */ (props).$$events = events;\n\t\t\t}\n\n\t\t\tif (hydrating) {\n\t\t\t\tassign_nodes(/** @type {TemplateNode} */ (anchor_node), null);\n\t\t\t}\n\n\t\t\tshould_intro = intro;\n\t\t\t// @ts-expect-error the public typings are not what the actual function looks like\n\t\t\tcomponent = Component(anchor_node, props) || {};\n\t\t\tshould_intro = true;\n\n\t\t\tif (hydrating) {\n\t\t\t\t/** @type {Effect} */ (active_effect).nodes_end = hydrate_node;\n\t\t\t}\n\n\t\t\tif (context) {\n\t\t\t\tpop();\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\tw.lifecycle_double_unmount();\n\t}\n\n\treturn Promise.resolve();\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tread_hydration_instruction,\n\tremove_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport { block, branch, pause_effect, resume_effect } from '../../reactivity/effects.js';\nimport { HYDRATION_START, HYDRATION_START_ELSE, UNINITIALIZED } from '../../../../constants.js';\n\n/**\n * @param {TemplateNode} node\n * @param {(branch: (fn: (anchor: Node, elseif?: [number,number]) => void, flag?: boolean) => void) => void} fn\n * @param {[number,number]} [elseif]\n * @returns {void}\n */\nexport function if_block(node, fn, [root_index, hydrate_index] = [0, 0]) {\n\tif (hydrating && root_index === 0) {\n\t\thydrate_next();\n\t}\n\n\tvar anchor = node;\n\n\t/** @type {Effect | null} */\n\tvar consequent_effect = null;\n\n\t/** @type {Effect | null} */\n\tvar alternate_effect = null;\n\n\t/** @type {UNINITIALIZED | boolean | null} */\n\tvar condition = UNINITIALIZED;\n\n\tvar flags = root_index > 0 ? EFFECT_TRANSPARENT : 0;\n\n\tvar has_branch = false;\n\n\tconst set_branch = (\n\t\t/** @type {(anchor: Node, elseif?: [number,number]) => void} */ fn,\n\t\tflag = true\n\t) => {\n\t\thas_branch = true;\n\t\tupdate_branch(flag, fn);\n\t};\n\n\tconst update_branch = (\n\t\t/** @type {boolean | null} */ new_condition,\n\t\t/** @type {null | ((anchor: Node, elseif?: [number,number]) => void)} */ fn\n\t) => {\n\t\tif (condition === (condition = new_condition)) return;\n\n\t\t/** Whether or not there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\tlet mismatch = false;\n\n\t\tif (hydrating && hydrate_index !== -1) {\n\t\t\tif (root_index === 0) {\n\t\t\t\tconst data = read_hydration_instruction(anchor);\n\n\t\t\t\tif (data === HYDRATION_START) {\n\t\t\t\t\thydrate_index = 0;\n\t\t\t\t} else if (data === HYDRATION_START_ELSE) {\n\t\t\t\t\thydrate_index = Infinity;\n\t\t\t\t} else {\n\t\t\t\t\thydrate_index = parseInt(data.substring(1));\n\t\t\t\t\tif (hydrate_index !== hydrate_index) {\n\t\t\t\t\t\t// if hydrate_index is NaN\n\t\t\t\t\t\t// we set an invalid index to force mismatch\n\t\t\t\t\t\thydrate_index = condition ? Infinity : -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst is_else = hydrate_index > root_index;\n\n\t\t\tif (!!condition === is_else) {\n\t\t\t\t// Hydration mismatch: remove everything inside the anchor and start fresh.\n\t\t\t\t// This could happen with `{#if browser}...{/if}`, for example\n\t\t\t\tanchor = remove_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tset_hydrating(false);\n\t\t\t\tmismatch = true;\n\t\t\t\thydrate_index = -1; // ignore hydration in next else if\n\t\t\t}\n\t\t}\n\n\t\tif (condition) {\n\t\t\tif (consequent_effect) {\n\t\t\t\tresume_effect(consequent_effect);\n\t\t\t} else if (fn) {\n\t\t\t\tconsequent_effect = branch(() => fn(anchor));\n\t\t\t}\n\n\t\t\tif (alternate_effect) {\n\t\t\t\tpause_effect(alternate_effect, () => {\n\t\t\t\t\talternate_effect = null;\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tif (alternate_effect) {\n\t\t\t\tresume_effect(alternate_effect);\n\t\t\t} else if (fn) {\n\t\t\t\talternate_effect = branch(() => fn(anchor, [root_index + 1, hydrate_index]));\n\t\t\t}\n\n\t\t\tif (consequent_effect) {\n\t\t\t\tpause_effect(consequent_effect, () => {\n\t\t\t\t\tconsequent_effect = null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (mismatch) {\n\t\t\t// continue in hydration mode\n\t\t\tset_hydrating(true);\n\t\t}\n\t};\n\n\tblock(() => {\n\t\thas_branch = false;\n\t\tfn(set_branch);\n\t\tif (!has_branch) {\n\t\t\tupdate_branch(null, null);\n\t\t}\n\t}, flags);\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n","/** @import { EachItem, EachState, Effect, MaybeSource, Source, TemplateNode, TransitionManager, Value } from '#client' */\nimport {\n\tEACH_INDEX_REACTIVE,\n\tEACH_IS_ANIMATED,\n\tEACH_IS_CONTROLLED,\n\tEACH_ITEM_IMMUTABLE,\n\tEACH_ITEM_REACTIVE,\n\tHYDRATION_END,\n\tHYDRATION_START_ELSE\n} from '../../../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tread_hydration_instruction,\n\tremove_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport {\n\tclear_text_content,\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling\n} from '../operations.js';\nimport {\n\tblock,\n\tbranch,\n\tdestroy_effect,\n\trun_out_transitions,\n\tpause_children,\n\tpause_effect,\n\tresume_effect\n} from '../../reactivity/effects.js';\nimport { source, mutable_source, internal_set } from '../../reactivity/sources.js';\nimport { array_from, is_array } from '../../../shared/utils.js';\nimport { COMMENT_NODE, INERT } from '#client/constants';\nimport { queue_micro_task } from '../task.js';\nimport { active_effect, get } from '../../runtime.js';\nimport { DEV } from 'esm-env';\nimport { derived_safe_equal } from '../../reactivity/deriveds.js';\n\n/**\n * The row of a keyed each block that is currently updating. We track this\n * so that `animate:` directives have something to attach themselves to\n * @type {EachItem | null}\n */\nexport let current_each_item = null;\n\n/** @param {EachItem | null} item */\nexport function set_current_each_item(item) {\n\tcurrent_each_item = item;\n}\n\n/**\n * @param {any} _\n * @param {number} i\n */\nexport function index(_, i) {\n\treturn i;\n}\n\n/**\n * Pause multiple effects simultaneously, and coordinate their\n * subsequent destruction. Used in each blocks\n * @param {EachState} state\n * @param {EachItem[]} items\n * @param {null | Node} controlled_anchor\n * @param {Map<any, EachItem>} items_map\n */\nfunction pause_effects(state, items, controlled_anchor, items_map) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\tvar length = items.length;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tpause_children(items[i].e, transitions, true);\n\t}\n\n\tvar is_controlled = length > 0 && transitions.length === 0 && controlled_anchor !== null;\n\t// If we have a controlled anchor, it means that the each block is inside a single\n\t// DOM element, so we can apply a fast-path for clearing the contents of the element.\n\tif (is_controlled) {\n\t\tvar parent_node = /** @type {Element} */ (\n\t\t\t/** @type {Element} */ (controlled_anchor).parentNode\n\t\t);\n\t\tclear_text_content(parent_node);\n\t\tparent_node.append(/** @type {Element} */ (controlled_anchor));\n\t\titems_map.clear();\n\t\tlink(state, items[0].prev, items[length - 1].next);\n\t}\n\n\trun_out_transitions(transitions, () => {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tvar item = items[i];\n\t\t\tif (!is_controlled) {\n\t\t\t\titems_map.delete(item.k);\n\t\t\t\tlink(state, item.prev, item.next);\n\t\t\t}\n\t\t\tdestroy_effect(item.e, !is_controlled);\n\t\t}\n\t});\n}\n\n/**\n * @template V\n * @param {Element | Comment} node The next sibling node, or the parent node if this is a 'controlled' block\n * @param {number} flags\n * @param {() => V[]} get_collection\n * @param {(value: V, index: number) => any} get_key\n * @param {(anchor: Node, item: MaybeSource<V>, index: MaybeSource<number>) => void} render_fn\n * @param {null | ((anchor: Node) => void)} fallback_fn\n * @returns {void}\n */\nexport function each(node, flags, get_collection, get_key, render_fn, fallback_fn = null) {\n\tvar anchor = node;\n\n\t/** @type {EachState} */\n\tvar state = { flags, items: new Map(), first: null };\n\n\tvar is_controlled = (flags & EACH_IS_CONTROLLED) !== 0;\n\n\tif (is_controlled) {\n\t\tvar parent_node = /** @type {Element} */ (node);\n\n\t\tanchor = hydrating\n\t\t\t? set_hydrate_node(/** @type {Comment | Text} */ (get_first_child(parent_node)))\n\t\t\t: parent_node.appendChild(create_text());\n\t}\n\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\t/** @type {Effect | null} */\n\tvar fallback = null;\n\n\tvar was_empty = false;\n\n\t// TODO: ideally we could use derived for runes mode but because of the ability\n\t// to use a store which can be mutated, we can't do that here as mutating a store\n\t// will still result in the collection array being the same from the store\n\tvar each_array = derived_safe_equal(() => {\n\t\tvar collection = get_collection();\n\n\t\treturn is_array(collection) ? collection : collection == null ? [] : array_from(collection);\n\t});\n\n\tblock(() => {\n\t\tvar array = get(each_array);\n\t\tvar length = array.length;\n\n\t\tif (was_empty && length === 0) {\n\t\t\t// ignore updates if the array is empty,\n\t\t\t// and it already was empty on previous run\n\t\t\treturn;\n\t\t}\n\t\twas_empty = length === 0;\n\n\t\t/** `true` if there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\tlet mismatch = false;\n\n\t\tif (hydrating) {\n\t\t\tvar is_else = read_hydration_instruction(anchor) === HYDRATION_START_ELSE;\n\n\t\t\tif (is_else !== (length === 0)) {\n\t\t\t\t// hydration mismatch — remove the server-rendered DOM and start over\n\t\t\t\tanchor = remove_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tset_hydrating(false);\n\t\t\t\tmismatch = true;\n\t\t\t}\n\t\t}\n\n\t\t// this is separate to the previous block because `hydrating` might change\n\t\tif (hydrating) {\n\t\t\t/** @type {EachItem | null} */\n\t\t\tvar prev = null;\n\n\t\t\t/** @type {EachItem} */\n\t\t\tvar item;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tif (\n\t\t\t\t\thydrate_node.nodeType === COMMENT_NODE &&\n\t\t\t\t\t/** @type {Comment} */ (hydrate_node).data === HYDRATION_END\n\t\t\t\t) {\n\t\t\t\t\t// The server rendered fewer items than expected,\n\t\t\t\t\t// so break out and continue appending non-hydrated items\n\t\t\t\t\tanchor = /** @type {Comment} */ (hydrate_node);\n\t\t\t\t\tmismatch = true;\n\t\t\t\t\tset_hydrating(false);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tvar value = array[i];\n\t\t\t\tvar key = get_key(value, i);\n\t\t\t\titem = create_item(\n\t\t\t\t\thydrate_node,\n\t\t\t\t\tstate,\n\t\t\t\t\tprev,\n\t\t\t\t\tnull,\n\t\t\t\t\tvalue,\n\t\t\t\t\tkey,\n\t\t\t\t\ti,\n\t\t\t\t\trender_fn,\n\t\t\t\t\tflags,\n\t\t\t\t\tget_collection\n\t\t\t\t);\n\t\t\t\tstate.items.set(key, item);\n\n\t\t\t\tprev = item;\n\t\t\t}\n\n\t\t\t// remove excess nodes\n\t\t\tif (length > 0) {\n\t\t\t\tset_hydrate_node(remove_nodes());\n\t\t\t}\n\t\t}\n\n\t\tif (!hydrating) {\n\t\t\treconcile(array, state, anchor, render_fn, flags, get_key, get_collection);\n\t\t}\n\n\t\tif (fallback_fn !== null) {\n\t\t\tif (length === 0) {\n\t\t\t\tif (fallback) {\n\t\t\t\t\tresume_effect(fallback);\n\t\t\t\t} else {\n\t\t\t\t\tfallback = branch(() => fallback_fn(anchor));\n\t\t\t\t}\n\t\t\t} else if (fallback !== null) {\n\t\t\t\tpause_effect(fallback, () => {\n\t\t\t\t\tfallback = null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (mismatch) {\n\t\t\t// continue in hydration mode\n\t\t\tset_hydrating(true);\n\t\t}\n\n\t\t// When we mount the each block for the first time, the collection won't be\n\t\t// connected to this effect as the effect hasn't finished running yet and its deps\n\t\t// won't be assigned. However, it's possible that when reconciling the each block\n\t\t// that a mutation occurred and it's made the collection MAYBE_DIRTY, so reading the\n\t\t// collection again can provide consistency to the reactive graph again as the deriveds\n\t\t// will now be `CLEAN`.\n\t\tget(each_array);\n\t});\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n\n/**\n * Add, remove, or reorder items output by an each block as its input changes\n * @template V\n * @param {Array<V>} array\n * @param {EachState} state\n * @param {Element | Comment | Text} anchor\n * @param {(anchor: Node, item: MaybeSource<V>, index: number | Source<number>, collection: () => V[]) => void} render_fn\n * @param {number} flags\n * @param {(value: V, index: number) => any} get_key\n * @param {() => V[]} get_collection\n * @returns {void}\n */\nfunction reconcile(array, state, anchor, render_fn, flags, get_key, get_collection) {\n\tvar is_animated = (flags & EACH_IS_ANIMATED) !== 0;\n\tvar should_update = (flags & (EACH_ITEM_REACTIVE | EACH_INDEX_REACTIVE)) !== 0;\n\n\tvar length = array.length;\n\tvar items = state.items;\n\tvar first = state.first;\n\tvar current = first;\n\n\t/** @type {undefined | Set<EachItem>} */\n\tvar seen;\n\n\t/** @type {EachItem | null} */\n\tvar prev = null;\n\n\t/** @type {undefined | Set<EachItem>} */\n\tvar to_animate;\n\n\t/** @type {EachItem[]} */\n\tvar matched = [];\n\n\t/** @type {EachItem[]} */\n\tvar stashed = [];\n\n\t/** @type {V} */\n\tvar value;\n\n\t/** @type {any} */\n\tvar key;\n\n\t/** @type {EachItem | undefined} */\n\tvar item;\n\n\t/** @type {number} */\n\tvar i;\n\n\tif (is_animated) {\n\t\tfor (i = 0; i < length; i += 1) {\n\t\t\tvalue = array[i];\n\t\t\tkey = get_key(value, i);\n\t\t\titem = items.get(key);\n\n\t\t\tif (item !== undefined) {\n\t\t\t\titem.a?.measure();\n\t\t\t\t(to_animate ??= new Set()).add(item);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i = 0; i < length; i += 1) {\n\t\tvalue = array[i];\n\t\tkey = get_key(value, i);\n\t\titem = items.get(key);\n\n\t\tif (item === undefined) {\n\t\t\tvar child_anchor = current ? /** @type {TemplateNode} */ (current.e.nodes_start) : anchor;\n\n\t\t\tprev = create_item(\n\t\t\t\tchild_anchor,\n\t\t\t\tstate,\n\t\t\t\tprev,\n\t\t\t\tprev === null ? state.first : prev.next,\n\t\t\t\tvalue,\n\t\t\t\tkey,\n\t\t\t\ti,\n\t\t\t\trender_fn,\n\t\t\t\tflags,\n\t\t\t\tget_collection\n\t\t\t);\n\n\t\t\titems.set(key, prev);\n\n\t\t\tmatched = [];\n\t\t\tstashed = [];\n\n\t\t\tcurrent = prev.next;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (should_update) {\n\t\t\tupdate_item(item, value, i, flags);\n\t\t}\n\n\t\tif ((item.e.f & INERT) !== 0) {\n\t\t\tresume_effect(item.e);\n\t\t\tif (is_animated) {\n\t\t\t\titem.a?.unfix();\n\t\t\t\t(to_animate ??= new Set()).delete(item);\n\t\t\t}\n\t\t}\n\n\t\tif (item !== current) {\n\t\t\tif (seen !== undefined && seen.has(item)) {\n\t\t\t\tif (matched.length < stashed.length) {\n\t\t\t\t\t// more efficient to move later items to the front\n\t\t\t\t\tvar start = stashed[0];\n\t\t\t\t\tvar j;\n\n\t\t\t\t\tprev = start.prev;\n\n\t\t\t\t\tvar a = matched[0];\n\t\t\t\t\tvar b = matched[matched.length - 1];\n\n\t\t\t\t\tfor (j = 0; j < matched.length; j += 1) {\n\t\t\t\t\t\tmove(matched[j], start, anchor);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (j = 0; j < stashed.length; j += 1) {\n\t\t\t\t\t\tseen.delete(stashed[j]);\n\t\t\t\t\t}\n\n\t\t\t\t\tlink(state, a.prev, b.next);\n\t\t\t\t\tlink(state, prev, a);\n\t\t\t\t\tlink(state, b, start);\n\n\t\t\t\t\tcurrent = start;\n\t\t\t\t\tprev = b;\n\t\t\t\t\ti -= 1;\n\n\t\t\t\t\tmatched = [];\n\t\t\t\t\tstashed = [];\n\t\t\t\t} else {\n\t\t\t\t\t// more efficient to move earlier items to the back\n\t\t\t\t\tseen.delete(item);\n\t\t\t\t\tmove(item, current, anchor);\n\n\t\t\t\t\tlink(state, item.prev, item.next);\n\t\t\t\t\tlink(state, item, prev === null ? state.first : prev.next);\n\t\t\t\t\tlink(state, prev, item);\n\n\t\t\t\t\tprev = item;\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tmatched = [];\n\t\t\tstashed = [];\n\n\t\t\twhile (current !== null && current.k !== key) {\n\t\t\t\t// If the each block isn't inert and an item has an effect that is already inert,\n\t\t\t\t// skip over adding it to our seen Set as the item is already being handled\n\t\t\t\tif ((current.e.f & INERT) === 0) {\n\t\t\t\t\t(seen ??= new Set()).add(current);\n\t\t\t\t}\n\t\t\t\tstashed.push(current);\n\t\t\t\tcurrent = current.next;\n\t\t\t}\n\n\t\t\tif (current === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\titem = current;\n\t\t}\n\n\t\tmatched.push(item);\n\t\tprev = item;\n\t\tcurrent = item.next;\n\t}\n\n\tif (current !== null || seen !== undefined) {\n\t\tvar to_destroy = seen === undefined ? [] : array_from(seen);\n\n\t\twhile (current !== null) {\n\t\t\t// If the each block isn't inert, then inert effects are currently outroing and will be removed once the transition is finished\n\t\t\tif ((current.e.f & INERT) === 0) {\n\t\t\t\tto_destroy.push(current);\n\t\t\t}\n\t\t\tcurrent = current.next;\n\t\t}\n\n\t\tvar destroy_length = to_destroy.length;\n\n\t\tif (destroy_length > 0) {\n\t\t\tvar controlled_anchor = (flags & EACH_IS_CONTROLLED) !== 0 && length === 0 ? anchor : null;\n\n\t\t\tif (is_animated) {\n\t\t\t\tfor (i = 0; i < destroy_length; i += 1) {\n\t\t\t\t\tto_destroy[i].a?.measure();\n\t\t\t\t}\n\n\t\t\t\tfor (i = 0; i < destroy_length; i += 1) {\n\t\t\t\t\tto_destroy[i].a?.fix();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpause_effects(state, to_destroy, controlled_anchor, items);\n\t\t}\n\t}\n\n\tif (is_animated) {\n\t\tqueue_micro_task(() => {\n\t\t\tif (to_animate === undefined) return;\n\t\t\tfor (item of to_animate) {\n\t\t\t\titem.a?.apply();\n\t\t\t}\n\t\t});\n\t}\n\n\t/** @type {Effect} */ (active_effect).first = state.first && state.first.e;\n\t/** @type {Effect} */ (active_effect).last = prev && prev.e;\n}\n\n/**\n * @param {EachItem} item\n * @param {any} value\n * @param {number} index\n * @param {number} type\n * @returns {void}\n */\nfunction update_item(item, value, index, type) {\n\tif ((type & EACH_ITEM_REACTIVE) !== 0) {\n\t\tinternal_set(item.v, value);\n\t}\n\n\tif ((type & EACH_INDEX_REACTIVE) !== 0) {\n\t\tinternal_set(/** @type {Value<number>} */ (item.i), index);\n\t} else {\n\t\titem.i = index;\n\t}\n}\n\n/**\n * @template V\n * @param {Node} anchor\n * @param {EachState} state\n * @param {EachItem | null} prev\n * @param {EachItem | null} next\n * @param {V} value\n * @param {unknown} key\n * @param {number} index\n * @param {(anchor: Node, item: V | Source<V>, index: number | Value<number>, collection: () => V[]) => void} render_fn\n * @param {number} flags\n * @param {() => V[]} get_collection\n * @returns {EachItem}\n */\nfunction create_item(\n\tanchor,\n\tstate,\n\tprev,\n\tnext,\n\tvalue,\n\tkey,\n\tindex,\n\trender_fn,\n\tflags,\n\tget_collection\n) {\n\tvar previous_each_item = current_each_item;\n\tvar reactive = (flags & EACH_ITEM_REACTIVE) !== 0;\n\tvar mutable = (flags & EACH_ITEM_IMMUTABLE) === 0;\n\n\tvar v = reactive ? (mutable ? mutable_source(value, false, false) : source(value)) : value;\n\tvar i = (flags & EACH_INDEX_REACTIVE) === 0 ? index : source(index);\n\n\tif (DEV && reactive) {\n\t\t// For tracing purposes, we need to link the source signal we create with the\n\t\t// collection + index so that tracing works as intended\n\t\t/** @type {Value} */ (v).trace = () => {\n\t\t\tvar collection_index = typeof i === 'number' ? index : i.v;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\tget_collection()[collection_index];\n\t\t};\n\t}\n\n\t/** @type {EachItem} */\n\tvar item = {\n\t\ti,\n\t\tv,\n\t\tk: key,\n\t\ta: null,\n\t\t// @ts-expect-error\n\t\te: null,\n\t\tprev,\n\t\tnext\n\t};\n\n\tcurrent_each_item = item;\n\n\ttry {\n\t\titem.e = branch(() => render_fn(anchor, v, i, get_collection), hydrating);\n\n\t\titem.e.prev = prev && prev.e;\n\t\titem.e.next = next && next.e;\n\n\t\tif (prev === null) {\n\t\t\tstate.first = item;\n\t\t} else {\n\t\t\tprev.next = item;\n\t\t\tprev.e.next = item.e;\n\t\t}\n\n\t\tif (next !== null) {\n\t\t\tnext.prev = item;\n\t\t\tnext.e.prev = item.e;\n\t\t}\n\n\t\treturn item;\n\t} finally {\n\t\tcurrent_each_item = previous_each_item;\n\t}\n}\n\n/**\n * @param {EachItem} item\n * @param {EachItem | null} next\n * @param {Text | Element | Comment} anchor\n */\nfunction move(item, next, anchor) {\n\tvar end = item.next ? /** @type {TemplateNode} */ (item.next.e.nodes_start) : anchor;\n\n\tvar dest = next ? /** @type {TemplateNode} */ (next.e.nodes_start) : anchor;\n\tvar node = /** @type {TemplateNode} */ (item.e.nodes_start);\n\n\twhile (node !== end) {\n\t\tvar next_node = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\tdest.before(node);\n\t\tnode = next_node;\n\t}\n}\n\n/**\n * @param {EachState} state\n * @param {EachItem | null} prev\n * @param {EachItem | null} next\n */\nfunction link(state, prev, next) {\n\tif (prev === null) {\n\t\tstate.first = next;\n\t} else {\n\t\tprev.next = next;\n\t\tprev.e.next = next && next.e;\n\t}\n\n\tif (next !== null) {\n\t\tnext.prev = prev;\n\t\tnext.e.prev = prev && prev.e;\n\t}\n}\n","/** @import { Snippet } from 'svelte' */\n/** @import { Effect, TemplateNode } from '#client' */\n/** @import { Getters } from '#shared' */\nimport { EFFECT_TRANSPARENT, ELEMENT_NODE } from '#client/constants';\nimport { branch, block, destroy_effect, teardown } from '../../reactivity/effects.js';\nimport {\n\tdev_current_component_function,\n\tset_dev_current_component_function\n} from '../../context.js';\nimport { hydrate_next, hydrate_node, hydrating } from '../hydration.js';\nimport { create_fragment_from_html } from '../reconciler.js';\nimport { assign_nodes } from '../template.js';\nimport * as w from '../../warnings.js';\nimport * as e from '../../errors.js';\nimport { DEV } from 'esm-env';\nimport { get_first_child, get_next_sibling } from '../operations.js';\nimport { noop } from '../../../shared/utils.js';\nimport { prevent_snippet_stringification } from '../../../shared/validate.js';\n\n/**\n * @template {(node: TemplateNode, ...args: any[]) => void} SnippetFn\n * @param {TemplateNode} node\n * @param {() => SnippetFn | null | undefined} get_snippet\n * @param {(() => any)[]} args\n * @returns {void}\n */\nexport function snippet(node, get_snippet, ...args) {\n\tvar anchor = node;\n\n\t/** @type {SnippetFn | null | undefined} */\n\t// @ts-ignore\n\tvar snippet = noop;\n\n\t/** @type {Effect | null} */\n\tvar snippet_effect;\n\n\tblock(() => {\n\t\tif (snippet === (snippet = get_snippet())) return;\n\n\t\tif (snippet_effect) {\n\t\t\tdestroy_effect(snippet_effect);\n\t\t\tsnippet_effect = null;\n\t\t}\n\n\t\tif (DEV && snippet == null) {\n\t\t\te.invalid_snippet();\n\t\t}\n\n\t\tsnippet_effect = branch(() => /** @type {SnippetFn} */ (snippet)(anchor, ...args));\n\t}, EFFECT_TRANSPARENT);\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n\n/**\n * In development, wrap the snippet function so that it passes validation, and so that the\n * correct component context is set for ownership checks\n * @param {any} component\n * @param {(node: TemplateNode, ...args: any[]) => void} fn\n */\nexport function wrap_snippet(component, fn) {\n\tconst snippet = (/** @type {TemplateNode} */ node, /** @type {any[]} */ ...args) => {\n\t\tvar previous_component_function = dev_current_component_function;\n\t\tset_dev_current_component_function(component);\n\n\t\ttry {\n\t\t\treturn fn(node, ...args);\n\t\t} finally {\n\t\t\tset_dev_current_component_function(previous_component_function);\n\t\t}\n\t};\n\n\tprevent_snippet_stringification(snippet);\n\n\treturn snippet;\n}\n\n/**\n * Create a snippet programmatically\n * @template {unknown[]} Params\n * @param {(...params: Getters<Params>) => {\n * render: () => string\n * setup?: (element: Element) => void | (() => void)\n * }} fn\n * @returns {Snippet<Params>}\n */\nexport function createRawSnippet(fn) {\n\t// @ts-expect-error the types are a lie\n\treturn (/** @type {TemplateNode} */ anchor, /** @type {Getters<Params>} */ ...params) => {\n\t\tvar snippet = fn(...params);\n\n\t\t/** @type {Element} */\n\t\tvar element;\n\n\t\tif (hydrating) {\n\t\t\telement = /** @type {Element} */ (hydrate_node);\n\t\t\thydrate_next();\n\t\t} else {\n\t\t\tvar html = snippet.render().trim();\n\t\t\tvar fragment = create_fragment_from_html(html);\n\t\t\telement = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (DEV && (get_next_sibling(element) !== null || element.nodeType !== ELEMENT_NODE)) {\n\t\t\t\tw.invalid_raw_snippet_render();\n\t\t\t}\n\n\t\t\tanchor.before(element);\n\t\t}\n\n\t\tconst result = snippet.setup?.(element);\n\t\tassign_nodes(element, element);\n\n\t\tif (typeof result === 'function') {\n\t\t\tteardown(result);\n\t\t}\n\t};\n}\n","/** @import { TemplateNode, Dom, Effect } from '#client' */\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport { block, branch, pause_effect } from '../../reactivity/effects.js';\nimport { hydrate_next, hydrate_node, hydrating } from '../hydration.js';\n\n/**\n * @template P\n * @template {(props: P) => void} C\n * @param {TemplateNode} node\n * @param {() => C} get_component\n * @param {(anchor: TemplateNode, component: C) => Dom | void} render_fn\n * @returns {void}\n */\nexport function component(node, get_component, render_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar anchor = node;\n\n\t/** @type {C} */\n\tvar component;\n\n\t/** @type {Effect | null} */\n\tvar effect;\n\n\tblock(() => {\n\t\tif (component === (component = get_component())) return;\n\n\t\tif (effect) {\n\t\t\tpause_effect(effect);\n\t\t\teffect = null;\n\t\t}\n\n\t\tif (component) {\n\t\t\teffect = branch(() => render_fn(anchor, component));\n\t\t}\n\t}, EFFECT_TRANSPARENT);\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n","/** @import { ActionPayload } from '#client' */\nimport { effect, render_effect } from '../../reactivity/effects.js';\nimport { safe_not_equal } from '../../reactivity/equality.js';\nimport { deep_read_state, untrack } from '../../runtime.js';\n\n/**\n * @template P\n * @param {Element} dom\n * @param {(dom: Element, value?: P) => ActionPayload<P>} action\n * @param {() => P} [get_value]\n * @returns {void}\n */\nexport function action(dom, action, get_value) {\n\teffect(() => {\n\t\tvar payload = untrack(() => action(dom, get_value?.()) || {});\n\n\t\tif (get_value && payload?.update) {\n\t\t\tvar inited = false;\n\t\t\t/** @type {P} */\n\t\t\tvar prev = /** @type {any} */ ({}); // initialize with something so it's never equal on first run\n\n\t\t\trender_effect(() => {\n\t\t\t\tvar value = get_value();\n\n\t\t\t\t// Action's update method is coarse-grained, i.e. when anything in the passed value changes, update.\n\t\t\t\t// This works in legacy mode because of mutable_source being updated as a whole, but when using $state\n\t\t\t\t// together with actions and mutation, it wouldn't notice the change without a deep read.\n\t\t\t\tdeep_read_state(value);\n\n\t\t\t\tif (inited && safe_not_equal(prev, value)) {\n\t\t\t\t\tprev = value;\n\t\t\t\t\t/** @type {Function} */ (payload.update)(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinited = true;\n\t\t}\n\n\t\tif (payload?.destroy) {\n\t\t\treturn () => /** @type {Function} */ (payload.destroy)();\n\t\t}\n\t});\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { escape_html } from '../../escaping.js';\nimport { clsx as _clsx } from 'clsx';\n\n/**\n * `<div translate={false}>` should be rendered as `<div translate=\"no\">` and _not_\n * `<div translate=\"false\">`, which is equivalent to `<div translate=\"yes\">`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record<string, Map<any, string>>}\n */\nconst replacements = {\n\ttranslate: new Map([\n\t\t[true, 'yes'],\n\t\t[false, 'no']\n\t])\n};\n\n/**\n * @template V\n * @param {string} name\n * @param {V} value\n * @param {boolean} [is_boolean]\n * @returns {string}\n */\nexport function attr(name, value, is_boolean = false) {\n\tif (value == null || (!value && is_boolean)) return '';\n\tconst normalized = (name in replacements && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? '' : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n\nconst whitespace = [...' \\t\\n\\r\\f\\u00a0\\u000b\\ufeff'];\n\n/**\n * @param {any} value\n * @param {string | null} [hash]\n * @param {Record<string, boolean>} [directives]\n * @returns {string | null}\n */\nexport function to_class(value, hash, directives) {\n\tvar classname = value == null ? '' : '' + value;\n\n\tif (hash) {\n\t\tclassname = classname ? classname + ' ' + hash : hash;\n\t}\n\n\tif (directives) {\n\t\tfor (var key in directives) {\n\t\t\tif (directives[key]) {\n\t\t\t\tclassname = classname ? classname + ' ' + key : key;\n\t\t\t} else if (classname.length) {\n\t\t\t\tvar len = key.length;\n\t\t\t\tvar a = 0;\n\n\t\t\t\twhile ((a = classname.indexOf(key, a)) >= 0) {\n\t\t\t\t\tvar b = a + len;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(a === 0 || whitespace.includes(classname[a - 1])) &&\n\t\t\t\t\t\t(b === classname.length || whitespace.includes(classname[b]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassname = (a === 0 ? '' : classname.substring(0, a)) + classname.substring(b + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn classname === '' ? null : classname;\n}\n\n/**\n *\n * @param {Record<string,any>} styles\n * @param {boolean} important\n */\nfunction append_styles(styles, important = false) {\n\tvar separator = important ? ' !important;' : ';';\n\tvar css = '';\n\n\tfor (var key in styles) {\n\t\tvar value = styles[key];\n\t\tif (value != null && value !== '') {\n\t\t\tcss += ' ' + key + ': ' + value + separator;\n\t\t}\n\t}\n\n\treturn css;\n}\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction to_css_name(name) {\n\tif (name[0] !== '-' || name[1] !== '-') {\n\t\treturn name.toLowerCase();\n\t}\n\treturn name;\n}\n\n/**\n * @param {any} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]\n * @returns {string | null}\n */\nexport function to_style(value, styles) {\n\tif (styles) {\n\t\tvar new_style = '';\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar normal_styles;\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar important_styles;\n\n\t\tif (Array.isArray(styles)) {\n\t\t\tnormal_styles = styles[0];\n\t\t\timportant_styles = styles[1];\n\t\t} else {\n\t\t\tnormal_styles = styles;\n\t\t}\n\n\t\tif (value) {\n\t\t\tvalue = String(value)\n\t\t\t\t.replaceAll(/\\s*\\/\\*.*?\\*\\/\\s*/g, '')\n\t\t\t\t.trim();\n\n\t\t\t/** @type {boolean | '\"' | \"'\"} */\n\t\t\tvar in_str = false;\n\t\t\tvar in_apo = 0;\n\t\t\tvar in_comment = false;\n\n\t\t\tvar reserved_names = [];\n\n\t\t\tif (normal_styles) {\n\t\t\t\treserved_names.push(...Object.keys(normal_styles).map(to_css_name));\n\t\t\t}\n\t\t\tif (important_styles) {\n\t\t\t\treserved_names.push(...Object.keys(important_styles).map(to_css_name));\n\t\t\t}\n\n\t\t\tvar start_index = 0;\n\t\t\tvar name_index = -1;\n\n\t\t\tconst len = value.length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar c = value[i];\n\n\t\t\t\tif (in_comment) {\n\t\t\t\t\tif (c === '/' && value[i - 1] === '*') {\n\t\t\t\t\t\tin_comment = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (in_str) {\n\t\t\t\t\tif (in_str === c) {\n\t\t\t\t\t\tin_str = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '/' && value[i + 1] === '*') {\n\t\t\t\t\tin_comment = true;\n\t\t\t\t} else if (c === '\"' || c === \"'\") {\n\t\t\t\t\tin_str = c;\n\t\t\t\t} else if (c === '(') {\n\t\t\t\t\tin_apo++;\n\t\t\t\t} else if (c === ')') {\n\t\t\t\t\tin_apo--;\n\t\t\t\t}\n\n\t\t\t\tif (!in_comment && in_str === false && in_apo === 0) {\n\t\t\t\t\tif (c === ':' && name_index === -1) {\n\t\t\t\t\t\tname_index = i;\n\t\t\t\t\t} else if (c === ';' || i === len - 1) {\n\t\t\t\t\t\tif (name_index !== -1) {\n\t\t\t\t\t\t\tvar name = to_css_name(value.substring(start_index, name_index).trim());\n\n\t\t\t\t\t\t\tif (!reserved_names.includes(name)) {\n\t\t\t\t\t\t\t\tif (c !== ';') {\n\t\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar property = value.substring(start_index, i).trim();\n\t\t\t\t\t\t\t\tnew_style += ' ' + property + ';';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart_index = i + 1;\n\t\t\t\t\t\tname_index = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (normal_styles) {\n\t\t\tnew_style += append_styles(normal_styles);\n\t\t}\n\n\t\tif (important_styles) {\n\t\t\tnew_style += append_styles(important_styles, true);\n\t\t}\n\n\t\tnew_style = new_style.trim();\n\t\treturn new_style === '' ? null : new_style;\n\t}\n\n\treturn value == null ? null : String(value);\n}\n","import { to_class } from '../../../shared/attributes.js';\nimport { hydrating } from '../hydration.js';\n\n/**\n * @param {Element} dom\n * @param {boolean | number} is_html\n * @param {string | null} value\n * @param {string} [hash]\n * @param {Record<string, any>} [prev_classes]\n * @param {Record<string, any>} [next_classes]\n * @returns {Record<string, boolean> | undefined}\n */\nexport function set_class(dom, is_html, value, hash, prev_classes, next_classes) {\n\t// @ts-expect-error need to add __className to patched prototype\n\tvar prev = dom.__className;\n\n\tif (\n\t\thydrating ||\n\t\tprev !== value ||\n\t\tprev === undefined // for edge case of `class={undefined}`\n\t) {\n\t\tvar next_class_name = to_class(value, hash, next_classes);\n\n\t\tif (!hydrating || next_class_name !== dom.getAttribute('class')) {\n\t\t\t// Removing the attribute when the value is only an empty string causes\n\t\t\t// performance issues vs simply making the className an empty string. So\n\t\t\t// we should only remove the class if the value is nullish\n\t\t\t// and there no hash/directives :\n\t\t\tif (next_class_name == null) {\n\t\t\t\tdom.removeAttribute('class');\n\t\t\t} else if (is_html) {\n\t\t\t\tdom.className = next_class_name;\n\t\t\t} else {\n\t\t\t\tdom.setAttribute('class', next_class_name);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = value;\n\t} else if (next_classes && prev_classes !== next_classes) {\n\t\tfor (var key in next_classes) {\n\t\t\tvar is_present = !!next_classes[key];\n\n\t\t\tif (prev_classes == null || is_present !== !!prev_classes[key]) {\n\t\t\t\tdom.classList.toggle(key, is_present);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn next_classes;\n}\n","import { to_style } from '../../../shared/attributes.js';\nimport { hydrating } from '../hydration.js';\n\n/**\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {Record<string, any>} prev\n * @param {Record<string, any>} next\n * @param {string} [priority]\n */\nfunction update_styles(dom, prev = {}, next, priority) {\n\tfor (var key in next) {\n\t\tvar value = next[key];\n\n\t\tif (prev[key] !== value) {\n\t\t\tif (next[key] == null) {\n\t\t\t\tdom.style.removeProperty(key);\n\t\t\t} else {\n\t\t\t\tdom.style.setProperty(key, value, priority);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {string | null} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [prev_styles]\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [next_styles]\n */\nexport function set_style(dom, value, prev_styles, next_styles) {\n\t// @ts-expect-error\n\tvar prev = dom.__style;\n\n\tif (hydrating || prev !== value) {\n\t\tvar next_style_attr = to_style(value, next_styles);\n\n\t\tif (!hydrating || next_style_attr !== dom.getAttribute('style')) {\n\t\t\tif (next_style_attr == null) {\n\t\t\t\tdom.removeAttribute('style');\n\t\t\t} else {\n\t\t\t\tdom.style.cssText = next_style_attr;\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error\n\t\tdom.__style = value;\n\t} else if (next_styles) {\n\t\tif (Array.isArray(next_styles)) {\n\t\t\tupdate_styles(dom, prev_styles?.[0], next_styles[0]);\n\t\t\tupdate_styles(dom, prev_styles?.[1], next_styles[1], 'important');\n\t\t} else {\n\t\t\tupdate_styles(dom, prev_styles, next_styles);\n\t\t}\n\t}\n\n\treturn next_styles;\n}\n","/** @import { Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { hydrating, set_hydrating } from '../hydration.js';\nimport { get_descriptors, get_prototype_of } from '../../../shared/utils.js';\nimport { create_event, delegate } from './events.js';\nimport { add_form_reset_listener, autofocus } from './misc.js';\nimport * as w from '../../warnings.js';\nimport { LOADING_ATTR_SYMBOL } from '#client/constants';\nimport { queue_idle_task } from '../task.js';\nimport { is_capture_event, is_delegated, normalize_attribute } from '../../../../utils.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tget,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { attach } from './attachments.js';\nimport { clsx } from '../../../shared/attributes.js';\nimport { set_class } from './class.js';\nimport { set_style } from './style.js';\nimport { ATTACHMENT_KEY, NAMESPACE_HTML } from '../../../../constants.js';\nimport { block, branch, destroy_effect } from '../../reactivity/effects.js';\nimport { derived } from '../../reactivity/deriveds.js';\nimport { init_select, select_option } from './bindings/select.js';\n\nexport const CLASS = Symbol('class');\nexport const STYLE = Symbol('style');\n\nconst IS_CUSTOM_ELEMENT = Symbol('is custom element');\nconst IS_HTML = Symbol('is html');\n\n/**\n * The value/checked attribute in the template actually corresponds to the defaultValue property, so we need\n * to remove it upon hydration to avoid a bug when someone resets the form value.\n * @param {HTMLInputElement} input\n * @returns {void}\n */\nexport function remove_input_defaults(input) {\n\tif (!hydrating) return;\n\n\tvar already_removed = false;\n\n\t// We try and remove the default attributes later, rather than sync during hydration.\n\t// Doing it sync during hydration has a negative impact on performance, but deferring the\n\t// work in an idle task alleviates this greatly. If a form reset event comes in before\n\t// the idle callback, then we ensure the input defaults are cleared just before.\n\tvar remove_defaults = () => {\n\t\tif (already_removed) return;\n\t\talready_removed = true;\n\n\t\t// Remove the attributes but preserve the values\n\t\tif (input.hasAttribute('value')) {\n\t\t\tvar value = input.value;\n\t\t\tset_attribute(input, 'value', null);\n\t\t\tinput.value = value;\n\t\t}\n\n\t\tif (input.hasAttribute('checked')) {\n\t\t\tvar checked = input.checked;\n\t\t\tset_attribute(input, 'checked', null);\n\t\t\tinput.checked = checked;\n\t\t}\n\t};\n\n\t// @ts-expect-error\n\tinput.__on_r = remove_defaults;\n\tqueue_idle_task(remove_defaults);\n\tadd_form_reset_listener();\n}\n\n/**\n * @param {Element} element\n * @param {any} value\n */\nexport function set_value(element, value) {\n\tvar attributes = get_attributes(element);\n\n\tif (\n\t\tattributes.value ===\n\t\t\t(attributes.value =\n\t\t\t\t// treat null and undefined the same for the initial value\n\t\t\t\tvalue ?? undefined) ||\n\t\t// @ts-expect-error\n\t\t// `progress` elements always need their value set when it's `0`\n\t\t(element.value === value && (value !== 0 || element.nodeName !== 'PROGRESS'))\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.value = value ?? '';\n}\n\n/**\n * @param {Element} element\n * @param {boolean} checked\n */\nexport function set_checked(element, checked) {\n\tvar attributes = get_attributes(element);\n\n\tif (\n\t\tattributes.checked ===\n\t\t(attributes.checked =\n\t\t\t// treat null and undefined the same for the initial value\n\t\t\tchecked ?? undefined)\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.checked = checked;\n}\n\n/**\n * Sets the `selected` attribute on an `option` element.\n * Not set through the property because that doesn't reflect to the DOM,\n * which means it wouldn't be taken into account when a form is reset.\n * @param {HTMLOptionElement} element\n * @param {boolean} selected\n */\nexport function set_selected(element, selected) {\n\tif (selected) {\n\t\t// The selected option could've changed via user selection, and\n\t\t// setting the value without this check would set it back.\n\t\tif (!element.hasAttribute('selected')) {\n\t\t\telement.setAttribute('selected', '');\n\t\t}\n\t} else {\n\t\telement.removeAttribute('selected');\n\t}\n}\n\n/**\n * Applies the default checked property without influencing the current checked property.\n * @param {HTMLInputElement} element\n * @param {boolean} checked\n */\nexport function set_default_checked(element, checked) {\n\tconst existing_value = element.checked;\n\telement.defaultChecked = checked;\n\telement.checked = existing_value;\n}\n\n/**\n * Applies the default value property without influencing the current value property.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * @param {string} value\n */\nexport function set_default_value(element, value) {\n\tconst existing_value = element.value;\n\telement.defaultValue = value;\n\telement.value = existing_value;\n}\n\n/**\n * @param {Element} element\n * @param {string} attribute\n * @param {string | null} value\n * @param {boolean} [skip_warning]\n */\nexport function set_attribute(element, attribute, value, skip_warning) {\n\tvar attributes = get_attributes(element);\n\n\tif (hydrating) {\n\t\tattributes[attribute] = element.getAttribute(attribute);\n\n\t\tif (\n\t\t\tattribute === 'src' ||\n\t\t\tattribute === 'srcset' ||\n\t\t\t(attribute === 'href' && element.nodeName === 'LINK')\n\t\t) {\n\t\t\tif (!skip_warning) {\n\t\t\t\tcheck_src_in_dev_hydration(element, attribute, value ?? '');\n\t\t\t}\n\n\t\t\t// If we reset these attributes, they would result in another network request, which we want to avoid.\n\t\t\t// We assume they are the same between client and server as checking if they are equal is expensive\n\t\t\t// (we can't just compare the strings as they can be different between client and server but result in the\n\t\t\t// same url, so we would need to create hidden anchor elements to compare them)\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (attributes[attribute] === (attributes[attribute] = value)) return;\n\n\tif (attribute === 'loading') {\n\t\t// @ts-expect-error\n\t\telement[LOADING_ATTR_SYMBOL] = value;\n\t}\n\n\tif (value == null) {\n\t\telement.removeAttribute(attribute);\n\t} else if (typeof value !== 'string' && get_setters(element).includes(attribute)) {\n\t\t// @ts-ignore\n\t\telement[attribute] = value;\n\t} else {\n\t\telement.setAttribute(attribute, value);\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {string} value\n */\nexport function set_xlink_attribute(dom, attribute, value) {\n\tdom.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @param {string} prop\n * @param {any} value\n */\nexport function set_custom_element_data(node, prop, value) {\n\t// We need to ensure that setting custom element props, which can\n\t// invoke lifecycle methods on other custom elements, does not also\n\t// associate those lifecycle methods with the current active reaction\n\t// or effect\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet was_hydrating = hydrating;\n\tif (hydrating) {\n\t\tset_hydrating(false);\n\t}\n\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\n\ttry {\n\t\tif (\n\t\t\t// `style` should use `set_attribute` rather than the setter\n\t\t\tprop !== 'style' &&\n\t\t\t// Don't compute setters for custom elements while they aren't registered yet,\n\t\t\t// because during their upgrade/instantiation they might add more setters.\n\t\t\t// Instead, fall back to a simple \"an object, then set as property\" heuristic.\n\t\t\t(setters_cache.has(node.nodeName) ||\n\t\t\t// customElements may not be available in browser extension contexts\n\t\t\t!customElements ||\n\t\t\tcustomElements.get(node.tagName.toLowerCase())\n\t\t\t\t? get_setters(node).includes(prop)\n\t\t\t\t: value && typeof value === 'object')\n\t\t) {\n\t\t\t// @ts-expect-error\n\t\t\tnode[prop] = value;\n\t\t} else {\n\t\t\t// We did getters etc checks already, stringify before passing to set_attribute\n\t\t\t// to ensure it doesn't invoke the same logic again, and potentially populating\n\t\t\t// the setters cache too early.\n\t\t\tset_attribute(node, prop, value == null ? value : String(value));\n\t\t}\n\t} finally {\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t\tif (was_hydrating) {\n\t\t\tset_hydrating(true);\n\t\t}\n\t}\n}\n\n/**\n * Spreads attributes onto a DOM element, taking into account the currently set attributes\n * @param {Element & ElementCSSInlineStyle} element\n * @param {Record<string | symbol, any> | undefined} prev\n * @param {Record<string | symbol, any>} next New attributes - this function mutates this object\n * @param {string} [css_hash]\n * @param {boolean} [skip_warning]\n * @returns {Record<string, any>}\n */\nexport function set_attributes(element, prev, next, css_hash, skip_warning = false) {\n\tvar attributes = get_attributes(element);\n\n\tvar is_custom_element = attributes[IS_CUSTOM_ELEMENT];\n\tvar preserve_attribute_case = !attributes[IS_HTML];\n\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet is_hydrating_custom_element = hydrating && is_custom_element;\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(false);\n\t}\n\n\tvar current = prev || {};\n\tvar is_option_element = element.tagName === 'OPTION';\n\n\tfor (var key in prev) {\n\t\tif (!(key in next)) {\n\t\t\tnext[key] = null;\n\t\t}\n\t}\n\n\tif (next.class) {\n\t\tnext.class = clsx(next.class);\n\t} else if (css_hash || next[CLASS]) {\n\t\tnext.class = null; /* force call to set_class() */\n\t}\n\n\tif (next[STYLE]) {\n\t\tnext.style ??= null; /* force call to set_style() */\n\t}\n\n\tvar setters = get_setters(element);\n\n\t// since key is captured we use const\n\tfor (const key in next) {\n\t\t// let instead of var because referenced in a closure\n\t\tlet value = next[key];\n\n\t\t// Up here because we want to do this for the initial value, too, even if it's undefined,\n\t\t// and this wouldn't be reached in case of undefined because of the equality check below\n\t\tif (is_option_element && key === 'value' && value == null) {\n\t\t\t// The <option> element is a special case because removing the value attribute means\n\t\t\t// the value is set to the text content of the option element, and setting the value\n\t\t\t// to null or undefined means the value is set to the string \"null\" or \"undefined\".\n\t\t\t// To align with how we handle this case in non-spread-scenarios, this logic is needed.\n\t\t\t// There's a super-edge-case bug here that is left in in favor of smaller code size:\n\t\t\t// Because of the \"set missing props to null\" logic above, we can't differentiate\n\t\t\t// between a missing value and an explicitly set value of null or undefined. That means\n\t\t\t// that once set, the value attribute of an <option> element can't be removed. This is\n\t\t\t// a very rare edge case, and removing the attribute altogether isn't possible either\n\t\t\t// for the <option value={undefined}> case, so we're not losing any functionality here.\n\t\t\t// @ts-ignore\n\t\t\telement.value = element.__value = '';\n\t\t\tcurrent[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key === 'class') {\n\t\t\tvar is_html = element.namespaceURI === 'http://www.w3.org/1999/xhtml';\n\t\t\tset_class(element, is_html, value, css_hash, prev?.[CLASS], next[CLASS]);\n\t\t\tcurrent[key] = value;\n\t\t\tcurrent[CLASS] = next[CLASS];\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key === 'style') {\n\t\t\tset_style(element, value, prev?.[STYLE], next[STYLE]);\n\t\t\tcurrent[key] = value;\n\t\t\tcurrent[STYLE] = next[STYLE];\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar prev_value = current[key];\n\n\t\t// Skip if value is unchanged, unless it's `undefined` and the element still has the attribute\n\t\tif (value === prev_value && !(value === undefined && element.hasAttribute(key))) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tcurrent[key] = value;\n\n\t\tvar prefix = key[0] + key[1]; // this is faster than key.slice(0, 2)\n\t\tif (prefix === '$$') continue;\n\n\t\tif (prefix === 'on') {\n\t\t\t/** @type {{ capture?: true }} */\n\t\t\tconst opts = {};\n\t\t\tconst event_handle_key = '$$' + key;\n\t\t\tlet event_name = key.slice(2);\n\t\t\tvar delegated = is_delegated(event_name);\n\n\t\t\tif (is_capture_event(event_name)) {\n\t\t\t\tevent_name = event_name.slice(0, -7);\n\t\t\t\topts.capture = true;\n\t\t\t}\n\n\t\t\tif (!delegated && prev_value) {\n\t\t\t\t// Listening to same event but different handler -> our handle function below takes care of this\n\t\t\t\t// If we were to remove and add listeners in this case, it could happen that the event is \"swallowed\"\n\t\t\t\t// (the browser seems to not know yet that a new one exists now) and doesn't reach the handler\n\t\t\t\t// https://github.com/sveltejs/svelte/issues/11903\n\t\t\t\tif (value != null) continue;\n\n\t\t\t\telement.removeEventListener(event_name, current[event_handle_key], opts);\n\t\t\t\tcurrent[event_handle_key] = null;\n\t\t\t}\n\n\t\t\tif (value != null) {\n\t\t\t\tif (!delegated) {\n\t\t\t\t\t/**\n\t\t\t\t\t * @this {any}\n\t\t\t\t\t * @param {Event} evt\n\t\t\t\t\t */\n\t\t\t\t\tfunction handle(evt) {\n\t\t\t\t\t\tcurrent[key].call(this, evt);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrent[event_handle_key] = create_event(event_name, element, handle, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\telement[`__${event_name}`] = value;\n\t\t\t\t\tdelegate([event_name]);\n\t\t\t\t}\n\t\t\t} else if (delegated) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[`__${event_name}`] = undefined;\n\t\t\t}\n\t\t} else if (key === 'style') {\n\t\t\t// avoid using the setter\n\t\t\tset_attribute(element, key, value);\n\t\t} else if (key === 'autofocus') {\n\t\t\tautofocus(/** @type {HTMLElement} */ (element), Boolean(value));\n\t\t} else if (!is_custom_element && (key === '__value' || (key === 'value' && value != null))) {\n\t\t\t// @ts-ignore We're not running this for custom elements because __value is actually\n\t\t\t// how Lit stores the current value on the element, and messing with that would break things.\n\t\t\telement.value = element.__value = value;\n\t\t} else if (key === 'selected' && is_option_element) {\n\t\t\tset_selected(/** @type {HTMLOptionElement} */ (element), value);\n\t\t} else {\n\t\t\tvar name = key;\n\t\t\tif (!preserve_attribute_case) {\n\t\t\t\tname = normalize_attribute(name);\n\t\t\t}\n\n\t\t\tvar is_default = name === 'defaultValue' || name === 'defaultChecked';\n\n\t\t\tif (value == null && !is_custom_element && !is_default) {\n\t\t\t\tattributes[key] = null;\n\n\t\t\t\tif (name === 'value' || name === 'checked') {\n\t\t\t\t\t// removing value/checked also removes defaultValue/defaultChecked — preserve\n\t\t\t\t\tlet input = /** @type {HTMLInputElement} */ (element);\n\t\t\t\t\tconst use_default = prev === undefined;\n\t\t\t\t\tif (name === 'value') {\n\t\t\t\t\t\tlet previous = input.defaultValue;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultValue = previous;\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinput.value = input.__value = use_default ? previous : null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet previous = input.defaultChecked;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultChecked = previous;\n\t\t\t\t\t\tinput.checked = use_default ? previous : false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.removeAttribute(key);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tis_default ||\n\t\t\t\t(setters.includes(name) && (is_custom_element || typeof value !== 'string'))\n\t\t\t) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[name] = value;\n\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\tset_attribute(element, name, value, skip_warning);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(true);\n\t}\n\n\treturn current;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} element\n * @param {(...expressions: any) => Record<string | symbol, any>} fn\n * @param {Array<() => any>} thunks\n * @param {string} [css_hash]\n * @param {boolean} [skip_warning]\n */\nexport function attribute_effect(\n\telement,\n\tfn,\n\tthunks = [],\n\tcss_hash,\n\tskip_warning = false,\n\td = derived\n) {\n\tconst deriveds = thunks.map(d);\n\n\t/** @type {Record<string | symbol, any> | undefined} */\n\tvar prev = undefined;\n\n\t/** @type {Record<symbol, Effect>} */\n\tvar effects = {};\n\n\tvar is_select = element.nodeName === 'SELECT';\n\tvar inited = false;\n\n\tblock(() => {\n\t\tvar next = fn(...deriveds.map(get));\n\t\t/** @type {Record<string | symbol, any>} */\n\t\tvar current = set_attributes(element, prev, next, css_hash, skip_warning);\n\n\t\tif (inited && is_select && 'value' in next) {\n\t\t\tselect_option(/** @type {HTMLSelectElement} */ (element), next.value, false);\n\t\t}\n\n\t\tfor (let symbol of Object.getOwnPropertySymbols(effects)) {\n\t\t\tif (!next[symbol]) destroy_effect(effects[symbol]);\n\t\t}\n\n\t\tfor (let symbol of Object.getOwnPropertySymbols(next)) {\n\t\t\tvar n = next[symbol];\n\n\t\t\tif (symbol.description === ATTACHMENT_KEY && (!prev || n !== prev[symbol])) {\n\t\t\t\tif (effects[symbol]) destroy_effect(effects[symbol]);\n\t\t\t\teffects[symbol] = branch(() => attach(element, () => n));\n\t\t\t}\n\n\t\t\tcurrent[symbol] = n;\n\t\t}\n\n\t\tprev = current;\n\t});\n\n\tif (is_select) {\n\t\tinit_select(\n\t\t\t/** @type {HTMLSelectElement} */ (element),\n\t\t\t() => /** @type {Record<string | symbol, any>} */ (prev).value\n\t\t);\n\t}\n\n\tinited = true;\n}\n\n/**\n *\n * @param {Element} element\n */\nfunction get_attributes(element) {\n\treturn /** @type {Record<string | symbol, unknown>} **/ (\n\t\t// @ts-expect-error\n\t\telement.__attributes ??= {\n\t\t\t[IS_CUSTOM_ELEMENT]: element.nodeName.includes('-'),\n\t\t\t[IS_HTML]: element.namespaceURI === NAMESPACE_HTML\n\t\t}\n\t);\n}\n\n/** @type {Map<string, string[]>} */\nvar setters_cache = new Map();\n\n/** @param {Element} element */\nfunction get_setters(element) {\n\tvar setters = setters_cache.get(element.nodeName);\n\tif (setters) return setters;\n\tsetters_cache.set(element.nodeName, (setters = []));\n\n\tvar descriptors;\n\tvar proto = element; // In the case of custom elements there might be setters on the instance\n\tvar element_proto = Element.prototype;\n\n\t// Stop at Element, from there on there's only unnecessary setters we're not interested in\n\t// Do not use contructor.name here as that's unreliable in some browser environments\n\twhile (element_proto !== proto) {\n\t\tdescriptors = get_descriptors(proto);\n\n\t\tfor (var key in descriptors) {\n\t\t\tif (descriptors[key].set) {\n\t\t\t\tsetters.push(key);\n\t\t\t}\n\t\t}\n\n\t\tproto = get_prototype_of(proto);\n\t}\n\n\treturn setters;\n}\n\n/**\n * @param {any} element\n * @param {string} attribute\n * @param {string} value\n */\nfunction check_src_in_dev_hydration(element, attribute, value) {\n\tif (!DEV) return;\n\tif (attribute === 'srcset' && srcset_url_equal(element, value)) return;\n\tif (src_url_equal(element.getAttribute(attribute) ?? '', value)) return;\n\n\tw.hydration_attribute_changed(\n\t\tattribute,\n\t\telement.outerHTML.replace(element.innerHTML, element.innerHTML && '...'),\n\t\tString(value)\n\t);\n}\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nfunction src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\treturn new URL(element_src, document.baseURI).href === new URL(url, document.baseURI).href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element\n * @param {string} srcset\n * @returns {boolean}\n */\nfunction srcset_url_equal(element, srcset) {\n\tvar element_urls = split_srcset(element.srcset);\n\tvar urls = split_srcset(srcset);\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n","import { teardown } from '../../../reactivity/effects.js';\nimport { get_descriptor } from '../../../../shared/utils.js';\n\n/**\n * Makes an `export`ed (non-prop) variable available on the `$$props` object\n * so that consumers can do `bind:x` on the component.\n * @template V\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {V} value\n * @returns {void}\n */\nexport function bind_prop(props, prop, value) {\n\tvar desc = get_descriptor(props, prop);\n\n\tif (desc && desc.set) {\n\t\tprops[prop] = value;\n\t\tteardown(() => {\n\t\t\tprops[prop] = null;\n\t\t});\n\t}\n}\n","import { STATE_SYMBOL } from '#client/constants';\nimport { effect, render_effect } from '../../../reactivity/effects.js';\nimport { untrack } from '../../../runtime.js';\nimport { queue_micro_task } from '../../task.js';\n\n/**\n * @param {any} bound_value\n * @param {Element} element_or_component\n * @returns {boolean}\n */\nfunction is_bound_this(bound_value, element_or_component) {\n\treturn (\n\t\tbound_value === element_or_component || bound_value?.[STATE_SYMBOL] === element_or_component\n\t);\n}\n\n/**\n * @param {any} element_or_component\n * @param {(value: unknown, ...parts: unknown[]) => void} update\n * @param {(...parts: unknown[]) => unknown} get_value\n * @param {() => unknown[]} [get_parts] Set if the this binding is used inside an each block,\n * \t\t\t\t\t\t\t\t\t\treturns all the parts of the each block context that are used in the expression\n * @returns {void}\n */\nexport function bind_this(element_or_component = {}, update, get_value, get_parts) {\n\teffect(() => {\n\t\t/** @type {unknown[]} */\n\t\tvar old_parts;\n\n\t\t/** @type {unknown[]} */\n\t\tvar parts;\n\n\t\trender_effect(() => {\n\t\t\told_parts = parts;\n\t\t\t// We only track changes to the parts, not the value itself to avoid unnecessary reruns.\n\t\t\tparts = get_parts?.() || [];\n\n\t\t\tuntrack(() => {\n\t\t\t\tif (element_or_component !== get_value(...parts)) {\n\t\t\t\t\tupdate(element_or_component, ...parts);\n\t\t\t\t\t// If this is an effect rerun (cause: each block context changes), then nullfiy the binding at\n\t\t\t\t\t// the previous position if it isn't already taken over by a different effect.\n\t\t\t\t\tif (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) {\n\t\t\t\t\t\tupdate(null, ...old_parts);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\t// We cannot use effects in the teardown phase, we we use a microtask instead.\n\t\t\tqueue_micro_task(() => {\n\t\t\t\tif (parts && is_bound_this(get_value(...parts), element_or_component)) {\n\t\t\t\t\tupdate(null, ...parts);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t});\n\n\treturn element_or_component;\n}\n","/** @import { ComponentContextLegacy } from '#client' */\nimport { run, run_all } from '../../../shared/utils.js';\nimport { component_context } from '../../context.js';\nimport { derived } from '../../reactivity/deriveds.js';\nimport { user_pre_effect, user_effect } from '../../reactivity/effects.js';\nimport { deep_read_state, get, untrack } from '../../runtime.js';\n\n/**\n * Legacy-mode only: Call `onMount` callbacks and set up `beforeUpdate`/`afterUpdate` effects\n * @param {boolean} [immutable]\n */\nexport function init(immutable = false) {\n\tconst context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\tconst callbacks = context.l.u;\n\tif (!callbacks) return;\n\n\tlet props = () => deep_read_state(context.s);\n\n\tif (immutable) {\n\t\tlet version = 0;\n\t\tlet prev = /** @type {Record<string, any>} */ ({});\n\n\t\t// In legacy immutable mode, before/afterUpdate only fire if the object identity of a prop changes\n\t\tconst d = derived(() => {\n\t\t\tlet changed = false;\n\t\t\tconst props = context.s;\n\t\t\tfor (const key in props) {\n\t\t\t\tif (props[key] !== prev[key]) {\n\t\t\t\t\tprev[key] = props[key];\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (changed) version++;\n\t\t\treturn version;\n\t\t});\n\n\t\tprops = () => get(d);\n\t}\n\n\t// beforeUpdate\n\tif (callbacks.b.length) {\n\t\tuser_pre_effect(() => {\n\t\t\tobserve_all(context, props);\n\t\t\trun_all(callbacks.b);\n\t\t});\n\t}\n\n\t// onMount (must run before afterUpdate)\n\tuser_effect(() => {\n\t\tconst fns = untrack(() => callbacks.m.map(run));\n\t\treturn () => {\n\t\t\tfor (const fn of fns) {\n\t\t\t\tif (typeof fn === 'function') {\n\t\t\t\t\tfn();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n\n\t// afterUpdate\n\tif (callbacks.a.length) {\n\t\tuser_effect(() => {\n\t\t\tobserve_all(context, props);\n\t\t\trun_all(callbacks.a);\n\t\t});\n\t}\n}\n\n/**\n * Invoke the getter of all signals associated with a component\n * so they can be registered to the effect this function is called in.\n * @param {ComponentContextLegacy} context\n * @param {(() => void)} props\n */\nfunction observe_all(context, props) {\n\tif (context.l.s) {\n\t\tfor (const signal of context.l.s) get(signal);\n\t}\n\n\tprops();\n}\n","/** @import { Readable } from './public' */\nimport { untrack } from '../index-client.js';\nimport { noop } from '../internal/shared/utils.js';\n\n/**\n * @template T\n * @param {Readable<T> | null | undefined} store\n * @param {(value: T) => void} run\n * @param {(value: T) => void} [invalidate]\n * @returns {() => void}\n */\nexport function subscribe_to_store(store, run, invalidate) {\n\tif (store == null) {\n\t\t// @ts-expect-error\n\t\trun(undefined);\n\n\t\t// @ts-expect-error\n\t\tif (invalidate) invalidate(undefined);\n\n\t\treturn noop;\n\t}\n\n\t// Svelte store takes a private second argument\n\t// StartStopNotifier could mutate state, and we want to silence the corresponding validation error\n\tconst unsub = untrack(() =>\n\t\tstore.subscribe(\n\t\t\trun,\n\t\t\t// @ts-expect-error\n\t\t\tinvalidate\n\t\t)\n\t);\n\n\t// Also support RxJS\n\t// @ts-expect-error TODO fix this in the types?\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n","/** @import { Readable, StartStopNotifier, Subscriber, Unsubscriber, Updater, Writable } from '../public.js' */\n/** @import { Stores, StoresValues, SubscribeInvalidateTuple } from '../private.js' */\nimport { noop, run_all } from '../../internal/shared/utils.js';\nimport { safe_not_equal } from '../../internal/client/reactivity/equality.js';\nimport { subscribe_to_store } from '../utils.js';\n\n/**\n * @type {Array<SubscribeInvalidateTuple<any> | any>}\n */\nconst subscriber_queue = [];\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n *\n * @template T\n * @param {T} [value] initial value\n * @param {StartStopNotifier<T>} [start]\n * @returns {Readable<T>}\n */\nexport function readable(value, start) {\n\treturn {\n\t\tsubscribe: writable(value, start).subscribe\n\t};\n}\n\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n *\n * @template T\n * @param {T} [value] initial value\n * @param {StartStopNotifier<T>} [start]\n * @returns {Writable<T>}\n */\nexport function writable(value, start = noop) {\n\t/** @type {Unsubscriber | null} */\n\tlet stop = null;\n\n\t/** @type {Set<SubscribeInvalidateTuple<T>>} */\n\tconst subscribers = new Set();\n\n\t/**\n\t * @param {T} new_value\n\t * @returns {void}\n\t */\n\tfunction set(new_value) {\n\t\tif (safe_not_equal(value, new_value)) {\n\t\t\tvalue = new_value;\n\t\t\tif (stop) {\n\t\t\t\t// store is ready\n\t\t\t\tconst run_queue = !subscriber_queue.length;\n\t\t\t\tfor (const subscriber of subscribers) {\n\t\t\t\t\tsubscriber[1]();\n\t\t\t\t\tsubscriber_queue.push(subscriber, value);\n\t\t\t\t}\n\t\t\t\tif (run_queue) {\n\t\t\t\t\tfor (let i = 0; i < subscriber_queue.length; i += 2) {\n\t\t\t\t\t\tsubscriber_queue[i][0](subscriber_queue[i + 1]);\n\t\t\t\t\t}\n\t\t\t\t\tsubscriber_queue.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {Updater<T>} fn\n\t * @returns {void}\n\t */\n\tfunction update(fn) {\n\t\tset(fn(/** @type {T} */ (value)));\n\t}\n\n\t/**\n\t * @param {Subscriber<T>} run\n\t * @param {() => void} [invalidate]\n\t * @returns {Unsubscriber}\n\t */\n\tfunction subscribe(run, invalidate = noop) {\n\t\t/** @type {SubscribeInvalidateTuple<T>} */\n\t\tconst subscriber = [run, invalidate];\n\t\tsubscribers.add(subscriber);\n\t\tif (subscribers.size === 1) {\n\t\t\tstop = start(set, update) || noop;\n\t\t}\n\t\trun(/** @type {T} */ (value));\n\t\treturn () => {\n\t\t\tsubscribers.delete(subscriber);\n\t\t\tif (subscribers.size === 0 && stop) {\n\t\t\t\tstop();\n\t\t\t\tstop = null;\n\t\t\t}\n\t\t};\n\t}\n\treturn { set, update, subscribe };\n}\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * @template {Stores} S\n * @template T\n * @overload\n * @param {S} stores\n * @param {(values: StoresValues<S>, set: (value: T) => void, update: (fn: Updater<T>) => void) => Unsubscriber | void} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * @template {Stores} S\n * @template T\n * @overload\n * @param {S} stores\n * @param {(values: StoresValues<S>) => T} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\n/**\n * @template {Stores} S\n * @template T\n * @param {S} stores\n * @param {Function} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\nexport function derived(stores, fn, initial_value) {\n\tconst single = !Array.isArray(stores);\n\t/** @type {Array<Readable<any>>} */\n\tconst stores_array = single ? [stores] : stores;\n\tif (!stores_array.every(Boolean)) {\n\t\tthrow new Error('derived() expects stores as input, got a falsy value');\n\t}\n\tconst auto = fn.length < 2;\n\treturn readable(initial_value, (set, update) => {\n\t\tlet started = false;\n\t\t/** @type {T[]} */\n\t\tconst values = [];\n\t\tlet pending = 0;\n\t\tlet cleanup = noop;\n\t\tconst sync = () => {\n\t\t\tif (pending) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcleanup();\n\t\t\tconst result = fn(single ? values[0] : values, set, update);\n\t\t\tif (auto) {\n\t\t\t\tset(result);\n\t\t\t} else {\n\t\t\t\tcleanup = typeof result === 'function' ? result : noop;\n\t\t\t}\n\t\t};\n\t\tconst unsubscribers = stores_array.map((store, i) =>\n\t\t\tsubscribe_to_store(\n\t\t\t\tstore,\n\t\t\t\t(value) => {\n\t\t\t\t\tvalues[i] = value;\n\t\t\t\t\tpending &= ~(1 << i);\n\t\t\t\t\tif (started) {\n\t\t\t\t\t\tsync();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tpending |= 1 << i;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tstarted = true;\n\t\tsync();\n\t\treturn function stop() {\n\t\t\trun_all(unsubscribers);\n\t\t\tcleanup();\n\t\t\t// We need to set this to false because callbacks can still happen despite having unsubscribed:\n\t\t\t// Callbacks might already be placed in the queue which doesn't know it should no longer\n\t\t\t// invoke this derived store.\n\t\t\tstarted = false;\n\t\t};\n\t});\n}\n\n/**\n * Takes a store and returns a new one derived from the old one that is readable.\n *\n * @template T\n * @param {Readable<T>} store - store to make readonly\n * @returns {Readable<T>}\n */\nexport function readonly(store) {\n\treturn {\n\t\t// @ts-expect-error TODO i suspect the bind is unnecessary\n\t\tsubscribe: store.subscribe.bind(store)\n\t};\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * @template T\n * @param {Readable<T>} store\n * @returns {T}\n */\nexport function get(store) {\n\tlet value;\n\tsubscribe_to_store(store, (_) => (value = _))();\n\t// @ts-expect-error\n\treturn value;\n}\n","/** @import { StoreReferencesContainer } from '#client' */\n/** @import { Store } from '#shared' */\nimport { subscribe_to_store } from '../../../store/utils.js';\nimport { get as get_store } from '../../../store/shared/index.js';\nimport { define_property, noop } from '../../shared/utils.js';\nimport { get } from '../runtime.js';\nimport { teardown } from './effects.js';\nimport { mutable_source, set } from './sources.js';\n\n/**\n * Whether or not the prop currently being read is a store binding, as in\n * `<Child bind:x={$y} />`. If it is, we treat the prop as mutable even in\n * runes mode, and skip `binding_property_non_reactive` validation\n */\nlet is_store_binding = false;\n\nlet IS_UNMOUNTED = Symbol();\n\n/**\n * Gets the current value of a store. If the store isn't subscribed to yet, it will create a proxy\n * signal that will be updated when the store is. The store references container is needed to\n * track reassignments to stores and to track the correct component context.\n * @template V\n * @param {Store<V> | null | undefined} store\n * @param {string} store_name\n * @param {StoreReferencesContainer} stores\n * @returns {V}\n */\nexport function store_get(store, store_name, stores) {\n\tconst entry = (stores[store_name] ??= {\n\t\tstore: null,\n\t\tsource: mutable_source(undefined),\n\t\tunsubscribe: noop\n\t});\n\n\t// if the component that setup this is already unmounted we don't want to register a subscription\n\tif (entry.store !== store && !(IS_UNMOUNTED in stores)) {\n\t\tentry.unsubscribe();\n\t\tentry.store = store ?? null;\n\n\t\tif (store == null) {\n\t\t\tentry.source.v = undefined; // see synchronous callback comment below\n\t\t\tentry.unsubscribe = noop;\n\t\t} else {\n\t\t\tvar is_synchronous_callback = true;\n\n\t\t\tentry.unsubscribe = subscribe_to_store(store, (v) => {\n\t\t\t\tif (is_synchronous_callback) {\n\t\t\t\t\t// If the first updates to the store value (possibly multiple of them) are synchronously\n\t\t\t\t\t// inside a derived, we will hit the `state_unsafe_mutation` error if we `set` the value\n\t\t\t\t\tentry.source.v = v;\n\t\t\t\t} else {\n\t\t\t\t\tset(entry.source, v);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tis_synchronous_callback = false;\n\t\t}\n\t}\n\n\t// if the component that setup this stores is already unmounted the source will be out of sync\n\t// so we just use the `get` for the stores, less performant but it avoids to create a memory leak\n\t// and it will keep the value consistent\n\tif (store && IS_UNMOUNTED in stores) {\n\t\treturn get_store(store);\n\t}\n\n\treturn get(entry.source);\n}\n\n/**\n * Unsubscribe from a store if it's not the same as the one in the store references container.\n * We need this in addition to `store_get` because someone could unsubscribe from a store but\n * then never subscribe to the new one (if any), causing the subscription to stay open wrongfully.\n * @param {Store<any> | null | undefined} store\n * @param {string} store_name\n * @param {StoreReferencesContainer} stores\n */\nexport function store_unsub(store, store_name, stores) {\n\t/** @type {StoreReferencesContainer[''] | undefined} */\n\tlet entry = stores[store_name];\n\n\tif (entry && entry.store !== store) {\n\t\t// Don't reset store yet, so that store_get above can resubscribe to new store if necessary\n\t\tentry.unsubscribe();\n\t\tentry.unsubscribe = noop;\n\t}\n\n\treturn store;\n}\n\n/**\n * Sets the new value of a store and returns that value.\n * @template V\n * @param {Store<V>} store\n * @param {V} value\n * @returns {V}\n */\nexport function store_set(store, value) {\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * @param {StoreReferencesContainer} stores\n * @param {string} store_name\n */\nexport function invalidate_store(stores, store_name) {\n\tvar entry = stores[store_name];\n\tif (entry.store !== null) {\n\t\tstore_set(entry.store, entry.source.v);\n\t}\n}\n\n/**\n * Unsubscribes from all auto-subscribed stores on destroy\n * @returns {[StoreReferencesContainer, ()=>void]}\n */\nexport function setup_stores() {\n\t/** @type {StoreReferencesContainer} */\n\tconst stores = {};\n\n\tfunction cleanup() {\n\t\tteardown(() => {\n\t\t\tfor (var store_name in stores) {\n\t\t\t\tconst ref = stores[store_name];\n\t\t\t\tref.unsubscribe();\n\t\t\t}\n\t\t\tdefine_property(stores, IS_UNMOUNTED, {\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: true\n\t\t\t});\n\t\t});\n\t}\n\n\treturn [stores, cleanup];\n}\n\n/**\n * Updates a store with a new value.\n * @param {Store<V>} store the store to update\n * @param {any} expression the expression that mutates the store\n * @param {V} new_value the new store value\n * @template V\n */\nexport function store_mutate(store, expression, new_value) {\n\tstore.set(new_value);\n\treturn expression;\n}\n\n/**\n * @param {Store<number>} store\n * @param {number} store_value\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_store(store, store_value, d = 1) {\n\tstore.set(store_value + d);\n\treturn store_value;\n}\n\n/**\n * @param {Store<number>} store\n * @param {number} store_value\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_store(store, store_value, d = 1) {\n\tconst value = store_value + d;\n\tstore.set(value);\n\treturn value;\n}\n\n/**\n * Called inside prop getters to communicate that the prop is a store binding\n */\nexport function mark_store_binding() {\n\tis_store_binding = true;\n}\n\n/**\n * Returns a tuple that indicates whether `fn()` reads a prop that is a store binding.\n * Used to prevent `binding_property_non_reactive` validation false positives and\n * ensure that these props are treated as mutable even in runes mode\n * @template T\n * @param {() => T} fn\n * @returns {[T, boolean]}\n */\nexport function capture_store_binding(fn) {\n\tvar previous_is_store_binding = is_store_binding;\n\n\ttry {\n\t\tis_store_binding = false;\n\t\treturn [fn(), is_store_binding];\n\t} finally {\n\t\tis_store_binding = previous_is_store_binding;\n\t}\n}\n","/** @import { Derived, 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 { mutable_source, set, source, update } from './sources.js';\nimport { derived, derived_safe_equal } from './deriveds.js';\nimport { get, captured_signals, untrack } from '../runtime.js';\nimport { safe_equals } from './equality.js';\nimport * as e from '../errors.js';\nimport { LEGACY_DERIVED_PROP, 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> }>}}\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\t// Handle props that can temporarily get out of sync with the parent\n\t\t\t/** @type {Record<string, (v?: unknown) => unknown>} */\n\t\t\ttarget.special[key] = prop(\n\t\t\t\t{\n\t\t\t\t\tget [key]() {\n\t\t\t\t\t\treturn target.props[key];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t/** @type {string} */ (key),\n\t\t\t\tPROPS_IS_UPDATED\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({ props, exclude, special: {}, version: source(0) }, legacy_rest_props_handler);\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 * @template {Record<string | symbol, unknown>} T\n * @type {ProxyHandler<{ props: Array<T | (() => T)> }>}}\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 * @param {Derived} current_value\n * @returns {boolean}\n */\nfunction has_destroyed_component_ctx(current_value) {\n\treturn current_value.ctx?.d ?? false;\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 immutable = (flags & PROPS_IS_IMMUTABLE) !== 0;\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\tvar is_store_sub = false;\n\tvar prop_value;\n\n\tif (bindable) {\n\t\t[prop_value, is_store_sub] = capture_store_binding(() => /** @type {V} */ (props[key]));\n\t} else {\n\t\tprop_value = /** @type {V} */ (props[key]);\n\t}\n\n\t// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})`\n\t// or `createClassComponent(Component, props)`\n\tvar is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;\n\n\tvar setter =\n\t\t(bindable &&\n\t\t\t(get_descriptor(props, key)?.set ??\n\t\t\t\t(is_entry_props && key in props && ((v) => (props[key] = v))))) ||\n\t\tundefined;\n\n\tvar fallback_value = /** @type {V} */ (fallback);\n\tvar fallback_dirty = true;\n\tvar fallback_used = false;\n\n\tvar get_fallback = () => {\n\t\tfallback_used = true;\n\t\tif (fallback_dirty) {\n\t\t\tfallback_dirty = false;\n\t\t\tif (lazy) {\n\t\t\t\tfallback_value = untrack(/** @type {() => V} */ (fallback));\n\t\t\t} else {\n\t\t\t\tfallback_value = /** @type {V} */ (fallback);\n\t\t\t}\n\t\t}\n\n\t\treturn fallback_value;\n\t};\n\n\tif (prop_value === undefined && fallback !== undefined) {\n\t\tif (setter && runes) {\n\t\t\te.props_invalid_value(key);\n\t\t}\n\n\t\tprop_value = get_fallback();\n\t\tif (setter) setter(prop_value);\n\t}\n\n\t/** @type {() => V} */\n\tvar getter;\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\tfallback_used = false;\n\t\t\treturn value;\n\t\t};\n\t} else {\n\t\t// Svelte 4 did not trigger updates when a primitive value was updated to the same value.\n\t\t// Replicate that behavior through using a derived\n\t\tvar derived_getter = (immutable ? derived : derived_safe_equal)(\n\t\t\t() => /** @type {V} */ (props[key])\n\t\t);\n\t\tderived_getter.f |= LEGACY_DERIVED_PROP;\n\t\tgetter = () => {\n\t\t\tvar value = get(derived_getter);\n\t\t\tif (value !== undefined) fallback_value = /** @type {V} */ (undefined);\n\t\t\treturn value === undefined ? fallback_value : value;\n\t\t};\n\t}\n\n\t// easy mode — prop is never written to\n\tif ((flags & PROPS_IS_UPDATED) === 0 && runes) {\n\t\treturn getter;\n\t}\n\n\t// intermediate mode — prop is written to, but the parent component had\n\t// `bind:foo` which means we can just call `$$props.foo = value` directly\n\tif (setter) {\n\t\tvar legacy_parent = props.$$legacy;\n\t\treturn function (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t\tif (arguments.length > 0) {\n\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// In that case the state proxy (if it exists) should take care of the notification.\n\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// has changed because the parent will not be able to detect the change otherwise.\n\t\t\t\tif (!runes || !mutation || legacy_parent || is_store_sub) {\n\t\t\t\t\t/** @type {Function} */ (setter)(mutation ? getter() : value);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t} else {\n\t\t\t\treturn getter();\n\t\t\t}\n\t\t};\n\t}\n\n\t// hard mode. this is where it gets ugly — the value in the child should\n\t// synchronize with the parent, but it should also be possible to temporarily\n\t// set the value to something else locally.\n\tvar from_child = false;\n\tvar was_from_child = false;\n\n\t// The derived returns the current value. The underlying mutable\n\t// source is written to from various places to persist this value.\n\tvar inner_current_value = mutable_source(prop_value);\n\tvar current_value = derived(() => {\n\t\tvar parent_value = getter();\n\t\tvar child_value = get(inner_current_value);\n\n\t\tif (from_child) {\n\t\t\tfrom_child = false;\n\t\t\twas_from_child = true;\n\t\t\treturn child_value;\n\t\t}\n\n\t\twas_from_child = false;\n\t\treturn (inner_current_value.v = parent_value);\n\t});\n\n\t// Ensure we eagerly capture the initial value if it's bindable\n\tif (bindable) {\n\t\tget(current_value);\n\t}\n\n\tif (!immutable) current_value.equals = safe_equals;\n\n\treturn function (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t// legacy nonsense — need to ensure the source is invalidated when necessary\n\t\t// also needed for when handling inspect logic so we can inspect the correct source signal\n\t\tif (captured_signals !== null) {\n\t\t\t// set this so that we don't reset to the parent value if `d`\n\t\t\t// is invalidated because of `invalidate_inner_signals` (rather\n\t\t\t// than because the parent or child value changed)\n\t\t\tfrom_child = was_from_child;\n\t\t\t// invoke getters so that signals are picked up by `invalidate_inner_signals`\n\t\t\tgetter();\n\t\t\tget(inner_current_value);\n\t\t}\n\n\t\tif (arguments.length > 0) {\n\t\t\tconst new_value = mutation ? get(current_value) : runes && bindable ? proxy(value) : value;\n\n\t\t\tif (!current_value.equals(new_value)) {\n\t\t\t\tfrom_child = true;\n\t\t\t\tset(inner_current_value, new_value);\n\t\t\t\t// To ensure the fallback value is consistent when used with proxies, we\n\t\t\t\t// update the local fallback_value, but only if the fallback is actively used\n\t\t\t\tif (fallback_used && fallback_value !== undefined) {\n\t\t\t\t\tfallback_value = new_value;\n\t\t\t\t}\n\n\t\t\t\tif (has_destroyed_component_ctx(current_value)) {\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\tuntrack(() => get(current_value)); // force a synchronisation immediately\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\n\t\tif (has_destroyed_component_ctx(current_value)) {\n\t\t\treturn current_value.v;\n\t\t}\n\n\t\treturn get(current_value);\n\t};\n}\n","/** @import { ComponentContext, ComponentContextLegacy } from '#client' */\n/** @import { EventDispatcher } from './index.js' */\n/** @import { NotFunction } from './internal/types.js' */\nimport { 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 { lifecycle_outside_component } from './internal/shared/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 * `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\tlifecycle_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\tlifecycle_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\tlifecycle_outside_component('createEventDispatcher');\n\t}\n\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 {any} */ (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\tlifecycle_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\tlifecycle_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 } from './internal/client/runtime.js';\nexport { getContext, getAllContexts, hasContext, setContext } from './internal/client/context.js';\nexport { hydrate, mount, unmount } from './internal/client/render.js';\nexport { tick, untrack } from './internal/client/runtime.js';\nexport { createRawSnippet } from './internal/client/dom/blocks/snippet.js';\n","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n * @type {string}\n */\nexport const VERSION = '5.34.8';\nexport const PUBLIC_VERSION = '5';\n","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","/** @import { Source } from '#client' */\nimport { set } from '../internal/client/reactivity/sources.js';\n\n/** @param {Source<number>} source */\nexport function increment(source) {\n\tset(source, source.v + 1);\n}\n","\nexport function keyEnter(fn) {\n return function (e) {\n return e.key === 'Enter' || e.key === ' ' && !e.preventDefault() // prevent page scroll down\n ? fn.call(this, e)\n : undefined;\n };\n}\n","\nexport function setContent(node, content) {\n let actions = {\n update(content) {\n if (typeof content == 'string') {\n node.innerText = content;\n } else if (content?.domNodes) {\n node.replaceChildren(...content.domNodes);\n } else if (content?.html) {\n node.innerHTML = content.html;\n }\n }\n };\n actions.update(content);\n\n return actions;\n}\n\n/** Dispatch event occurred outside of node */\nexport function outsideEvent(node, type) {\n\n const handlePointerDown = jsEvent => {\n if (node && !node.contains(jsEvent.target)) {\n node.dispatchEvent(\n new CustomEvent(type + 'outside', {detail: {jsEvent}})\n );\n }\n };\n\n document.addEventListener(type, handlePointerDown, true);\n\n return {\n destroy() {\n document.removeEventListener(type, handlePointerDown, true);\n }\n };\n}\n\nexport function observeResize(node, callback) {\n let resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n callback(entry);\n }\n });\n resizeObserver.observe(node);\n\n return {\n destroy() {\n resizeObserver.unobserve(node);\n }\n };\n}\n","export const DAY_IN_SECONDS = 86400;\n\nexport function createDate(input = undefined) {\n if (input !== undefined) {\n return input instanceof Date ? _fromLocalDate(input) : _fromISOString(input);\n }\n\n return _fromLocalDate(new Date());\n}\n\nexport function createDuration(input) {\n if (typeof input === 'number') {\n input = {seconds: input};\n } else if (typeof input === 'string') {\n // Expected format hh[:mm[:ss]]\n let seconds = 0, exp = 2;\n for (let part of input.split(':', 3)) {\n seconds += parseInt(part, 10) * Math.pow(60, exp--);\n }\n input = {seconds};\n } else if (input instanceof Date) {\n input = {hours: input.getUTCHours(), minutes: input.getUTCMinutes(), seconds: input.getUTCSeconds()};\n }\n\n let weeks = input.weeks || input.week || 0;\n\n return {\n years: input.years || input.year || 0,\n months: input.months || input.month || 0,\n days: weeks * 7 + (input.days || input.day || 0),\n seconds: (input.hours || input.hour || 0) * 60 * 60 +\n (input.minutes || input.minute || 0) * 60 +\n (input.seconds || input.second || 0),\n inWeeks: !!weeks\n };\n}\n\nexport function cloneDate(date) {\n return new Date(date.getTime());\n}\n\nexport function addDuration(date, duration, x = 1) {\n date.setUTCFullYear(date.getUTCFullYear() + x * duration.years);\n let month = date.getUTCMonth() + x * duration.months;\n date.setUTCMonth(month);\n month %= 12;\n if (month < 0) {\n month += 12;\n }\n while (date.getUTCMonth() !== month) {\n subtractDay(date);\n }\n date.setUTCDate(date.getUTCDate() + x * duration.days);\n date.setUTCSeconds(date.getUTCSeconds() + x * duration.seconds);\n\n return date;\n}\n\nexport function subtractDuration(date, duration, x = 1) {\n return addDuration(date, duration, -x);\n}\n\nexport function addDay(date, x = 1) {\n date.setUTCDate(date.getUTCDate() + x);\n\n return date;\n}\n\nexport function subtractDay(date, x = 1) {\n return addDay(date, -x);\n}\n\nexport function setMidnight(date) {\n date.setUTCHours(0, 0, 0, 0);\n\n return date;\n}\n\nexport function toLocalDate(date) {\n return new Date(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n );\n}\n\nexport function toISOString(date, len = 19) {\n return date.toISOString().substring(0, len);\n}\n\nexport function datesEqual(date1, ...dates2) {\n return dates2.every(date2 => date1.getTime() === date2.getTime());\n}\n\nexport function nextClosestDay(date, day) {\n let diff = day - date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + (diff >= 0 ? diff : diff + 7));\n return date;\n}\n\nexport function prevClosestDay(date, day) {\n let diff = day - date.getUTCDay();\n date.setUTCDate(date.getUTCDate() + (diff <= 0 ? diff : diff - 7));\n return date;\n}\n\n/**\n * Check whether given date is string which contains no time part\n */\nexport function noTimePart(date) {\n return typeof date === 'string' && date.length <= 10;\n}\n\n/**\n * Copy time from one date to another\n */\nexport function copyTime(toDate, fromDate) {\n toDate.setUTCHours(fromDate.getUTCHours(), fromDate.getUTCMinutes(), fromDate.getUTCSeconds(), 0);\n\n return toDate;\n}\n\n/**\n * Get duration value in seconds\n */\nexport function toSeconds(duration) {\n return duration.seconds;\n}\n\n/**\n * Move the date forward (when pressing the next button)\n */\nexport function nextDate(date, duration) {\n addDuration(date, duration);\n return date;\n}\n\n/**\n * Move the date backward (when pressing the prev button)\n */\nexport function prevDate(date, duration, hiddenDays) {\n subtractDuration(date, duration);\n if (hiddenDays.length && hiddenDays.length < 7) {\n while (hiddenDays.includes(date.getUTCDay())) {\n subtractDay(date);\n }\n }\n return date;\n}\n\n/**\n * For a given date, get its week number\n * - ISO @see https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php\n * - Western @see https://en.wikipedia.org/wiki/Week#Other_week_numbering_systems\n */\nexport function getWeekNumber(date, firstDay) {\n // Copy date so don't modify original\n date = cloneDate(date);\n if (firstDay == 0) { // Western\n // Set to nearest Saturday: current date + 6 - current day number\n date.setUTCDate(date.getUTCDate() + 6 - date.getUTCDay());\n } else { // ISO\n // Set to nearest Thursday: current date + 4 - current day number\n // Make Sunday's day number 7\n date.setUTCDate(date.getUTCDate() + 4 - (date.getUTCDay() || 7));\n }\n // Get first day of year\n let yearStart = new Date(Date.UTC(date.getUTCFullYear(),0,1));\n // Calculate full weeks to `date`\n return Math.ceil((((date - yearStart) / 1000 / DAY_IN_SECONDS) + 1) / 7);\n}\n\n/**\n * Private functions\n */\n\nfunction _fromLocalDate(date) {\n return new Date(Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n ));\n}\n\nfunction _fromISOString(str) {\n const parts = str.match(/\\d+/g);\n return new Date(Date.UTC(\n Number(parts[0]),\n Number(parts[1]) - 1,\n Number(parts[2]),\n Number(parts[3] || 0),\n Number(parts[4] || 0),\n Number(parts[5] || 0)\n ));\n}\n","export function assign(...args) {\n return Object.assign(...args);\n}\n\nexport function keys(object) {\n return Object.keys(object);\n}\n\nexport function entries(object) {\n return Object.entries(object);\n}\n\nexport function floor(value) {\n return Math.floor(value);\n}\n\nexport function ceil(value) {\n return Math.ceil(value);\n}\n\nexport function min(...args) {\n return Math.min(...args);\n}\n\nexport function max(...args) {\n return Math.max(...args);\n}\n\nexport function symbol() {\n return Symbol('ec');\n}\n\nexport function isArray(value) {\n return Array.isArray(value);\n}\n\nexport function isFunction(value) {\n return typeof value === 'function';\n}\n\nexport function run(fn) {\n return fn();\n}\n\nexport function runAll(fns) {\n fns.forEach(run);\n}\n\nexport function noop() {}\n\nexport const identity = (x) => x;\n\nexport function stopPropagation(fn) {\n return function (event) {\n event.stopPropagation();\n if (fn) {\n fn.call(this, event);\n }\n };\n}\n","import {runAll} from './utils.js';\n\nexport function debounce(fn, handle, queueStore) {\n queueStore.update(queue => queue.set(handle, fn));\n}\n\nexport function flushDebounce(queue) {\n runAll(queue);\n queue.clear();\n}\n\nexport function task(fn, handle, tasks) {\n handle ??= fn;\n if (!tasks.has(handle)) {\n tasks.set(handle, setTimeout(() => {\n tasks.delete(handle);\n fn();\n }));\n }\n}\n","import {symbol} from './utils.js';\n\nlet payloadProp = symbol();\nexport function setPayload(obj, payload) {\n obj[payloadProp] = payload;\n}\n\nexport function hasPayload(obj) {\n return !!obj?.[payloadProp];\n}\n\nexport function getPayload(obj) {\n return obj[payloadProp];\n}\n","import {hasPayload} from './payload.js';\n\nexport function createElement(tag, className, content, attrs = []) {\n let el = document.createElement(tag);\n el.className = className;\n if (typeof content == 'string') {\n el.innerText = content;\n } else if (content.domNodes) {\n el.replaceChildren(...content.domNodes);\n } else if (content.html) {\n el.innerHTML = content.html;\n }\n for (let attr of attrs) {\n el.setAttribute(...attr);\n }\n return el;\n}\n\nexport function hasYScroll(el) {\n return el.scrollHeight > el.clientHeight;\n}\n\nexport function rect(el) {\n return el.getBoundingClientRect();\n}\n\nexport function ancestor(el, up) {\n while (up--) {\n el = el.parentElement;\n }\n return el;\n}\n\nexport function height(el) {\n return rect(el).height;\n}\n\nexport function getElementWithPayload(x, y, root = document, processed = []) {\n processed.push(root);\n for (let el of root.elementsFromPoint(x, y)) {\n if (hasPayload(el)) {\n return el;\n }\n /** @see https://github.com/vkurko/calendar/issues/142 */\n if (el.shadowRoot && !processed.includes(el.shadowRoot)) {\n let shadowEl = getElementWithPayload(x, y, el.shadowRoot, processed);\n if (shadowEl) {\n return shadowEl;\n }\n }\n }\n return null;\n}\n\nexport function listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\n","import {assign} from './utils.js';\nimport {toLocalDate} from './date.js';\n\nexport function createView(view, _viewTitle, _currentRange, _activeRange) {\n return {\n type: view,\n title: _viewTitle,\n currentStart: _currentRange.start,\n currentEnd: _currentRange.end,\n activeStart: _activeRange.start,\n activeEnd: _activeRange.end,\n calendar: undefined\n };\n}\n\nexport function toViewWithLocalDates(view) {\n view = assign({}, view);\n view.currentStart = toLocalDate(view.currentStart);\n view.currentEnd = toLocalDate(view.currentEnd);\n view.activeStart = toLocalDate(view.activeStart);\n view.activeEnd = toLocalDate(view.activeEnd);\n\n return view;\n}\n\nexport function listView(view) {\n return view.startsWith('list');\n}\n\nexport function timelineView(view) {\n return view.includes('Timeline');\n}\n","import {addDay, addDuration, datesEqual, createDate, cloneDate, setMidnight, toLocalDate, toISOString, noTimePart, copyTime} from './date.js';\nimport {createElement} from './dom.js';\nimport {assign, isArray, isFunction} from './utils.js';\nimport {toViewWithLocalDates} from './view.js';\n\nlet eventId = 1;\nexport function createEvents(input) {\n return input.map(event => {\n let result = {\n id: 'id' in event ? String(event.id) : `{generated-${eventId++}}`,\n resourceIds: toArrayProp(event, 'resourceId').map(String),\n allDay: event.allDay ?? (noTimePart(event.start) && noTimePart(event.end)),\n start: createDate(event.start),\n end: createDate(event.end),\n title: event.title ?? '',\n editable: event.editable,\n startEditable: event.startEditable,\n durationEditable: event.durationEditable,\n display: event.display ?? 'auto',\n extendedProps: event.extendedProps ?? {},\n backgroundColor: event.backgroundColor ?? event.color,\n textColor: event.textColor,\n classNames: toArrayProp(event, 'className'),\n styles: toArrayProp(event, 'style')\n };\n\n if (result.allDay) {\n // Make sure all-day events start and end at midnight\n setMidnight(result.start);\n let end = cloneDate(result.end);\n setMidnight(result.end);\n if (\n !datesEqual(result.end, end) ||\n datesEqual(result.end, result.start) /** @see https://github.com/vkurko/calendar/issues/50 */\n ) {\n addDay(result.end);\n }\n }\n\n return result;\n });\n}\n\nfunction toArrayProp(input, propName) {\n let result = input[propName + 's'] ?? input[propName] ?? [];\n return isArray(result) ? result : [result];\n}\n\nexport function createEventSources(input) {\n return input.map(source => ({\n events: source.events,\n url: (source.url && source.url.trimEnd('&')) || '',\n method: (source.method && source.method.toUpperCase()) || 'GET',\n extraParams: source.extraParams || {}\n }));\n}\n\nexport function createEventChunk(event, start, end) {\n let chunk = {\n start: event.start > start ? event.start : start,\n end: event.end < end ? event.end : end,\n event\n };\n chunk.zeroDuration = datesEqual(chunk.start, chunk.end);\n\n return chunk;\n}\n\nexport function sortEventChunks(chunks) {\n // Sort by start date (all-day events always on top)\n chunks.sort((a, b) => a.start - b.start || b.event.allDay - a.event.allDay);\n}\n\nexport function createEventContent(chunk, displayEventEnd, eventContent, theme, _intlEventTime, _view) {\n let timeText = _intlEventTime.formatRange(\n chunk.start,\n displayEventEnd && chunk.event.display !== 'pointer' && !chunk.zeroDuration\n ? copyTime(cloneDate(chunk.start), chunk.end) // make Intl.formatRange output only the time part\n : chunk.start\n );\n let content;\n\n if (eventContent) {\n content = isFunction(eventContent)\n ? eventContent({\n event: toEventWithLocalDates(chunk.event),\n timeText,\n view: toViewWithLocalDates(_view)\n })\n : eventContent;\n }\n\n if (content === undefined) {\n let domNodes;\n switch (chunk.event.display) {\n case 'background':\n domNodes = [];\n break;\n case 'pointer':\n domNodes = [createTimeElement(timeText, chunk, theme)];\n break;\n default:\n domNodes = [\n ...chunk.event.allDay ? [] : [createTimeElement(timeText, chunk, theme)],\n createElement('h4', theme.eventTitle, chunk.event.title)\n ];\n }\n content = {domNodes};\n }\n\n return [timeText, content];\n}\n\nfunction createTimeElement(timeText, chunk, theme) {\n return createElement(\n 'time',\n theme.eventTime,\n timeText,\n [['datetime', toISOString(chunk.start)]]\n );\n}\n\nexport function createEventClasses(eventClassNames, event, _view) {\n let result = event.classNames;\n if (eventClassNames) {\n if (isFunction(eventClassNames)) {\n eventClassNames = eventClassNames({\n event: toEventWithLocalDates(event),\n view: toViewWithLocalDates(_view)\n });\n }\n result = [\n ...isArray(eventClassNames) ? eventClassNames : [eventClassNames],\n ...result\n ];\n }\n return result;\n}\n\nexport function toEventWithLocalDates(event) {\n return _cloneEvent(event, toLocalDate);\n}\n\nexport function cloneEvent(event) {\n return _cloneEvent(event, cloneDate);\n}\n\nfunction _cloneEvent(event, dateFn) {\n event = assign({}, event);\n event.start = dateFn(event.start);\n event.end = dateFn(event.end);\n\n return event;\n}\n\n/**\n * Prepare event chunks for month view and all-day slot in week view\n */\nexport function prepareEventChunks(chunks, hiddenDays) {\n let longChunks = {};\n\n if (chunks.length) {\n sortEventChunks(chunks);\n\n let prevChunk;\n for (let chunk of chunks) {\n let dates = [];\n let date = setMidnight(cloneDate(chunk.start));\n while (chunk.end > date) {\n if (!hiddenDays.includes(date.getUTCDay())) {\n dates.push(cloneDate(date));\n if (dates.length > 1) {\n let key = date.getTime();\n if (longChunks[key]) {\n longChunks[key].chunks.push(chunk);\n } else {\n longChunks[key] = {\n sorted: false,\n chunks: [chunk]\n };\n }\n }\n }\n addDay(date);\n }\n if (dates.length) {\n chunk.date = dates[0];\n chunk.days = dates.length;\n chunk.dates = dates;\n // Adjust the start and end dates of the chunk if hidden days affected them\n if (chunk.start < dates[0]) {\n chunk.start = dates[0];\n }\n let maxEnd = addDay(cloneDate(dates.at(-1)));\n if (chunk.end > maxEnd) {\n chunk.end = maxEnd;\n }\n } else {\n chunk.date = setMidnight(cloneDate(chunk.start));\n chunk.days = 1;\n chunk.dates = [chunk.date];\n }\n\n if (prevChunk && datesEqual(prevChunk.date, chunk.date)) {\n chunk.prev = prevChunk;\n }\n prevChunk = chunk;\n }\n }\n\n return longChunks;\n}\n\nexport function repositionEvent(chunk, longChunks, height) {\n chunk.top = 0;\n if (chunk.prev) {\n chunk.top = chunk.prev.bottom + 1;\n }\n chunk.bottom = chunk.top + height;\n let margin = 1;\n let key = chunk.date.getTime();\n if (longChunks[key]) {\n if (!longChunks[key].sorted) {\n longChunks[key].chunks.sort((a, b) => a.top - b.top);\n longChunks[key].sorted = true;\n }\n for (let longChunk of longChunks[key].chunks) {\n if (chunk.top < longChunk.bottom && chunk.bottom > longChunk.top) {\n let offset = longChunk.bottom - chunk.top + 1;\n margin += offset;\n chunk.top += offset;\n chunk.bottom += offset;\n }\n }\n }\n\n return margin;\n}\n\nexport function runReposition(refs, data) {\n refs.length = data.length;\n let result = [];\n for (let ref of refs) {\n result.push(ref?.reposition?.());\n }\n return result;\n}\n\n/**\n * Check whether the event intersects with the given date range and resources\n * @param event\n * @param start\n * @param end\n * @param resources\n * @return boolean\n */\nexport function eventIntersects(event, start, end, resources) {\n if (event.start < end && event.end > start) {\n if (resources) {\n if (!isArray(resources)) {\n resources = [resources];\n }\n return resources.some(resource => event.resourceIds.includes(resource.id));\n }\n return true;\n }\n return false;\n}\n\nexport function helperEvent(display) {\n return previewEvent(display) || ghostEvent(display) || pointerEvent(display);\n}\n\nexport function bgEvent(display) {\n return display === 'background';\n}\n\nexport function previewEvent(display) {\n return display === 'preview';\n}\n\nexport function ghostEvent(display) {\n return display === 'ghost';\n}\n\nexport function pointerEvent(display) {\n return display === 'pointer';\n}\n","\nexport function btnTextDay(text) {\n return btnText(text, 'day');\n}\n\nexport function btnTextWeek(text) {\n return btnText(text, 'week');\n}\n\nexport function btnTextMonth(text) {\n return btnText(text, 'month');\n}\n\nexport function btnTextYear(text) {\n return btnText(text, 'year');\n}\n\nfunction btnText(text, period) {\n return {\n ...text,\n next: 'Next ' + period,\n prev: 'Previous ' + period\n };\n}\n\nexport function themeView(view) {\n return theme => ({...theme, view});\n}\n","import {createDate, setMidnight} from './date.js';\n\nexport function createDateRange(input) {\n let start, end;\n if (input) {\n ({start, end} = input);\n if (start) {\n start = setMidnight(createDate(start));\n }\n if (end) {\n end = setMidnight(createDate(end));\n }\n }\n return {start, end};\n}\n\nexport function outsideRange(date, range) {\n return range.start && date < range.start || range.end && date > range.end;\n}\n\nexport function limitToRange(date, range) {\n if (range.start && date < range.start) {\n date = range.start;\n }\n if (range.end && date > range.end) {\n date = range.end;\n }\n return date;\n}\n","import {setPayload} from './payload.js';\n\nexport function createResources(input) {\n let result = [];\n _createResources(input, 0, result);\n return result;\n}\n\nfunction _createResources(input, level, flat) {\n let result = [];\n for (let item of input) {\n let resource = createResource(item);\n result.push(resource);\n flat.push(resource);\n let payload = {\n level,\n children: [],\n expanded: true,\n hidden: false\n };\n setPayload(resource, payload);\n if (item.children) {\n payload.children = _createResources(item.children, level + 1, flat);\n }\n }\n return result;\n}\n\nexport function createResource(input) {\n return {\n id: String(input.id),\n title: input.title || '',\n eventBackgroundColor: input.eventBackgroundColor,\n eventTextColor: input.eventTextColor,\n extendedProps: input.extendedProps ?? {}\n };\n}\n\nexport function resourceBackgroundColor(event, resources) {\n return findResource(event, resources)?.eventBackgroundColor;\n}\n\nexport function resourceTextColor(event, resources) {\n return findResource(event, resources)?.eventTextColor;\n}\n\nfunction findResource(event, resources) {\n return resources.find(resource => event.resourceIds.includes(resource.id));\n}\n","import {derived} from 'svelte/store';\nimport {isFunction} from './utils.js';\nimport {toLocalDate} from './date.js';\nimport {createResources} from './resources.js';\nimport {getPayload} from './payload.js';\n\nexport function intl(locale, format) {\n return derived([locale, format], ([$locale, $format]) => {\n let intl = isFunction($format)\n ? {format: $format}\n : new Intl.DateTimeFormat($locale, $format);\n return {\n format: date => intl.format(toLocalDate(date))\n };\n });\n}\n\nexport function intlRange(locale, format) {\n return derived([locale, format], ([$locale, $format]) => {\n let formatRange;\n if (isFunction($format)) {\n formatRange = $format;\n } else {\n let intl = new Intl.DateTimeFormat($locale, $format);\n formatRange = (start, end) => {\n if (start <= end) {\n return intl.formatRange(start, end);\n } else {\n // In iOS 16 and older, intl.formatRange() throws an exception if the start date is later than the end date.\n // Therefore, we first swap the parameters, and then swap the resulting parts.\n /** @see https://github.com/vkurko/calendar/issues/227 */\n let parts = intl.formatRangeToParts(end, start);\n let result = '';\n let sources = ['startRange', 'endRange'];\n let processed = [false, false];\n for (let part of parts) {\n let i = sources.indexOf(part.source);\n if (i >= 0) {\n if (!processed[i]) {\n result += _getParts(sources[1 - i], parts);\n processed[i] = true;\n }\n } else {\n result += part.value;\n }\n }\n return result;\n }\n };\n }\n return {\n formatRange: (start, end) => formatRange(toLocalDate(start), toLocalDate(end))\n };\n });\n}\n\nfunction _getParts(source, parts) {\n let result = '';\n for (let part of parts) {\n if (part.source == source) {\n result += part.value;\n }\n }\n return result;\n}\n\nexport function viewResources(state) {\n return derived(\n [state.resources, state.filterResourcesWithEvents, state._filteredEvents, state._activeRange],\n ([$resources, $filterResourcesWithEvents, $_filteredEvents, $_activeRange]) => {\n let result = $resources.filter(resource => !getPayload(resource).hidden);\n\n if ($filterResourcesWithEvents) {\n result = $resources.filter(resource => {\n for (let event of $_filteredEvents) {\n if (\n event.display !== 'background' &&\n event.resourceIds.includes(resource.id) &&\n event.start < $_activeRange.end &&\n event.end > $_activeRange.start\n ) {\n return true;\n }\n }\n return false;\n });\n }\n\n if (!result.length) {\n result = createResources([{}]);\n }\n\n return result;\n }\n );\n}\n","import {addDuration, cloneDate, createDuration, DAY_IN_SECONDS, toISOString, toSeconds} from './date.js';\nimport {max as maxFn, min as minFn, isFunction} from './utils.js';\nimport {bgEvent} from './events.js';\n\nexport function createTimes(date, $slotDuration, $slotLabelInterval, $_slotTimeLimits, $_intlSlotLabel) {\n date = cloneDate(date);\n let times = [];\n let end = cloneDate(date);\n addDuration(date, $_slotTimeLimits.min);\n addDuration(end, $_slotTimeLimits.max);\n // Labels\n if ($slotLabelInterval === undefined) {\n $slotLabelInterval = $slotDuration.seconds < 3600\n ? createDuration($slotDuration.seconds * 2)\n : $slotDuration;\n }\n let label = cloneDate(date);\n // Build times\n while (date < end) {\n times.push([\n toISOString(date),\n $_intlSlotLabel.format(date),\n date >= label\n ]);\n while ($slotLabelInterval.seconds && date >= label) {\n addDuration(label, $slotLabelInterval);\n }\n addDuration(date, $slotDuration);\n }\n\n return times;\n}\n\nexport function createSlotTimeLimits($slotMinTime, $slotMaxTime, $flexibleSlotTimeLimits, $_viewDates, $_filteredEvents) {\n let min = createDuration($slotMinTime);\n let max = createDuration($slotMaxTime);\n\n if ($flexibleSlotTimeLimits) {\n // If slotMaxTime goes past midnight, then extend it back by a maximum of 24 hours\n let minMin = createDuration(minFn(toSeconds(min), maxFn(0, toSeconds(max) - DAY_IN_SECONDS)));\n let maxMax = createDuration(maxFn(toSeconds(max), toSeconds(minMin) + DAY_IN_SECONDS));\n let filter = isFunction($flexibleSlotTimeLimits?.eventFilter)\n ? $flexibleSlotTimeLimits.eventFilter\n : event => !bgEvent(event.display);\n loop: for (let date of $_viewDates) {\n let start = addDuration(cloneDate(date), min);\n let end = addDuration(cloneDate(date), max);\n let minStart = addDuration(cloneDate(date), minMin);\n let maxEnd = addDuration(cloneDate(date), maxMax);\n for (let event of $_filteredEvents) {\n if (!event.allDay && filter(event) && event.start < maxEnd && event.end > minStart) {\n if (event.start < start) {\n let seconds = maxFn((event.start - date) / 1000, toSeconds(minMin));\n if (seconds < toSeconds(min)) {\n min.seconds = seconds;\n }\n }\n if (event.end > end) {\n let seconds = minFn((event.end - date) / 1000, toSeconds(maxMax));\n if (seconds > toSeconds(max)) {\n max.seconds = seconds;\n }\n }\n if (toSeconds(min) === toSeconds(minMin) && toSeconds(max) === toSeconds(maxMax)) {\n break loop;\n }\n }\n }\n }\n }\n\n return {min, max};\n}\n","import {\n createDate, createDuration, createEvents, createEventSources, createResources, createDateRange, keys, setMidnight\n} from '#lib';\n\nexport function createOptions(plugins) {\n let options = {\n allDayContent: undefined,\n allDaySlot: true,\n buttonText: {\n today: 'today',\n },\n customButtons: {},\n date: new Date(),\n datesSet: undefined,\n dayHeaderFormat: {\n weekday: 'short',\n month: 'numeric',\n day: 'numeric'\n },\n dayHeaderAriaLabelFormat: {\n dateStyle: 'full'\n },\n displayEventEnd: true,\n duration: {weeks: 1},\n events: [],\n eventAllUpdated: undefined,\n eventBackgroundColor: undefined,\n eventClassNames: undefined,\n eventClick: undefined,\n eventColor: undefined,\n eventContent: undefined,\n eventDidMount: undefined,\n eventFilter: undefined, // ec option\n eventMouseEnter: undefined,\n eventMouseLeave: undefined,\n eventSources: [],\n eventTextColor: undefined,\n eventTimeFormat: {\n hour: 'numeric',\n minute: '2-digit'\n },\n filterEventsWithResources: false,\n filterResourcesWithEvents: false,\n firstDay: 0,\n flexibleSlotTimeLimits: false, // ec option\n headerToolbar: {\n start: 'title',\n center: '',\n end: 'today prev,next'\n },\n height: undefined,\n hiddenDays: [],\n highlightedDates: [], // ec option\n lazyFetching: true,\n loading: undefined,\n locale: undefined,\n nowIndicator: false,\n resourceLabelContent: undefined,\n resourceLabelDidMount: undefined,\n resources: [],\n selectable: false,\n scrollTime: '06:00:00',\n slotDuration: '00:30:00',\n slotEventOverlap: true,\n slotHeight: 24, // ec option\n slotLabelInterval: undefined,\n slotLabelFormat: {\n hour: 'numeric',\n minute: '2-digit'\n },\n slotMaxTime: '24:00:00',\n slotMinTime: '00:00:00',\n slotWidth: 72,\n theme: {\n allDay: 'ec-all-day',\n active: 'ec-active',\n bgEvent: 'ec-bg-event',\n bgEvents: 'ec-bg-events',\n body: 'ec-body',\n button: 'ec-button',\n buttonGroup: 'ec-button-group',\n calendar: 'ec',\n content: 'ec-content',\n day: 'ec-day',\n dayHead: 'ec-day-head',\n days: 'ec-days',\n disabled: 'ec-disabled',\n event: 'ec-event',\n eventBody: 'ec-event-body',\n eventTime: 'ec-event-time',\n eventTitle: 'ec-event-title',\n events: 'ec-events',\n extra: 'ec-extra',\n handle: 'ec-handle',\n header: 'ec-header',\n hiddenScroll: 'ec-hidden-scroll',\n highlight: 'ec-highlight',\n icon: 'ec-icon',\n line: 'ec-line',\n lines: 'ec-lines',\n minor: 'ec-minor',\n nowIndicator: 'ec-now-indicator',\n otherMonth: 'ec-other-month',\n resource: 'ec-resource',\n sidebar: 'ec-sidebar',\n sidebarTitle: 'ec-sidebar-title',\n today: 'ec-today',\n time: 'ec-time',\n title: 'ec-title',\n toolbar: 'ec-toolbar',\n view: '',\n weekdays: ['ec-sun', 'ec-mon', 'ec-tue', 'ec-wed', 'ec-thu', 'ec-fri', 'ec-sat'],\n withScroll: 'ec-with-scroll'\n },\n titleFormat: {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n },\n validRange: undefined,\n view: undefined,\n viewDidMount: undefined,\n views: {}\n };\n\n for (let plugin of plugins) {\n plugin.createOptions?.(options);\n }\n\n return options;\n}\n\nexport function createParsers(plugins) {\n let parsers = {\n date: date => setMidnight(createDate(date)),\n duration: createDuration,\n events: createEvents,\n eventSources: createEventSources,\n hiddenDays: days => [...new Set(days)],\n highlightedDates: dates => dates.map(date => setMidnight(createDate(date))),\n resources: createResources,\n scrollTime: createDuration,\n slotDuration: createDuration,\n slotLabelInterval: input => input !== undefined ? createDuration(input) : undefined,\n slotMaxTime: createDuration,\n slotMinTime: createDuration,\n validRange: createDateRange\n };\n\n for (let plugin of plugins) {\n plugin.createParsers?.(parsers);\n }\n\n return parsers;\n}\n\nexport function diff(options, prevOptions) {\n let diff = [];\n for (let key of keys(options)) {\n if (options[key] !== prevOptions[key]) {\n diff.push([key, options[key]]);\n }\n }\n return diff;\n}\n","import {derived, get, readable, writable} from 'svelte/store';\nimport {\n addDay, addDuration, assign, cloneDate, createDate, createEvents, createView, DAY_IN_SECONDS, debounce,\n isFunction, nextClosestDay, prevClosestDay, setMidnight, subtractDay, toISOString, toLocalDate\n} from '#lib';\n\nexport function dayGrid(state) {\n return derived(state.view, $view => $view?.startsWith('dayGrid'));\n}\n\nexport function activeRange(state) {\n return derived(\n [state._currentRange, state.firstDay, state.slotMaxTime, state._dayGrid],\n ([$_currentRange, $firstDay, $slotMaxTime, $_dayGrid]) => {\n let start = cloneDate($_currentRange.start);\n let end = cloneDate($_currentRange.end);\n\n if ($_dayGrid) {\n // First day of week\n prevClosestDay(start, $firstDay);\n nextClosestDay(end, $firstDay);\n } else if ($slotMaxTime.days || $slotMaxTime.seconds > DAY_IN_SECONDS) {\n addDuration(subtractDay(end), $slotMaxTime);\n let start2 = subtractDay(cloneDate(end));\n if (start2 < start) {\n start = start2;\n }\n }\n\n return {start, end};\n }\n );\n}\n\nexport function currentRange(state) {\n return derived(\n [state.date, state.duration, state.firstDay],\n ([$date, $duration, $firstDay]) => {\n let start = cloneDate($date), end;\n if ($duration.months) {\n start.setUTCDate(1);\n } else if ($duration.inWeeks) {\n // First day of week\n prevClosestDay(start, $firstDay);\n }\n end = addDuration(cloneDate(start), $duration);\n\n return {start, end};\n }\n );\n}\n\nexport function viewDates(state) {\n return derived([state._activeRange, state.hiddenDays], ([$_activeRange, $hiddenDays]) => {\n let dates = [];\n let date = setMidnight(cloneDate($_activeRange.start));\n let end = setMidnight(cloneDate($_activeRange.end));\n while (date < end) {\n if (!$hiddenDays.includes(date.getUTCDay())) {\n dates.push(cloneDate(date));\n }\n addDay(date);\n }\n if (!dates.length && $hiddenDays.length && $hiddenDays.length < 7) {\n // Try to move the date\n state.date.update(date => {\n while ($hiddenDays.includes(date.getUTCDay())) {\n addDay(date);\n }\n return date;\n });\n dates = get(state._viewDates);\n }\n\n return dates;\n });\n}\n\nexport function viewTitle(state) {\n return derived(\n [state.date, state._activeRange, state._intlTitle, state._dayGrid],\n ([$date, $_activeRange, $_intlTitle, $_dayGrid]) => {\n return $_dayGrid\n ? $_intlTitle.formatRange($date, $date)\n : $_intlTitle.formatRange($_activeRange.start, subtractDay(cloneDate($_activeRange.end)));\n }\n );\n}\n\nexport function view(state) {\n return derived([state.view, state._viewTitle, state._currentRange, state._activeRange], args => createView(...args));\n}\n\nexport function events(state) {\n let _events = writable([]);\n let abortController;\n let fetching = 0;\n let debounceHandle = {};\n derived(\n [state.events, state.eventSources, state._activeRange, state._fetchedRange, state.lazyFetching, state.loading],\n (values, set) => debounce(() => {\n let [$events, $eventSources, $_activeRange, $_fetchedRange, $lazyFetching, $loading] = values;\n if (!$eventSources.length) {\n set($events);\n return;\n }\n // Do not fetch if new range is within the previous one\n if (!$_fetchedRange.start || $_fetchedRange.start > $_activeRange.start || $_fetchedRange.end < $_activeRange.end || !$lazyFetching) {\n if (abortController) {\n // Abort previous request\n abortController.abort();\n }\n // Create new abort controller\n abortController = new AbortController();\n // Call loading hook\n if (isFunction($loading) && !fetching) {\n $loading(true);\n }\n let stopLoading = () => {\n if (--fetching === 0 && isFunction($loading)) {\n $loading(false);\n }\n };\n let events = [];\n // Prepare handlers\n let failure = e => stopLoading();\n let success = data => {\n events = events.concat(createEvents(data));\n set(events);\n stopLoading();\n };\n // Prepare other stuff\n let startStr = toISOString($_activeRange.start)\n let endStr = toISOString($_activeRange.end);\n // Loop over event sources\n for (let source of $eventSources) {\n if (isFunction(source.events)) {\n // Events as a function\n let result = source.events({\n start: toLocalDate($_activeRange.start),\n end: toLocalDate($_activeRange.end),\n startStr,\n endStr\n }, success, failure);\n if (result !== undefined) {\n Promise.resolve(result).then(success, failure);\n }\n } else {\n // Events as a JSON feed\n // Prepare params\n let params = isFunction(source.extraParams) ? source.extraParams() : assign({}, source.extraParams);\n params.start = startStr;\n params.end = endStr;\n params = new URLSearchParams(params);\n // Prepare fetch\n let url = source.url, headers = {}, body;\n if (['GET', 'HEAD'].includes(source.method)) {\n url += (url.includes('?') ? '&' : '?') + params;\n } else {\n headers['content-type'] = 'application/x-www-form-urlencoded;charset=UTF-8';\n body = String(params); // Safari 10.1 doesn't convert to string automatically\n }\n // Do the fetch\n fetch(url, {method: source.method, headers, body, signal: abortController.signal, credentials: 'same-origin'})\n .then(response => response.json())\n .then(success)\n .catch(failure);\n }\n ++fetching;\n }\n // Save current range for future requests\n $_fetchedRange.start = $_activeRange.start;\n $_fetchedRange.end = $_activeRange.end;\n }\n }, debounceHandle, state._queue),\n []\n ).subscribe(_events.set);\n\n return _events;\n}\n\nexport function filteredEvents(state){\n let view;\n state._view.subscribe($_view => view = $_view);\n let debounceHandle = {};\n return derived(\n [state._events, state.eventFilter],\n (values, set) => debounce(() => {\n let [$_events, $eventFilter] = values;\n set(\n isFunction($eventFilter)\n ? $_events.filter((event, index, events) => $eventFilter({\n event,\n index,\n events,\n view\n }))\n : $_events\n );\n }, debounceHandle, state._queue),\n []\n );\n}\n\nexport function now() {\n return readable(createDate(), set => {\n let interval = setInterval(() => {\n set(createDate());\n }, 1000);\n\n return () => clearInterval(interval);\n });\n}\n\nexport function today(state) {\n return derived(state._now, $_now => setMidnight(cloneDate($_now)));\n}\n","import {get, writable} from 'svelte/store';\nimport {tick} from 'svelte';\nimport {createOptions, createParsers} from './options.js';\nimport {activeRange, currentRange, dayGrid, events, now, today, view as view2, viewDates, viewTitle, filteredEvents} from './stores.js';\nimport {identity, intl, intlRange, isFunction, keys} from '#lib';\n\nexport default class {\n constructor(plugins, input) {\n plugins = plugins || [];\n\n // Create options\n let options = createOptions(plugins);\n let parsers = createParsers(plugins);\n\n // Parse options\n options = parseOpts(options, parsers);\n input = parseOpts(input, parsers);\n\n // Create stores for options\n for (let [option, value] of Object.entries(options)) {\n this[option] = writable(value);\n }\n\n // Private stores\n this._queue = writable(new Map()); // debounce queue (beforeUpdate)\n this._tasks = new Map(); // timeout IDs for tasks\n this._auxiliary = writable([]); // auxiliary components\n this._dayGrid = dayGrid(this);\n this._currentRange = currentRange(this);\n this._activeRange = activeRange(this);\n this._fetchedRange = writable({start: undefined, end: undefined});\n this._events = events(this);\n this._now = now();\n this._today = today(this);\n this._intlEventTime = intlRange(this.locale, this.eventTimeFormat);\n this._intlSlotLabel = intl(this.locale, this.slotLabelFormat);\n this._intlDayHeader = intl(this.locale, this.dayHeaderFormat);\n this._intlDayHeaderAL = intl(this.locale, this.dayHeaderAriaLabelFormat);\n this._intlTitle = intlRange(this.locale, this.titleFormat);\n this._bodyEl = writable(undefined);\n this._scrollable = writable(false);\n this._recheckScrollable = writable(false);\n this._viewTitle = viewTitle(this);\n this._viewDates = viewDates(this);\n this._view = view2(this);\n this._viewComponent = writable(undefined);\n this._filteredEvents = filteredEvents(this);\n // Interaction\n this._interaction = writable({});\n this._iEvents = writable([null, null]); // interaction events: [drag/resize, pointer]\n this._iClasses = writable(identity); // interaction event css classes\n this._iClass = writable(undefined); // interaction css class for entire calendar\n\n // Set & Get\n this._set = (key, value) => {\n if (validKey(key, this)) {\n if (parsers[key]) {\n value = parsers[key](value);\n }\n this[key].set(value);\n }\n };\n this._get = key => validKey(key, this) ? get(this[key]) : undefined;\n\n // Let plugins create their private stores\n for (let plugin of plugins) {\n plugin.createStores?.(this);\n }\n\n if (input.view) {\n // Set initial view based on input\n this.view.set(input.view);\n }\n\n // Set options for each view\n let views = new Set([...keys(options.views), ...keys(input.views ?? {})]);\n for (let view of views) {\n let defOpts = mergeOpts(options, options.views[view] ?? {});\n let opts = mergeOpts(defOpts, input, input.views?.[view] ?? {});\n let component = opts.component;\n // Make sure we deal with valid opts from now on\n filterOpts(opts, this);\n // Process options\n for (let key of keys(opts)) {\n let {set, _set = set, ...rest} = this[key];\n\n this[key] = {\n // Set value in all views\n set: ['buttonText', 'theme'].includes(key)\n ? value => {\n if (isFunction(value)) {\n let result = value(defOpts[key]);\n opts[key] = result;\n set(set === _set ? result : value);\n } else {\n opts[key] = value;\n set(value);\n }\n }\n : value => {\n opts[key] = value;\n set(value);\n },\n _set,\n ...rest\n };\n }\n // When view changes...\n this.view.subscribe(newView => {\n if (newView === view) {\n // switch view component\n this._viewComponent.set(component);\n if (isFunction(opts.viewDidMount)) {\n tick().then(() => opts.viewDidMount(get(this._view)));\n }\n // update store values\n for (let key of keys(opts)) {\n this[key]._set(opts[key]);\n }\n }\n });\n }\n }\n}\n\nfunction parseOpts(opts, parsers) {\n let result = {...opts};\n for (let key of keys(parsers)) {\n if (key in result) {\n result[key] = parsers[key](result[key]);\n }\n }\n if (opts.views) {\n result.views = {};\n for (let view of keys(opts.views)) {\n result.views[view] = parseOpts(opts.views[view], parsers);\n }\n }\n return result;\n}\n\nfunction mergeOpts(...args) {\n let result = {};\n for (let opts of args) {\n let override = {};\n for (let key of ['buttonText', 'theme']) {\n if (isFunction(opts[key])) {\n override[key] = opts[key](result[key]);\n }\n }\n result = {\n ...result,\n ...opts,\n ...override\n };\n }\n return result;\n}\n\nfunction filterOpts(opts, state) {\n keys(opts)\n .filter(key => !validKey(key, state) || key === 'view')\n .forEach(key => delete opts[key]);\n}\n\nfunction validKey(key, state) {\n return state.hasOwnProperty(key) && key[0] !== '_';\n}\n","import { enable_legacy_mode_flag } from './index.js';\n\nenable_legacy_mode_flag();\n","<script>\n import {getContext, tick} from 'svelte';\n import {createDate, cloneDate, setContent, setMidnight, nextDate, prevDate, outsideRange} from '#lib';\n\n export let buttons;\n\n let {\n _currentRange, _viewTitle, _viewDates, buttonText, customButtons, date, duration, hiddenDays, theme, validRange,\n view\n } = getContext('state');\n\n let today = setMidnight(createDate());\n let prevDisabled, nextDisabled, todayDisabled;\n\n let running = false;\n function isRunning() {\n return running;\n }\n $: if (!isRunning()) {\n running = true;\n prevDisabled = false;\n nextDisabled = false;\n if ($validRange.start) {\n let currentDate = cloneDate($date);\n $date = prevDate($date, $duration, $hiddenDays);\n prevDisabled = test();\n $date = currentDate;\n }\n if ($validRange.end) {\n let currentDate = cloneDate($date);\n $date = nextDate($date, $duration);\n nextDisabled = test();\n $date = currentDate;\n }\n todayDisabled = today >= $_currentRange.start && today < $_currentRange.end;\n if (!todayDisabled && ($validRange.start || $validRange.end)) {\n let currentDate = cloneDate($date);\n $date = cloneDate(today);\n todayDisabled = test();\n $date = currentDate;\n }\n tick().then(() => running = false);\n }\n\n function test() {\n return $_viewDates.every(date => outsideRange(date, $validRange));\n }\n\n function prev() {\n $date = prevDate($date, $duration, $hiddenDays);\n }\n\n function next() {\n $date = nextDate($date, $duration);\n }\n</script>\n\n{#each buttons as button}\n {#if button == 'title'}\n <!-- svelte-ignore a11y-missing-content -->\n <h2 class=\"{$theme.title}\" use:setContent={$_viewTitle}></h2>\n {:else if button == 'prev'}\n <button\n class=\"{$theme.button} ec-{button}\"\n aria-label={$buttonText.prev}\n title={$buttonText.prev}\n on:click={prev}\n disabled={prevDisabled}\n ><i class=\"{$theme.icon} ec-{button}\"></i></button>\n {:else if button == 'next'}\n <button\n class=\"{$theme.button} ec-{button}\"\n aria-label={$buttonText.next}\n title={$buttonText.next}\n on:click={next}\n disabled={nextDisabled}\n ><i class=\"{$theme.icon} ec-{button}\"></i></button>\n {:else if button == 'today'}\n <button\n class=\"{$theme.button} ec-{button}\"\n on:click={() => $date = cloneDate(today)}\n disabled={todayDisabled}\n >{$buttonText[button]}</button>\n {:else if $customButtons[button]}\n <!-- svelte-ignore a11y_consider_explicit_label -->\n <button\n class=\"{$theme.button} ec-{button}{$customButtons[button].active ? ' ' + $theme.active : ''}\"\n on:click={$customButtons[button].click}\n use:setContent={$customButtons[button].text}\n ></button>\n {:else if button != ''}\n <button\n class=\"{$theme.button}{$view === button ? ' ' + $theme.active : ''} ec-{button}\"\n on:click={() => $view = button}\n >{$buttonText[button]}</button>\n {/if}\n{/each}\n","<script>\n import {getContext} from 'svelte';\n import {keys} from '#lib';\n import Buttons from './Buttons.svelte';\n\n let {headerToolbar, theme} = getContext('state');\n\n let sections = $derived.by(() => {\n let sections = {};\n for (let key of ['start', 'center', 'end']) {\n sections[key] = $headerToolbar[key]?.split(' ').map(group => group.split(',')) ?? [];\n }\n return sections;\n });\n</script>\n\n<nav class=\"{$theme.toolbar}\">\n {#each keys(sections) as key}\n <div class=\"ec-{key}\">\n {#each sections[key] as buttons}\n {#if buttons.length > 1}\n <div class=\"{$theme.buttonGroup}\">\n <Buttons {buttons}/>\n </div>\n {:else}\n <Buttons {buttons}/>\n {/if}\n {/each}\n </div>\n {/each}\n</nav>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {\n toISOString, toLocalDate, toViewWithLocalDates, isFunction, task, flushDebounce, hasYScroll\n } from '#lib';\n\n let {\n datesSet, eventAllUpdated, _auxiliary, _activeRange, _filteredEvents, _scrollable, _bodyEl, _tasks, _recheckScrollable,\n _queue, _view\n } = getContext('state');\n\n // datesSet callback\n $effect(() => {\n $_activeRange;\n untrack(() => {\n if (isFunction($datesSet)) {\n $datesSet({\n start: toLocalDate($_activeRange.start),\n end: toLocalDate($_activeRange.end),\n startStr: toISOString($_activeRange.start),\n endStr: toISOString($_activeRange.end),\n view: toViewWithLocalDates($_view)\n });\n }\n });\n });\n\n // eventAllUpdated callback\n $effect(() => {\n $_filteredEvents;\n untrack(() => {\n if (isFunction($eventAllUpdated)) {\n task(() => $eventAllUpdated({view: toViewWithLocalDates($_view)}), 'eau', _tasks);\n }\n });\n });\n\n $effect(() => {\n $_queue;\n untrack(() => {\n flushDebounce($_queue);\n });\n });\n\n $effect(() => {\n $_recheckScrollable;\n untrack(() => {\n if ($_bodyEl) {\n $_scrollable = hasYScroll($_bodyEl);\n }\n $_recheckScrollable = false;\n });\n });\n</script>\n\n{#each $_auxiliary as Component}\n <Component/>\n{/each}\n","<script>\n import './styles/index.scss';\n import {setContext, untrack} from 'svelte';\n import {get} from 'svelte/store';\n import {diff} from './storage/options.js';\n import State from './storage/state.js';\n import Toolbar from './Toolbar.svelte';\n import Auxiliary from './Auxiliary.svelte';\n import {\n assign, createEvents, getElementWithPayload, getPayload, listView, nextDate,\n prevDate, toEventWithLocalDates, toLocalDate, toViewWithLocalDates\n } from '#lib';\n\n let {plugins = [], options = {}} = $props();\n\n let state = new State(plugins, options);\n setContext('state', state);\n\n let {\n _viewComponent, _interaction, _iClass, _events, _scrollable,\n date, duration, hiddenDays, height, theme, view\n } = state;\n\n // Reactively update options that did change\n let prevOptions = {...options};\n $effect(() => {\n for (let [name, value] of diff(options, prevOptions)) {\n untrack(() => {\n setOption(name, value);\n });\n }\n assign(prevOptions, options);\n });\n\n export function setOption(name, value) {\n state._set(name, value);\n return this;\n }\n\n export function getOption(name) {\n let value = state._get(name);\n return value instanceof Date ? toLocalDate(value) : value;\n }\n\n export function refetchEvents() {\n state._fetchedRange.set({start: undefined, end: undefined});\n return this;\n }\n\n export function getEvents() {\n return $_events.map(toEventWithLocalDates);\n }\n\n export function getEventById(id) {\n for (let event of $_events) {\n if (event.id == id) {\n return toEventWithLocalDates(event);\n }\n }\n return null;\n }\n\n export function addEvent(event) {\n event = createEvents([event])[0];\n $_events.push(event);\n $_events = $_events;\n return toEventWithLocalDates(event);\n }\n\n export function updateEvent(event) {\n let id = String(event.id);\n let idx = $_events.findIndex(event => event.id === id);\n if (idx >= 0) {\n event = createEvents([event])[0];\n $_events[idx] = event;\n return toEventWithLocalDates(event);\n }\n return null;\n }\n\n export function removeEventById(id) {\n id = String(id);\n let idx = $_events.findIndex(event => event.id === id);\n if (idx >= 0) {\n $_events.splice(idx, 1);\n $_events = $_events;\n }\n return this;\n }\n\n export function getView() {\n return toViewWithLocalDates(get(state._view));\n }\n\n export function unselect() {\n $_interaction.action?.unselect();\n return this;\n }\n\n export function dateFromPoint(x, y) {\n let dayEl = getElementWithPayload(x, y);\n if (dayEl) {\n let info = getPayload(dayEl)(x, y);\n info.date = toLocalDate(info.date);\n\n return info;\n }\n return null;\n }\n\n export function next() {\n $date = nextDate($date, $duration);\n return this;\n }\n\n export function prev() {\n $date = prevDate($date, $duration, $hiddenDays);\n return this;\n }\n\n let View = $derived($_viewComponent);\n</script>\n\n<div\n class=\"{$theme.calendar} {$theme.view}{$_scrollable ? ' ' + $theme.withScroll : ''}{$_iClass ? ' ' + $theme[$_iClass] : ''}\"\n style:height={$height}\n role=\"{listView($view) ? 'list' : 'table'}\"\n>\n <Toolbar/>\n <View/>\n</div>\n<Auxiliary/>\n","import {derived} from 'svelte/store';\nimport {cloneDate, addDay, subtractDay} from '#lib';\n\nexport function days(state) {\n return derived([state.date, state.firstDay, state.hiddenDays], ([$date, $firstDay, $hiddenDays]) => {\n let days = [];\n let day = cloneDate($date);\n let max = 7;\n // First day of week\n while (day.getUTCDay() !== $firstDay && max) {\n subtractDay(day);\n --max;\n }\n for (let i = 0; i < 7; ++i) {\n if (!$hiddenDays.includes(day.getUTCDay())) {\n days.push(cloneDate(day));\n }\n addDay(day);\n }\n\n return days;\n });\n}\n","<script>\n import {getContext} from 'svelte';\n import {setContent} from '#lib';\n\n let {theme, _intlDayHeader, _intlDayHeaderAL, _days} = getContext('state');\n</script>\n\n<div class=\"{$theme.header}\">\n <div class=\"{$theme.days}\" role=\"row\">\n {#each $_days as day}\n <div class=\"{$theme.day} {$theme.weekdays?.[day.getUTCDay()]}\" role=\"columnheader\">\n <span\n aria-label=\"{$_intlDayHeaderAL.format(day)}\"\n use:setContent={$_intlDayHeader.format(day)}\n ></span>\n </div>\n {/each}\n </div>\n <div class=\"{$theme.hiddenScroll}\"></div>\n</div>\n","/** @import { Source } from '#client' */\nimport { DEV } from 'esm-env';\nimport { source, set, state } from '../internal/client/reactivity/sources.js';\nimport { label, tag } from '../internal/client/dev/tracing.js';\nimport { get } from '../internal/client/runtime.js';\nimport { increment } from './utils.js';\n\nvar read_methods = ['forEach', 'isDisjointFrom', 'isSubsetOf', 'isSupersetOf'];\nvar set_like_methods = ['difference', 'intersection', 'symmetricDifference', 'union'];\n\nvar inited = false;\n\n/**\n * A reactive version of the built-in [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) object.\n * Reading contents of the set (by iterating, or by reading `set.size` or calling `set.has(...)` as in the [example](https://svelte.dev/playground/53438b51194b4882bcc18cddf9f96f15) below) in an [effect](https://svelte.dev/docs/svelte/$effect) or [derived](https://svelte.dev/docs/svelte/$derived)\n * will cause it to be re-evaluated as necessary when the set is updated.\n *\n * Note that values in a reactive set are _not_ made [deeply reactive](https://svelte.dev/docs/svelte/$state#Deep-state).\n *\n * ```svelte\n * <script>\n * \timport { SvelteSet } from 'svelte/reactivity';\n * \tlet monkeys = new SvelteSet();\n *\n * \tfunction toggle(monkey) {\n * \t\tif (monkeys.has(monkey)) {\n * \t\t\tmonkeys.delete(monkey);\n * \t\t} else {\n * \t\t\tmonkeys.add(monkey);\n * \t\t}\n * \t}\n * </script>\n *\n * {#each ['🙈', '🙉', '🙊'] as monkey}\n * \t<button onclick={() => toggle(monkey)}>{monkey}</button>\n * {/each}\n *\n * <button onclick={() => monkeys.clear()}>clear</button>\n *\n * {#if monkeys.has('🙈')}<p>see no evil</p>{/if}\n * {#if monkeys.has('🙉')}<p>hear no evil</p>{/if}\n * {#if monkeys.has('🙊')}<p>speak no evil</p>{/if}\n * ```\n *\n * @template T\n * @extends {Set<T>}\n */\nexport class SvelteSet extends Set {\n\t/** @type {Map<T, Source<boolean>>} */\n\t#sources = new Map();\n\t#version = state(0);\n\t#size = state(0);\n\n\t/**\n\t * @param {Iterable<T> | null | undefined} [value]\n\t */\n\tconstructor(value) {\n\t\tsuper();\n\n\t\tif (DEV) {\n\t\t\t// If the value is invalid then the native exception will fire here\n\t\t\tvalue = new Set(value);\n\n\t\t\ttag(this.#version, 'SvelteSet version');\n\t\t\ttag(this.#size, 'SvelteSet.size');\n\t\t}\n\n\t\tif (value) {\n\t\t\tfor (var element of value) {\n\t\t\t\tsuper.add(element);\n\t\t\t}\n\t\t\tthis.#size.v = super.size;\n\t\t}\n\n\t\tif (!inited) this.#init();\n\t}\n\n\t// We init as part of the first instance so that we can treeshake this class\n\t#init() {\n\t\tinited = true;\n\n\t\tvar proto = SvelteSet.prototype;\n\t\tvar set_proto = Set.prototype;\n\n\t\tfor (const method of read_methods) {\n\t\t\t// @ts-ignore\n\t\t\tproto[method] = function (...v) {\n\t\t\t\tget(this.#version);\n\t\t\t\t// @ts-ignore\n\t\t\t\treturn set_proto[method].apply(this, v);\n\t\t\t};\n\t\t}\n\n\t\tfor (const method of set_like_methods) {\n\t\t\t// @ts-ignore\n\t\t\tproto[method] = function (...v) {\n\t\t\t\tget(this.#version);\n\t\t\t\t// @ts-ignore\n\t\t\t\tvar set = /** @type {Set<T>} */ (set_proto[method].apply(this, v));\n\t\t\t\treturn new SvelteSet(set);\n\t\t\t};\n\t\t}\n\t}\n\n\t/** @param {T} value */\n\thas(value) {\n\t\tvar has = super.has(value);\n\t\tvar sources = this.#sources;\n\t\tvar s = sources.get(value);\n\n\t\tif (s === undefined) {\n\t\t\tif (!has) {\n\t\t\t\t// If the value doesn't exist, track the version in case it's added later\n\t\t\t\t// but don't create sources willy-nilly to track all possible values\n\t\t\t\tget(this.#version);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\ts = source(true);\n\n\t\t\tif (DEV) {\n\t\t\t\ttag(s, `SvelteSet has(${label(value)})`);\n\t\t\t}\n\n\t\t\tsources.set(value, s);\n\t\t}\n\n\t\tget(s);\n\t\treturn has;\n\t}\n\n\t/** @param {T} value */\n\tadd(value) {\n\t\tif (!super.has(value)) {\n\t\t\tsuper.add(value);\n\t\t\tset(this.#size, super.size);\n\t\t\tincrement(this.#version);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/** @param {T} value */\n\tdelete(value) {\n\t\tvar deleted = super.delete(value);\n\t\tvar sources = this.#sources;\n\t\tvar s = sources.get(value);\n\n\t\tif (s !== undefined) {\n\t\t\tsources.delete(value);\n\t\t\tset(s, false);\n\t\t}\n\n\t\tif (deleted) {\n\t\t\tset(this.#size, super.size);\n\t\t\tincrement(this.#version);\n\t\t}\n\n\t\treturn deleted;\n\t}\n\n\tclear() {\n\t\tif (super.size === 0) {\n\t\t\treturn;\n\t\t}\n\t\t// Clear first, so we get nice console.log outputs with $inspect\n\t\tsuper.clear();\n\t\tvar sources = this.#sources;\n\n\t\tfor (var s of sources.values()) {\n\t\t\tset(s, false);\n\t\t}\n\n\t\tsources.clear();\n\t\tset(this.#size, 0);\n\t\tincrement(this.#version);\n\t}\n\n\tkeys() {\n\t\treturn this.values();\n\t}\n\n\tvalues() {\n\t\tget(this.#version);\n\t\treturn super.values();\n\t}\n\n\tentries() {\n\t\tget(this.#version);\n\t\treturn super.entries();\n\t}\n\n\t[Symbol.iterator]() {\n\t\treturn this.keys();\n\t}\n\n\tget size() {\n\t\treturn get(this.#size);\n\t}\n}\n","<script>\n import {getContext, onMount} from 'svelte';\n import {\n bgEvent, createEventClasses, createEventContent, entries, helperEvent, identity, isFunction, keyEnter,\n resourceBackgroundColor, resourceTextColor, setContent, toEventWithLocalDates, toViewWithLocalDates\n } from '#lib';\n\n let {\n el = $bindable(),\n chunk,\n classes = identity,\n styles = identity,\n onpointerdown,\n body\n } = $props();\n\n let {\n displayEventEnd, eventBackgroundColor, eventColor, eventContent, eventClick, eventDidMount, eventClassNames,\n eventMouseEnter, eventMouseLeave, eventTextColor, resources, theme, _view, _intlEventTime\n } = getContext('state');\n\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n // Style\n let bgColor = $derived(event.backgroundColor ?? resourceBackgroundColor(event, $resources) ?? $eventBackgroundColor ?? $eventColor);\n let txtColor = $derived(event.textColor ?? resourceTextColor(event, $resources) ?? $eventTextColor);\n let style = $derived(entries(styles(\n {'background-color': bgColor, 'color': txtColor}\n )).map(entry => `${entry[0]}:${entry[1]}`).join(';'));\n\n // Class\n let classNames = $derived(classes([\n bgEvent(display) ? $theme.bgEvent : $theme.event,\n ...createEventClasses($eventClassNames, event, $_view)\n ]).join(' '));\n\n // Content\n let [timeText, content] = $derived(createEventContent(\n chunk, $displayEventEnd, $eventContent, $theme, $_intlEventTime, $_view\n ));\n\n onMount(() => {\n if (isFunction($eventDidMount)) {\n $eventDidMount({\n event: toEventWithLocalDates(event),\n timeText,\n el,\n view: toViewWithLocalDates($_view)\n });\n }\n });\n\n function createHandler(fn, display) {\n return !helperEvent(display) && isFunction(fn)\n ? jsEvent => fn({event: toEventWithLocalDates(event), el, jsEvent, view: toViewWithLocalDates($_view)})\n : undefined;\n }\n\n // Handlers\n let onclick = $derived(!bgEvent(display) && createHandler($eventClick, display) || undefined);\n let onkeydown = $derived(onclick && keyEnter(onclick));\n let onmouseenter = $derived(createHandler($eventMouseEnter, display));\n let onmouseleave = $derived(createHandler($eventMouseLeave, display));\n</script>\n\n<!-- svelte-ignore a11y_no_noninteractive_tabindex -->\n<article\n bind:this={el}\n class={classNames}\n {style}\n role={onclick ? 'button' : undefined}\n tabindex={onclick ? 0 : undefined}\n {onclick}\n {onkeydown}\n {onmouseenter}\n {onmouseleave}\n {onpointerdown}\n>\n {#snippet defaultBody()}\n <div class={$theme.eventBody} use:setContent={content}></div>\n {/snippet}\n {#if body}\n {@render body(defaultBody, bgColor, txtColor)}\n {:else}\n {@render defaultBody()}\n {/if}\n</article>\n","<script>\n import {getContext} from 'svelte';\n import BaseEvent from './BaseEvent.svelte';\n import {bgEvent, helperEvent} from \"#lib\";\n\n let {\n el = $bindable(),\n chunk,\n styles,\n axis,\n forceDate,\n forceMargin\n } = $props();\n\n let {_interaction, _iClasses} = getContext('state');\n\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n // Class\n let classes = $derived(classNames => $_iClasses(classNames, event));\n\n function createDragHandler(event) {\n return $_interaction.action?.draggable(event)\n ? jsEvent => $_interaction.action.drag(\n event, jsEvent, forceDate?.(), forceMargin?.()\n )\n : $_interaction.action?.noAction;\n }\n let onpointerdown = $derived(!bgEvent(display) && !helperEvent(display) ? createDragHandler(event) : undefined);\n\n let Resizer = $derived($_interaction.resizer);\n</script>\n\n<BaseEvent bind:el {chunk} {classes} {styles} {onpointerdown}>\n {#snippet body(defaultBody)}\n {#if Resizer}\n <Resizer {chunk} {axis} {forceDate} {forceMargin}>\n {@render defaultBody()}\n </Resizer>\n {:else}\n {@render defaultBody()}\n {/if}\n {/snippet}\n</BaseEvent>\n","<script>\n import {getContext} from 'svelte';\n import {ancestor, bgEvent, height, max, rect, repositionEvent} from '#lib';\n import {InteractableEvent} from '#components';\n\n let {chunk, longChunks = {}, inPopup = false, dates = []} = $props();\n\n let {dayMaxEvents, _hiddenEvents, _popupDate} = getContext('state');\n\n let el = $state();\n let margin = $state(1);\n let hidden = $state(false);\n\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n // Style\n let styles = $derived(style => {\n if (bgEvent(display)) {\n style['width'] = `calc(${chunk.days * 100}% + ${(chunk.days - 1)}px)`;\n } else {\n let marginTop = margin;\n if (event._margin) {\n // Force margin for helper events\n let [_margin, _dates] = event._margin;\n if (chunk.date >= _dates[0] && chunk.date <= _dates.at(-1)) {\n marginTop = _margin;\n }\n }\n style['width'] = `calc(${chunk.days * 100}% + ${(chunk.days - 1) * 7}px)`;\n style['margin-top'] = `${marginTop}px`;\n }\n if (hidden) {\n style['visibility'] = 'hidden';\n }\n return style;\n });\n\n export function reposition() {\n margin = repositionEvent(chunk, longChunks, height(el));\n if ($dayMaxEvents === true) {\n hide();\n } else {\n hidden = false;\n }\n }\n\n function hide() {\n let dayEl = ancestor(el, 2);\n let h = height(dayEl) - height(dayEl.firstElementChild) - footHeight(dayEl);\n hidden = chunk.bottom > h;\n let update = false;\n // Hide or show the event throughout all days\n for (let date of chunk.dates) {\n let hiddenEvents = $_hiddenEvents[date.getTime()];\n if (hiddenEvents) {\n let size = hiddenEvents.size;\n if (hidden) {\n hiddenEvents.add(chunk.event);\n } else {\n hiddenEvents.delete(chunk.event);\n }\n if (size !== hiddenEvents.size) {\n update = true;\n }\n }\n }\n if (update) {\n $_hiddenEvents = $_hiddenEvents;\n }\n }\n\n function footHeight(dayEl) {\n let h = 0;\n for (let i = 0; i < chunk.days; ++i) {\n h = max(h, height(dayEl.lastElementChild));\n dayEl = dayEl.nextElementSibling;\n if (!dayEl) {\n break;\n }\n }\n return h;\n }\n</script>\n\n<InteractableEvent\n bind:el\n {chunk}\n {styles}\n axis=\"x\"\n forceDate={() => inPopup ? $_popupDate : undefined}\n forceMargin={() => [rect(el).top - rect(ancestor(el, 1)).top, dates]}\n/>\n","<script>\n import {getContext, tick, untrack} from 'svelte';\n import {ancestor, rect, setContent, outsideEvent, keyEnter, toISOString, stopPropagation} from '#lib';\n import Event from './Event.svelte';\n\n let {buttonText, theme, _interaction, _intlDayPopover, _popupDate, _popupChunks} = getContext('state');\n\n let el = $state();\n let style = $state('');\n\n function position() {\n let dayEl = ancestor(el, 1);\n let bodyEl = ancestor(dayEl, 3);\n let popupRect = rect(el);\n let dayRect = rect(dayEl);\n let bodyRect = rect(bodyEl);\n style = '';\n\n let left;\n if (popupRect.width >= bodyRect.width) {\n left = bodyRect.left - dayRect.left;\n let right = dayRect.right - bodyRect.right;\n style += `right:${right}px;`;\n } else {\n left = (dayRect.width - popupRect.width) / 2;\n if (dayRect.left + left < bodyRect.left) {\n left = bodyRect.left - dayRect.left;\n } else if (dayRect.left + left + popupRect.width > bodyRect.right) {\n left = bodyRect.right - dayRect.left - popupRect.width;\n }\n }\n style += `left:${left}px;`;\n\n let top;\n if (popupRect.height >= bodyRect.height) {\n top = bodyRect.top - dayRect.top;\n let bottom = dayRect.bottom - bodyRect.bottom;\n style += `bottom:${bottom}px;`;\n } else {\n top = (dayRect.height - popupRect.height) / 2;\n if (dayRect.top + top < bodyRect.top) {\n top = bodyRect.top - dayRect.top;\n } else if (dayRect.top + top + popupRect.height > bodyRect.bottom) {\n top = bodyRect.bottom - dayRect.top - popupRect.height;\n }\n }\n style += `top:${top}px;`;\n }\n\n $effect(() => {\n // Fire reposition only on popup chunks change\n $_popupChunks;\n // Let chunks to update/mount then position the popup\n tick().then(reposition);\n });\n function reposition() {\n if ($_popupChunks.length) {\n position();\n } else {\n close();\n }\n }\n\n function close() {\n $_popupDate = null;\n $_popupChunks = [];\n }\n\n function handlePointerDownOutside() {\n close();\n $_interaction.action?.noClick();\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.popup}\"\n {style}\n use:outsideEvent={'pointerdown'}\n onpointerdown={stopPropagation()}\n onpointerdownoutside={handlePointerDownOutside}\n>\n <div class=\"{$theme.dayHead}\">\n <time datetime=\"{toISOString($_popupDate, 10)}\" use:setContent={$_intlDayPopover.format($_popupDate)}></time>\n <!-- svelte-ignore a11y_missing_attribute -->\n <a\n role=\"button\"\n tabindex=\"0\"\n aria-label={$buttonText.close}\n onclick={stopPropagation(close)}\n onkeydown={keyEnter(close)}\n >×</a>\n </div>\n <div class=\"{$theme.events}\">\n {#each $_popupChunks as chunk (chunk.event)}\n <Event {chunk} inPopup />\n {/each}\n </div>\n</div>\n","<script>\n import {getContext, onMount, tick, untrack} from 'svelte';\n import {SvelteSet} from 'svelte/reactivity';\n import {\n addDay, assign, cloneDate, createEventChunk, datesEqual, getWeekNumber, isFunction, keyEnter, outsideRange,\n runReposition, setContent, setPayload, toISOString, toLocalDate, stopPropagation\n } from '#lib';\n import Event from './Event.svelte';\n import Popup from './Popup.svelte';\n\n let {date, chunks, bgChunks, longChunks, iChunks = [], dates} = $props();\n\n let {\n date: currentDate, dayMaxEvents, highlightedDates, firstDay, moreLinkContent, theme, validRange, weekNumbers,\n weekNumberContent, _hiddenEvents, _intlDayCell, _popupDate, _popupChunks, _today, _interaction\n } = getContext('state');\n\n let el = $state();\n let hiddenEvents = new SvelteSet(); // hidden events of this day\n $effect.pre(() => {\n $_hiddenEvents[date.getTime()] = untrack(() => hiddenEvents);\n });\n let refs = [];\n let isToday = $derived(datesEqual(date, $_today));\n let otherMonth = $derived(date.getUTCMonth() !== $currentDate.getUTCMonth());\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n\n let dayBgChunks = $derived(!disabled ? bgChunks.filter(bgChunk => datesEqual(bgChunk.date, date)) : []);\n let dayChunks = $derived.by(() => {\n let dayChunks = [];\n if (!disabled) {\n for (let chunk of chunks) {\n if (datesEqual(chunk.date, date)) {\n dayChunks.push(chunk);\n // if ($dayMaxEvents !== false && dayChunks.length > $dayMaxEvents) {\n // \tchunk.hidden = true;\n // }\n }\n }\n }\n return dayChunks;\n });\n $effect.pre(() => {\n dayChunks;\n hiddenEvents.clear();\n });\n\n let moreLink = $derived.by(() => {\n let moreLink = '';\n if (!disabled && hiddenEvents.size) {\n let text = '+' + hiddenEvents.size + ' more';\n if ($moreLinkContent) {\n moreLink = isFunction($moreLinkContent)\n ? $moreLinkContent({num: hiddenEvents.size, text})\n : $moreLinkContent;\n } else {\n moreLink = text;\n }\n }\n return moreLink;\n });\n\n // dateFromPoint\n onMount(() => {\n setPayload(el, () => ({allDay: true, date, resource: undefined, dayEl: el, disabled}));\n });\n\n // Popup\n function showMore() {\n $_popupDate = date;\n }\n let showPopup = $derived($_popupDate && datesEqual(date, $_popupDate));\n // Use `pre` to tick before popup positioning tick\n $effect.pre(() => {\n dayChunks;\n longChunks;\n if (showPopup) {\n // Let chunks to reposition then set popup chunks\n tick().then(setPopupChunks);\n }\n });\n function setPopupChunks() {\n let nextDay = addDay(cloneDate(date));\n let chunks = dayChunks.concat(longChunks[date.getTime()]?.chunks || []);\n $_popupChunks = chunks\n .map(chunk => assign({}, chunk, createEventChunk(chunk.event, date, nextDay), {days: 1, dates: [date]}))\n .sort((a, b) => a.top - b.top);\n }\n\n // Week numbers\n let showWeekNumber = $derived($weekNumbers && date.getUTCDay() == ($firstDay ? 1 : 0));\n let weekNumber = $derived.by(() => {\n let weekNumber;\n if (showWeekNumber) {\n let week = getWeekNumber(date, $firstDay);\n if ($weekNumberContent) {\n weekNumber = isFunction($weekNumberContent)\n ? $weekNumberContent({date: toLocalDate(date), week})\n : $weekNumberContent;\n } else {\n weekNumber = 'W' + String(week).padStart(2, '0');\n }\n }\n return weekNumber;\n });\n\n export function reposition() {\n if (!disabled) {\n runReposition(refs, dayChunks);\n }\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{otherMonth ? ' ' + $theme.otherMonth : ''}{highlight ? ' ' + $theme.highlight : ''}{disabled ? ' ' + $theme.disabled : ''}\"\n role=\"cell\"\n onpointerdown={$_interaction.action?.select}\n>\n <div class=\"{$theme.dayHead}\">\n <time\n datetime=\"{toISOString(date, 10)}\"\n use:setContent={$_intlDayCell.format(date)}\n ></time>\n {#if showWeekNumber}\n <span\n class=\"{$theme.weekNumber}\"\n use:setContent={weekNumber}\n ></span>\n {/if}\n </div>\n <div class=\"{$theme.bgEvents}\">\n {#if !disabled}\n {#each dayBgChunks as chunk (chunk.event)}\n <Event {chunk}/>\n {/each}\n {/if}\n </div>\n {#if !disabled}\n <!-- Pointer -->\n {#if iChunks[2] && datesEqual(iChunks[2].date, date)}\n <div class=\"{$theme.events}\">\n <Event chunk={iChunks[2]}/>\n </div>\n {/if}\n <!-- Drag & Resize -->\n {#if iChunks[0] && datesEqual(iChunks[0].date, date)}\n <div class=\"{$theme.events} {$theme.preview}\">\n <Event chunk={iChunks[0]}/>\n </div>\n {/if}\n {/if}\n <div class=\"{$theme.events}\">\n {#if !disabled}\n {#each dayChunks as chunk, i (chunk.event)}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Event {chunk} {longChunks} {dates} bind:this={refs[i]}/>\n {/each}\n {/if}\n </div>\n {#if showPopup}\n <Popup/>\n {/if}\n <div class=\"{$theme.dayFoot}\">\n {#if !disabled && hiddenEvents.size}\n <!-- svelte-ignore a11y_missing_attribute -->\n <!-- svelte-ignore a11y_missing_content -->\n <!-- svelte-ignore a11y_consider_explicit_label -->\n <a\n role=\"button\"\n tabindex=\"0\"\n aria-haspopup=\"true\"\n onclick={stopPropagation(showMore)}\n onkeydown={keyEnter(showMore)}\n onpointerdown={stopPropagation()}\n use:setContent={moreLink}\n ></a>\n {/if}\n </div>\n</div>\n","<script>\n import {getContext} from 'svelte';\n import {\n addDay, bgEvent, cloneDate, createEventChunk, eventIntersects, limitToRange, prepareEventChunks,\n runReposition\n } from '#lib';\n import Day from './Day.svelte';\n\n let {dates} = $props();\n\n let {_filteredEvents, _iEvents,\n resources, filterEventsWithResources, hiddenDays, theme, validRange } = getContext('state');\n\n let refs = [];\n\n let start = $derived(limitToRange(dates[0], $validRange));\n let end = $derived(addDay(cloneDate(limitToRange(dates.at(-1), $validRange))));\n\n let [chunks, bgChunks, longChunks] = $derived.by(() => {\n let chunks = [];\n let bgChunks = [];\n for (let event of $_filteredEvents) {\n if (eventIntersects(event, start, end, $filterEventsWithResources ? $resources : undefined)) {\n let chunk = createEventChunk(event, start, end);\n if (bgEvent(event.display)) {\n if (event.allDay) {\n bgChunks.push(chunk);\n }\n } else {\n chunks.push(chunk);\n }\n }\n }\n prepareEventChunks(bgChunks, $hiddenDays);\n let longChunks = prepareEventChunks(chunks, $hiddenDays);\n return [chunks, bgChunks, longChunks];\n });\n\n let iChunks = $derived($_iEvents.map(event => {\n let chunk;\n if (event && eventIntersects(event, start, end)) {\n chunk = createEventChunk(event, start, end);\n prepareEventChunks([chunk], $hiddenDays);\n } else {\n chunk = null;\n }\n return chunk;\n }));\n\n export function reposition() {\n runReposition(refs, dates);\n }\n</script>\n\n<div class=\"{$theme.days}\" role=\"row\">\n {#each dates as date, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Day {date} {chunks} {bgChunks} {longChunks} {iChunks} {dates} bind:this={refs[i]} />\n {/each}\n</div>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {runReposition, observeResize} from '#lib';\n import Week from './Week.svelte';\n\n let {\n _bodyEl, _viewDates, _filteredEvents, _hiddenEvents, _recheckScrollable, dayMaxEvents, hiddenDays, theme\n } = getContext('state');\n\n let refs = [];\n\n let days = $derived(7 - $hiddenDays.length);\n let weeks = $derived.by(() => {\n let weeks = [];\n for (let i = 0; i < $_viewDates.length / days; ++i) {\n let dates = [];\n for (let j = 0; j < days; ++j) {\n dates.push($_viewDates[i * days + j]);\n }\n weeks.push(dates);\n }\n return weeks;\n });\n $effect.pre(() => {\n weeks;\n $dayMaxEvents;\n $_hiddenEvents = {};\n });\n\n function reposition() {\n runReposition(refs, weeks);\n }\n $effect(() => {\n $_filteredEvents;\n $_hiddenEvents;\n $dayMaxEvents;\n untrack(reposition);\n });\n</script>\n\n<div\n bind:this={$_bodyEl}\n class=\"{$theme.body}{$dayMaxEvents === true ? ' ' + $theme.uniform : ''}\"\n use:observeResize={() => $_recheckScrollable = true}\n>\n <div class=\"{$theme.content}\">\n {#each weeks as dates, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Week {dates} bind:this={refs[i]}/>\n {/each}\n </div>\n</div>\n\n<svelte:window on:resize={reposition}/>\n","import {writable} from 'svelte/store';\nimport {btnTextMonth, intl, themeView} from '#lib';\nimport {days} from './stores.js';\nimport View from './View.svelte';\n\nexport default {\n createOptions(options) {\n options.dayMaxEvents = false;\n options.dayCellFormat = {day: 'numeric'};\n options.dayPopoverFormat = {month: 'long', day: 'numeric', year: 'numeric'};\n options.moreLinkContent = undefined;\n options.weekNumbers = false;\n options.weekNumberContent = undefined;\n // Common options\n options.buttonText.dayGridMonth = 'month';\n options.buttonText.close = 'Close';\n options.theme.uniform = 'ec-uniform';\n options.theme.dayFoot = 'ec-day-foot';\n options.theme.popup = 'ec-popup';\n options.theme.weekNumber = 'ec-week-number';\n options.view = 'dayGridMonth';\n options.views.dayGridMonth = {\n buttonText: btnTextMonth,\n component: View,\n dayHeaderFormat: {weekday: 'short'},\n dayHeaderAriaLabelFormat: {weekday: 'long'},\n displayEventEnd: false,\n duration: {months: 1},\n theme: themeView('ec-day-grid ec-month-view'),\n titleFormat: {year: 'numeric', month: 'long'}\n };\n },\n\n createStores(state) {\n state._days = days(state);\n state._intlDayCell = intl(state.locale, state.dayCellFormat);\n state._intlDayPopover = intl(state.locale, state.dayPopoverFormat);\n state._hiddenEvents = writable({});\n state._popupDate = writable(null);\n state._popupChunks = writable([]);\n }\n}\n","import {bgEvent, helperEvent} from '#lib';\n\nexport function eventDraggable(event, $eventStartEditable, $editable) {\n return (event.startEditable ?? $eventStartEditable ?? event.editable ?? $editable);\n}\n\nexport function eventResizable(event, $eventDurationEditable, $editable) {\n return (event.durationEditable ?? $eventDurationEditable ?? event.editable ?? $editable);\n}\n","import {min, max} from '#lib';\n\nlet busy = false;\nexport function animate(fn) {\n if (!busy) {\n busy = true;\n window.requestAnimationFrame(() => {\n fn();\n busy = false;\n });\n }\n}\n\nexport function limit(value, minLimit, maxLimit) {\n return max(minLimit, min(maxLimit, value));\n}\n\nexport function draggable(event) {\n\n}\n","<script>\n import {getContext} from 'svelte';\n import {\n addDay, addDuration, ancestor, assign, cloneDate, cloneEvent, copyTime, createDuration, getElementWithPayload,\n getPayload, isFunction, listen, listView, max, min, noop, rect, runAll, subtractDay, subtractDuration,\n timelineView, toEventWithLocalDates, toISOString, toLocalDate, toViewWithLocalDates\n } from '#lib';\n import {animate, limit, eventDraggable} from './lib';\n\n let {_iEvents, _iClass, _events, _view, _dayGrid, _bodyEl, datesAboveResources, dateClick, dragConstraint,\n dragScroll, editable, eventStartEditable, eventDragMinDistance, eventDragStart, eventDragStop, eventDrop,\n eventLongPressDelay, eventResizeStart, eventResizeStop, eventResize, longPressDelay, resizeConstraint,\n selectable, select: selectFn, selectBackgroundColor, selectConstraint, selectLongPressDelay, selectMinDistance,\n slotDuration, slotHeight, slotWidth, unselect: unselectFn, unselectAuto, unselectCancel, validRange,\n view} = getContext('state');\n\n const ACTION_DRAG = 1;\n const ACTION_RESIZE_END = 2;\n const ACTION_RESIZE_START = 3;\n const ACTION_SELECT = 4;\n const ACTION_CLICK = 5;\n const ACTION_NO_ACTION = 6;\n let action;\n let interacting;\n let event;\n let display;\n let date, newDate;\n let resource, newResource;\n let fromX, fromY;\n let toX, toY;\n let bodyEl, bodyRect, clipEl, clipRect;\n let delta;\n let allDay;\n let iClass;\n let minResize; // minimum end time when resizing\n let selectStep; // minimum selection step\n let selected; // whether selection has been made\n let noDateClick; // do not perform date click\n let timer; // timer for long press delays\n let viewport;\n let margin;\n let extraDuration; // extra duration for zero duration events\n\n export function draggable(event) {\n return eventDraggable(event, $eventStartEditable, $editable);\n }\n\n export function drag(eventToDrag, jsEvent, forceDate, forceMargin) {\n if (!action) {\n action = validJsEvent(jsEvent) ? ACTION_DRAG : ACTION_NO_ACTION;\n\n if (complexAction()) {\n event = eventToDrag;\n\n common(jsEvent);\n\n if (forceDate) {\n // Force date in popup\n date = forceDate;\n }\n\n if (forceMargin) {\n margin = forceMargin;\n }\n\n iClass = 'dragging';\n\n move(jsEvent);\n }\n }\n }\n\n export function resize(eventToResize, jsEvent, start, axis, forceDate, forceMargin, zeroDuration) {\n if (!action) {\n action = validJsEvent(jsEvent) ? (\n start ? ACTION_RESIZE_START : ACTION_RESIZE_END\n ) : ACTION_NO_ACTION;\n\n if (complexAction()) {\n event = eventToResize;\n\n common(jsEvent);\n\n if (forceDate) {\n // Force date in popup\n date = forceDate;\n }\n\n if (forceMargin) {\n margin = forceMargin;\n }\n\n iClass = axis === 'x' ? 'resizingX' : 'resizingY';\n\n // Calculate the limits for resize\n if (resizingStart()) {\n minResize = cloneDate(event.end);\n if (allDay) {\n copyTime(minResize, event.start);\n if (minResize >= event.end) {\n subtractDay(minResize);\n }\n } else {\n subtractDuration(minResize, $slotDuration);\n if (minResize < event.start) {\n minResize = event.start;\n }\n // Overwrite the date due to possible discrepancy between calculated date\n // and resizer coordinates in browser\n date = event.start;\n }\n } else {\n minResize = cloneDate(event.start);\n if (allDay) {\n copyTime(minResize, event.end);\n if (minResize <= event.start && !zeroDuration) {\n addDay(minResize);\n }\n } else {\n addDuration(minResize, $slotDuration);\n if (minResize > event.end) {\n minResize = event.end;\n }\n // Overwrite the date due to possible discrepancy between calculated date\n // and resizer coordinates in browser\n date = event.end;\n if (!zeroDuration) {\n date = subtractDuration(cloneDate(date), $slotDuration);\n }\n }\n\n // Handle zero duration events\n if (zeroDuration && !allDay) {\n extraDuration = $slotDuration;\n }\n }\n\n move(jsEvent);\n }\n }\n }\n\n export function select(jsEvent) {\n if (!action) {\n action = validJsEvent(jsEvent) ? (\n $selectable && !listView($view) ? ACTION_SELECT : ACTION_CLICK\n ) : ACTION_NO_ACTION;\n\n if (complexAction()) {\n common(jsEvent);\n\n iClass = 'selecting';\n\n selectStep = allDay ? createDuration({day: 1}) : $slotDuration;\n\n // Create dummy source event\n event = {\n allDay,\n start: date,\n end: addDuration(cloneDate(date), selectStep),\n resourceIds: resource ? [resource.id] : []\n };\n\n move(jsEvent);\n }\n }\n }\n\n export function noAction() {\n if (!action) {\n action = ACTION_NO_ACTION;\n }\n }\n\n\tfunction common(jsEvent) {\n window.getSelection().removeAllRanges();\n\n fromX = toX = jsEvent.clientX;\n fromY = toY = jsEvent.clientY;\n\n let dayEl = getElementWithPayload(toX, toY);\n ({allDay, date, resource} = getPayload(dayEl)(toX, toY));\n\n if (timelineView($view)) {\n bodyEl = clipEl = $_bodyEl;\n } else {\n bodyEl = ancestor(dayEl, resource ? 4 : 3);\n clipEl = ancestor(dayEl, resource && (dragging() || $datesAboveResources) ? 2 : 1);\n }\n calcViewport();\n\n if (jsEvent.pointerType !== 'mouse') {\n // For touch devices init long press delay\n timer = setTimeout(() => {\n if (action) {\n interacting = true;\n move(jsEvent);\n }\n }, (selecting() ? $selectLongPressDelay : $eventLongPressDelay) ?? $longPressDelay);\n }\n }\n\n function move(jsEvent) {\n if (\n interacting ||\n jsEvent && jsEvent.pointerType === 'mouse' && distance() >= (selecting() ? $selectMinDistance : $eventDragMinDistance)\n ) {\n interacting = true;\n unselect(jsEvent);\n $_iClass = iClass;\n\n if (!$_iEvents[0]) {\n if (selecting()) {\n createIEventSelect();\n } else {\n createIEvent(jsEvent, resizing() ? $eventResizeStart : $eventDragStart);\n }\n }\n\n let payload = findPayload(findDayEl());\n if (payload) {\n let newAllDay;\n ({allDay: newAllDay, date: newDate, resource: newResource} = payload);\n\n if (newAllDay === allDay) {\n let candidate = copyIEventData({}, $_iEvents[0]);\n let constraintFn = $resizeConstraint;\n delta = createDuration((newDate - date) / 1000);\n if (resizingStart()) {\n // Resizing start\n candidate.start = addDuration(cloneDate(event.start), delta);\n if (candidate.start > minResize) {\n candidate.start = minResize;\n delta = createDuration((minResize - event.start) / 1000);\n }\n } else {\n candidate.end = addDuration(cloneDate(event.end), delta);\n if (extraDuration) {\n addDuration(candidate.end, extraDuration);\n }\n if (resizing()) {\n // Resizing end\n if (candidate.end < minResize) {\n candidate.end = minResize;\n delta = createDuration((minResize - event.end) / 1000);\n }\n } else if (selecting()) {\n // Selecting\n if (candidate.end < event.end) {\n candidate.start = subtractDuration(candidate.end, selectStep);\n candidate.end = event.end;\n } else {\n candidate.start = event.start;\n }\n constraintFn = $selectConstraint;\n } else {\n // Dragging\n candidate.start = addDuration(cloneDate(event.start), delta);\n if (resource) {\n candidate.resourceIds = event.resourceIds.filter(id => id !== resource.id);\n candidate.resourceIds.push(newResource.id);\n }\n constraintFn = $dragConstraint;\n }\n }\n // Check constraint\n do {\n if (constraintFn !== undefined) {\n candidate = copyIEventData(cloneEvent(event), candidate);\n let result = constraintFn(\n selecting()\n ? createSelectCallbackInfo(candidate, jsEvent)\n : createCallbackInfo(candidate, event, jsEvent)\n );\n if (result === false) {\n // Revert preview event\n $_iEvents[0] = copyIEventData($_iEvents[0], event);\n break;\n }\n }\n // Update preview event\n $_iEvents[0] = copyIEventData($_iEvents[0], candidate);\n } while (0);\n }\n }\n }\n\n if ($dragScroll) {\n let thresholdY = $slotHeight * 2;\n let thresholdX = $slotWidth;\n animate(() => {\n if (bodyEl) {\n if (toY < thresholdY) {\n window.scrollBy(0, max(-10, (toY - thresholdY) / 3));\n }\n if (toY < bodyRect.top + thresholdY) {\n bodyEl.scrollTop += max(-10, (toY - bodyRect.top - thresholdY) / 3);\n }\n if (toY > window.innerHeight - thresholdY) {\n window.scrollBy(0, min(10, (toY - window.innerHeight + thresholdY) / 3));\n }\n if (toY > bodyRect.bottom - thresholdY) {\n bodyEl.scrollTop += min(10, (toY - bodyRect.bottom + thresholdY) / 3);\n }\n\n if (timelineView($view)) {\n if (toX < bodyRect.left + thresholdX) {\n bodyEl.scrollLeft += max(-10, (toX - bodyRect.left - thresholdX) / 3);\n }\n if (toX > bodyRect.right - thresholdX) {\n bodyEl.scrollLeft += min(10, (toX - bodyRect.right + thresholdX) / 3);\n }\n }\n }\n });\n }\n }\n\n export function handleScroll() {\n if (complexAction()) {\n calcViewport();\n move();\n }\n }\n\n function handlePointerMove(jsEvent) {\n if (complexAction() && jsEvent.isPrimary) {\n toX = jsEvent.clientX;\n toY = jsEvent.clientY;\n move(jsEvent);\n }\n }\n\n function handlePointerUp(jsEvent) {\n if (selected && $unselectAuto && !($unselectCancel && jsEvent.target.closest($unselectCancel))) {\n unselect(jsEvent);\n }\n if (action && jsEvent.isPrimary) {\n if (interacting) {\n if (selecting()) {\n selected = true;\n if (isFunction($selectFn)) {\n let info = createSelectCallbackInfo($_iEvents[0], jsEvent);\n $selectFn(info);\n }\n } else {\n event.display = display;\n\n let callback = resizing() ? $eventResizeStop : $eventDragStop;\n if (isFunction(callback)) {\n callback({event: toEventWithLocalDates(event), jsEvent, view: toViewWithLocalDates($_view)});\n }\n\n let oldEvent = cloneEvent(event);\n updateEvent(event, $_iEvents[0]);\n\n destroyIEvent();\n\n callback = resizing() ? $eventResize : $eventDrop;\n if (isFunction(callback)) {\n let eventRef = event;\n let info = createCallbackInfo(event, oldEvent, jsEvent);\n callback(assign(info, {\n revert() {\n updateEvent(eventRef, oldEvent);\n }\n }));\n }\n }\n } else {\n if (clicking() || selecting()) {\n // Perform date click\n if (isFunction($dateClick) && !noDateClick) {\n toX = jsEvent.clientX;\n toY = jsEvent.clientY;\n let dayEl = getElementWithPayload(toX, toY);\n if (dayEl) {\n let {allDay, date, resource} = getPayload(dayEl)(toX, toY);\n $dateClick({\n allDay,\n date: toLocalDate(date),\n dateStr: toISOString(date),\n dayEl,\n jsEvent,\n view: toViewWithLocalDates($_view),\n resource\n });\n }\n }\n }\n }\n\n interacting = false;\n action = fromX = fromY = toX = toY = event = display = date = newDate = resource = newResource = delta =\n extraDuration = allDay = $_iClass = minResize = selectStep = margin = undefined;\n bodyEl = clipEl = bodyRect = clipRect = undefined;\n\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n }\n\n noDateClick = false;\n }\n\n function findDayEl() {\n // Limit coordinates to viewport\n return getElementWithPayload(\n limit(toX, viewport[0], viewport[1]),\n limit(toY, viewport[2], viewport[3])\n );\n }\n\n function findPayload(dayEl) {\n if (dayEl) {\n let payload = getPayload(dayEl)(toX, toY);\n if (payload.disabled) {\n if (!$validRange.end || payload.date < $validRange.end) {\n return findPayload(dayEl.nextElementSibling);\n }\n if (!$validRange.start || payload.date > $validRange.start) {\n return findPayload(dayEl.previousElementSibling);\n }\n } else {\n return payload;\n }\n }\n return null;\n }\n\n function calcViewport() {\n bodyRect = rect(bodyEl);\n clipRect = rect(clipEl);\n viewport = [\n max(0, clipRect.left + (timelineView($view) ? 1 : ($_dayGrid ? 0 : 8))), // left\n min(document.documentElement.clientWidth, clipRect.left + clipEl.clientWidth) - 2, // right\n max(0, bodyRect.top), // top\n min(document.documentElement.clientHeight, bodyRect.top + bodyEl.clientHeight) - 2 // bottom\n ];\n }\n\n function createIEvent(jsEvent, callback) {\n if (isFunction(callback)) {\n callback({event: toEventWithLocalDates(event), jsEvent, view: toViewWithLocalDates($_view)});\n }\n display = event.display;\n event.display = 'preview';\n $_iEvents[0] = cloneEvent(event);\n if (margin !== undefined) {\n $_iEvents[0]._margin = margin;\n }\n if (extraDuration) {\n addDuration($_iEvents[0].end, extraDuration);\n }\n event.display = 'ghost';\n $_events = $_events;\n }\n\n function createIEventSelect() {\n $_iEvents[0] = {\n id: '{select}',\n allDay: event.allDay,\n start: event.start,\n title: '',\n display: 'preview',\n extendedProps: {},\n backgroundColor: $selectBackgroundColor,\n resourceIds: event.resourceIds,\n classNames: [],\n styles: []\n };\n }\n\n function destroyIEvent() {\n $_iEvents[0] = null;\n }\n\n function copyIEventData(target, source) {\n target.start = source.start;\n target.end = source.end;\n target.resourceIds = source.resourceIds;\n return target;\n }\n\n function updateEvent(target, source) {\n copyIEventData(target, source);\n $_events = $_events;\n }\n\n function createSelectCallbackInfo(event, jsEvent) {\n let {start, end} = toEventWithLocalDates(event);\n return {\n start,\n end,\n startStr: toISOString(event.start),\n endStr: toISOString(event.end),\n allDay,\n view: toViewWithLocalDates($_view),\n resource,\n jsEvent\n };\n }\n\n function createCallbackInfo(event, oldEvent, jsEvent) {\n let info;\n if (resizing()) {\n info = resizingStart()\n ? {startDelta: delta, endDelta: createDuration(0)}\n : {startDelta: createDuration(0), endDelta: delta};\n } else {\n info = {\n delta,\n oldResource: resource !== newResource ? resource : undefined,\n newResource: resource !== newResource ? newResource : undefined\n };\n }\n assign(info, {\n event: toEventWithLocalDates(event),\n oldEvent: toEventWithLocalDates(oldEvent),\n view: toViewWithLocalDates($_view),\n jsEvent\n });\n\n return info;\n }\n\n function distance() {\n return Math.sqrt(Math.pow(toX - fromX, 2) + Math.pow(toY - fromY, 2));\n }\n\n function dragging() {\n return action === ACTION_DRAG;\n }\n\n function resizing() {\n return action === ACTION_RESIZE_END || resizingStart();\n }\n\n function resizingStart() {\n return action === ACTION_RESIZE_START;\n }\n\n function clicking() {\n return action === ACTION_CLICK;\n }\n\n function selecting() {\n return action === ACTION_SELECT;\n }\n\n function complexAction() {\n return action && action < ACTION_CLICK;\n }\n\n function validJsEvent(jsEvent) {\n return jsEvent.isPrimary && (jsEvent.pointerType !== 'mouse' || jsEvent.buttons & 1);\n }\n\n export function unselect(jsEvent) {\n if (selected) {\n selected = false;\n destroyIEvent();\n if (isFunction($unselectFn)) {\n $unselectFn({\n jsEvent,\n view: toViewWithLocalDates($_view)\n });\n }\n }\n }\n\n export function noClick() {\n noDateClick = true;\n }\n\n // Clear selection on view params change\n _view.subscribe(unselect);\n\n function handleTouchStart(jsEvent) {\n if (complexAction()) {\n let target = jsEvent.target;\n let stops = [];\n let stop = () => runAll(stops);\n stops.push(listen(window, 'touchmove', noop, {passive: false}))\n stops.push(listen(target, 'touchmove', createPreventDefaultHandler(() => interacting)));\n stops.push(listen(target, 'touchend', stop));\n stops.push(listen(target, 'touchcancel', stop));\n }\n }\n\n function createPreventDefaultHandler(condition) {\n return jsEvent => {\n if (condition()) {\n jsEvent.preventDefault();\n }\n };\n }\n</script>\n\n<svelte:window\n onpointermove={handlePointerMove}\n onpointerup={handlePointerUp}\n onpointercancel={handlePointerUp}\n onscroll={handleScroll}\n onselectstart={createPreventDefaultHandler(complexAction)}\n oncontextmenu={createPreventDefaultHandler(() => timer)}\n ontouchstart={handleTouchStart}\n/>\n","<script>\n import {getContext} from 'svelte';\n import {addDuration, cloneDate, getElementWithPayload, getPayload} from '#lib';\n\n let {_iEvents, slotDuration} = getContext('state');\n\n let x = 0, y = 0;\n\n $effect(() => {\n if ($_iEvents[0]) {\n removePointerEvent();\n }\n });\n\n function move() {\n let dayEl = getElementWithPayload(x, y);\n\n if (dayEl) {\n let {allDay, date, resource, disabled} = getPayload(dayEl)(x, y);\n if (!disabled) {\n let idx = allDay ? 2 : 1;\n\n if (!$_iEvents[idx]) {\n createPointerEvent(idx);\n }\n $_iEvents[idx].start = date;\n $_iEvents[idx].end = addDuration(cloneDate(date), $slotDuration);\n $_iEvents[idx].resourceIds = resource ? [resource.id] : [];\n\n return;\n }\n }\n\n removePointerEvent();\n }\n\n export function handleScroll() {\n move();\n }\n\n function handlePointerMove(jsEvent) {\n if (validEvent(jsEvent)) {\n x = jsEvent.clientX;\n y = jsEvent.clientY;\n move();\n }\n }\n\n function createPointerEvent(idx) {\n $_iEvents[idx] = {\n id: '{pointer}',\n title: '',\n display: 'pointer',\n extendedProps: {},\n backgroundColor: 'transparent',\n classNames: [],\n styles: []\n };\n }\n\n function removePointerEvent() {\n if ($_iEvents[1]) {\n $_iEvents[1] = null;\n }\n if ($_iEvents[2]) {\n $_iEvents[2] = null;\n }\n }\n\n function validEvent(jsEvent) {\n return jsEvent.isPrimary && jsEvent.pointerType === 'mouse';\n }\n</script>\n\n<svelte:window\n onpointermove={handlePointerMove}\n onscroll={handleScroll}\n/>\n","<script>\n import {getContext} from 'svelte';\n import {bgEvent, helperEvent} from '#lib';\n import {eventResizable} from './lib';\n\n let {chunk, axis, forceDate = undefined, forceMargin = undefined, children} = $props();\n\n let {theme, eventDurationEditable, eventResizableFromStart, editable, _interaction} = getContext('state');\n\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n let resizable = $derived(\n !bgEvent(display) && !helperEvent(display) && eventResizable(event, $eventDurationEditable, $editable)\n );\n\n function createResizeHandler(start) {\n return jsEvent => $_interaction.action.resize(\n event,\n jsEvent,\n start,\n axis,\n forceDate?.(),\n forceMargin?.(),\n chunk.zeroDuration\n );\n }\n</script>\n\n{#if resizable && $eventResizableFromStart}\n <div class=\"{$theme.resizer} {$theme.start}\" onpointerdown={createResizeHandler(true)}></div>\n{/if}\n{@render children()}\n{#if resizable}\n <div class=\"{$theme.resizer}\" onpointerdown={createResizeHandler(false)}></div>\n{/if}\n","<script>\n import {getContext} from 'svelte';\n import {bgEvent, helperEvent, listen} from '#lib';\n import {eventDraggable} from './lib';\n import Action from './Action.svelte';\n import Pointer from './Pointer.svelte';\n import Resizer from './Resizer.svelte';\n\n let {theme, editable, eventStartEditable, pointer, _bodyEl,\n _interaction, _iClasses} = getContext('state');\n\n $_interaction.resizer = Resizer;\n\n $effect(() => {\n $theme;\n $eventStartEditable;\n $editable;\n $_iClasses = (classNames, event) => {\n let {display} = event;\n return [\n ...classNames,\n helperEvent(display)\n ? [$theme[display]]\n : (\n !bgEvent(display) && eventDraggable(event, $eventStartEditable, $editable)\n ? [$theme.draggable]\n : []\n )\n ];\n };\n });\n\n $effect(() => {\n if ($_bodyEl) {\n return listen($_bodyEl, 'scroll', bodyScrollHandler);\n }\n });\n\n function bodyScrollHandler() {\n for (let component of Object.values($_interaction)) {\n component?.handleScroll?.();\n }\n }\n</script>\n\n<Action bind:this={$_interaction.action}/>\n{#if $pointer}\n <Pointer bind:this={$_interaction.pointer}/>\n{/if}\n","import Auxiliary from './Auxiliary.svelte';\n\nexport default {\n createOptions(options) {\n options.dateClick = undefined;\n options.dragConstraint = undefined;\n options.dragScroll = true;\n options.editable = false;\n options.eventDragMinDistance = 5;\n options.eventDragStart = undefined;\n options.eventDragStop = undefined;\n options.eventDrop = undefined;\n options.eventDurationEditable = true;\n options.eventLongPressDelay = undefined;\n options.eventResizableFromStart = false;\n options.eventResizeStart = undefined;\n options.eventResizeStop = undefined;\n options.eventResize = undefined;\n options.eventStartEditable = true;\n options.longPressDelay = 1000;\n options.pointer = false;\n options.resizeConstraint = undefined;\n options.select = undefined;\n options.selectBackgroundColor = undefined; // ec option\n options.selectConstraint = undefined;\n options.selectLongPressDelay = undefined;\n options.selectMinDistance = 5;\n options.unselect = undefined;\n options.unselectAuto = true;\n options.unselectCancel = '';\n options.theme.draggable = 'ec-draggable';\n options.theme.ghost = 'ec-ghost';\n options.theme.preview = 'ec-preview';\n options.theme.pointer = 'ec-pointer';\n options.theme.resizer = 'ec-resizer';\n options.theme.start = 'ec-start';\n options.theme.dragging = 'ec-dragging';\n options.theme.resizingY = 'ec-resizing-y';\n options.theme.resizingX = 'ec-resizing-x';\n options.theme.selecting = 'ec-selecting';\n },\n\n createStores(state) {\n state._auxiliary.update($_auxiliary => [...$_auxiliary, Auxiliary]);\n }\n}\n","<script>\n import {getContext} from 'svelte';\n import {BaseEvent} from '#components';\n\n let {chunk} = $props();\n\n let {theme, _interaction} = getContext('state');\n\n // Style\n let styles = $derived(style => {\n delete style['background-color'];\n delete style['color'];\n return style;\n });\n</script>\n\n<BaseEvent {chunk} {styles} onpointerdown={$_interaction.action?.noAction}>\n {#snippet body(defaultBody, bgColor, txtColor)}\n <div class=\"{$theme.eventTag}\" style:background-color={bgColor}></div>\n {@render defaultBody()}\n {/snippet}\n</BaseEvent>\n","<script>\n import {getContext} from 'svelte';\n import {\n addDay, bgEvent, cloneDate, createEventChunk, datesEqual, eventIntersects, outsideRange, setContent, setPayload,\n sortEventChunks, toISOString\n } from '#lib';\n import Event from './Event.svelte';\n\n let {date} = $props();\n\n let {_filteredEvents, _interaction, _intlListDay, _intlListDaySide, _today,\n resources, filterEventsWithResources, highlightedDates, theme, validRange} = getContext('state');\n\n let el = $state();\n let isToday = $derived(datesEqual(date, $_today));\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n let datetime = $derived(toISOString(date, 10));\n\n let chunks = $derived.by(() => {\n let chunks = [];\n if (!disabled) {\n let start = date;\n let end = addDay(cloneDate(date));\n for (let event of $_filteredEvents) {\n if (!bgEvent(event.display) && eventIntersects(event, start, end, $filterEventsWithResources ? $resources : undefined)) {\n let chunk = createEventChunk(event, start, end);\n chunks.push(chunk);\n }\n }\n sortEventChunks(chunks);\n }\n return chunks;\n });\n\n // dateFromPoint\n $effect(() => {\n if (el) {\n setPayload(el, () => ({allDay: true, date, resource: undefined, dayEl: el, disabled}));\n }\n });\n</script>\n\n{#if chunks.length}\n <div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{highlight ? ' ' + $theme.highlight : ''}\"\n role=\"listitem\"\n onpointerdown={$_interaction.action?.select}\n >\n <!-- svelte-ignore a11y_missing_content -->\n <h4 class=\"{$theme.dayHead}\">\n <time {datetime} use:setContent={$_intlListDay.format(date)}></time>\n <time class=\"{$theme.daySide}\" {datetime} use:setContent={$_intlListDaySide.format(date)}></time>\n </h4>\n {#each chunks as chunk (chunk.event)}\n <Event {chunk}/>\n {/each}\n </div>\n{/if}\n","<script>\n import {getContext} from 'svelte';\n import {addDay, cloneDate, toViewWithLocalDates, setContent, bgEvent, isFunction} from '#lib';\n import Day from './Day.svelte';\n\n let {_bodyEl, _filteredEvents, _view, _viewDates, noEventsClick, noEventsContent, theme} = getContext('state');\n\n let noEvents = $derived.by(() => {\n let noEvents = true;\n if ($_viewDates.length) {\n let start = $_viewDates[0];\n let end = addDay(cloneDate($_viewDates.at(-1)));\n for (let event of $_filteredEvents) {\n if (!bgEvent(event.display) && event.start < end && event.end > start) {\n noEvents = false;\n break;\n }\n }\n }\n return noEvents;\n });\n\n let content = $derived(isFunction($noEventsContent) ? $noEventsContent() : $noEventsContent);\n\n function onclick(jsEvent) {\n if (isFunction($noEventsClick)) {\n $noEventsClick({jsEvent, view: toViewWithLocalDates($_view)});\n }\n }\n</script>\n\n<div bind:this={$_bodyEl} class=\"{$theme.body}\">\n <div class=\"{$theme.content}\">\n {#if noEvents}\n <!-- svelte-ignore a11y_click_events_have_key_events -->\n <!-- svelte-ignore a11y_no_static_element_interactions -->\n <div use:setContent={content} class=\"{$theme.noEvents}\" {onclick}></div>\n {:else}\n {#each $_viewDates as date}\n <Day {date}/>\n {/each}\n {/if}\n </div>\n</div>\n","import {btnTextDay, btnTextWeek, btnTextMonth, btnTextYear, intl, themeView} from '#lib';\nimport View from './View.svelte';\n\nexport default {\n createOptions(options) {\n // Common options\n options.buttonText.listDay = 'list';\n options.buttonText.listWeek = 'list';\n options.buttonText.listMonth = 'list';\n options.buttonText.listYear = 'list';\n options.listDayFormat = {weekday: 'long'};\n options.listDaySideFormat = {year: 'numeric', month: 'long', day: 'numeric'};\n options.noEventsClick = undefined; // ec option\n options.noEventsContent = 'No events';\n options.theme.daySide = 'ec-day-side';\n options.theme.eventTag = 'ec-event-tag';\n options.theme.noEvents = 'ec-no-events';\n options.view = 'listWeek';\n options.views.listDay = {\n buttonText: btnTextDay,\n component: View,\n duration: {days: 1},\n theme: themeView('ec-list ec-day-view')\n };\n options.views.listWeek = {\n buttonText: btnTextWeek,\n component: View,\n duration: {weeks: 1},\n theme: themeView('ec-list ec-week-view')\n };\n options.views.listMonth = {\n buttonText: btnTextMonth,\n component: View,\n duration: {months: 1},\n theme: themeView('ec-list ec-month-view')\n };\n options.views.listYear = {\n buttonText: btnTextYear,\n component: View,\n duration: {years: 1},\n theme: themeView('ec-list ec-year-view')\n };\n },\n\n createStores(state) {\n state._intlListDay = intl(state.locale, state.listDayFormat);\n state._intlListDaySide = intl(state.locale, state.listDaySideFormat);\n }\n}\n","import {derived} from 'svelte/store';\nimport {createDate, createSlotTimeLimits, createTimes, setMidnight} from '#lib';\n\nexport function times(state) {\n return derived(\n [state.slotDuration, state.slotLabelInterval, state._slotTimeLimits, state._intlSlotLabel],\n args => createTimes(setMidnight(createDate()), ...args)\n );\n}\n\nexport function slotTimeLimits(state) {\n return derived(\n [state.slotMinTime, state.slotMaxTime, state.flexibleSlotTimeLimits, state._viewDates, state._filteredEvents],\n args => createSlotTimeLimits(...args)\n );\n}\n","import {isFunction, sortEventChunks} from '#lib';\n\nexport function groupEventChunks(chunks) {\n if (!chunks.length) {\n return;\n }\n\n sortEventChunks(chunks);\n\n // Group\n let group = {\n columns: [],\n end: chunks[0].end\n };\n for (let chunk of chunks) {\n let c = 0;\n if (chunk.start < group.end) {\n for (; c < group.columns.length; ++c) {\n if (group.columns[c].at(-1).end <= chunk.start) {\n break;\n }\n }\n if (chunk.end > group.end) {\n group.end = chunk.end;\n }\n } else {\n group = {\n columns: [],\n end: chunk.end\n };\n }\n\n if (group.columns.length < c + 1) {\n group.columns.push([]);\n }\n group.columns[c].push(chunk);\n\n chunk.group = group;\n chunk.column = c;\n }\n}\n\nexport function createAllDayContent(allDayContent) {\n let text = 'all-day';\n let content;\n if (allDayContent) {\n content = isFunction(allDayContent) ? allDayContent({text}) : allDayContent;\n if (typeof content === 'string') {\n content = {html: content};\n }\n } else {\n content = {\n html: text\n };\n }\n\n return content;\n}\n","<script>\n import {getContext} from 'svelte';\n import {setContent} from '#lib';\n import {createAllDayContent} from './utils.js';\n\n let {children, lines} = $props();\n\n let {allDayContent, slotLabelInterval, theme, _times} = getContext('state');\n\n let allDayText = $derived(createAllDayContent($allDayContent));\n let showAllTimes = $derived($slotLabelInterval && $slotLabelInterval.seconds <= 0);\n</script>\n\n<div class=\"{$theme.sidebar}\">\n <div class=\"{$theme.sidebarTitle}\" use:setContent={allDayText}></div>\n {#each $_times as time, i}\n <time\n class=\"{$theme.time}{(i || showAllTimes) && time[2] ? '' : ' ' + $theme.minor}\"\n datetime=\"{time[0]}\"\n use:setContent={time[1]}\n ></time>\n {/each}\n</div>\n<div class=\"{$theme.days}\" role=\"row\">\n <div class=\"{$theme.lines}\">{#if lines}{@render lines()}{/if}</div>\n {#if children}\n {@render children()}\n {/if}\n</div>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {observeResize} from '#lib';\n import Section from './Section.svelte';\n\n let {children} = $props();\n\n let {\n _bodyEl, _viewDates, _slotTimeLimits, _times, _recheckScrollable, scrollTime, slotDuration, slotHeight, theme\n } = getContext('state');\n\n let el = $state();\n\n $effect(() => {\n $_bodyEl = el;\n });\n\n $effect(() => {\n $_viewDates;\n $scrollTime;\n untrack(scrollToTime);\n });\n\n function scrollToTime() {\n el.scrollTop = (($scrollTime.seconds - $_slotTimeLimits.min.seconds) / $slotDuration.seconds - 0.5) * $slotHeight;\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.body}\"\n use:observeResize={() => $_recheckScrollable = true}\n>\n <div class=\"{$theme.content}\">\n <Section {children}>\n {#snippet lines()}\n {#each $_times as time}\n <div class=\"{$theme.line}{time[2] ? '' : ' ' + $theme.minor}\"></div>\n {/each}\n {/snippet}\n </Section>\n </div>\n</div>\n","<script>\n import {getContext} from 'svelte';\n import {bgEvent, ghostEvent, helperEvent} from '#lib';\n import {InteractableEvent} from '#components';\n\n let {date, chunk} = $props();\n\n let {slotEventOverlap, slotDuration, slotHeight, _slotTimeLimits} = getContext('state');\n\n let display = $derived(chunk.event.display);\n\n // Style\n let styles = $derived(style => {\n let step = $slotDuration.seconds;\n let offset = $_slotTimeLimits.min.seconds;\n let start = (chunk.start - date) / 1000;\n let end = (chunk.end - date) / 1000;\n let top = (start - offset) / step * $slotHeight;\n let height = (end - start) / step * $slotHeight || $slotHeight;\n let maxHeight = ($_slotTimeLimits.max.seconds - start) / step * $slotHeight;\n style['top'] = `${top}px`;\n style['min-height'] = `${height}px`;\n style['height'] = `${height}px`;\n style['max-height'] = `${maxHeight}px`;\n if (!bgEvent(display) && !helperEvent(display) || ghostEvent(display)) {\n style['z-index'] = `${chunk.column + 1}`;\n style['left'] = `${100 / chunk.group.columns.length * chunk.column}%`;\n style['width'] = `${100 / chunk.group.columns.length * ($slotEventOverlap ? 0.5 * (1 + chunk.group.columns.length - chunk.column) : 1)}%`;\n }\n return style;\n });\n</script>\n\n<InteractableEvent {chunk} {styles} axis=\"y\" />\n","<script>\n import {getContext} from 'svelte';\n\n let {slotDuration, slotHeight, theme, _now, _today, _slotTimeLimits} = getContext('state');\n\n let start = $derived(($_now - $_today) / 1000);\n // Style\n let top = $derived.by(() => {\n let step = $slotDuration.seconds;\n let offset = $_slotTimeLimits.min.seconds;\n return (start - offset) / step * $slotHeight;\n });\n</script>\n\n<div\n class=\"{$theme.nowIndicator}\"\n style=\"top:{top}px\"\n></div>\n","<script>\n import {getContext, onMount} from 'svelte';\n import {\n addDuration, bgEvent, cloneDate, createEventChunk, datesEqual, eventIntersects, floor, outsideRange, rect,\n setPayload\n } from '#lib';\n import {groupEventChunks} from './utils.js';\n import Event from './Event.svelte';\n import NowIndicator from './NowIndicator.svelte';\n\n let {date, resource = undefined} = $props();\n\n let {_filteredEvents, _iEvents, highlightedDates, nowIndicator, slotDuration, slotHeight, filterEventsWithResources,\n theme, resources, validRange, _interaction, _today, _slotTimeLimits} = getContext('state');\n\n let el = $state();\n\n let isToday = $derived(datesEqual(date, $_today));\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n\n let start = $derived(addDuration(cloneDate(date), $_slotTimeLimits.min));\n let end = $derived(addDuration(cloneDate(date), $_slotTimeLimits.max));\n\n let resourceFilter = $derived(resource ?? ($filterEventsWithResources ? $resources : undefined));\n\n let [chunks, bgChunks] = $derived.by(() => {\n if (disabled) {\n return [[], []];\n }\n let chunks = [];\n let bgChunks = [];\n for (let event of $_filteredEvents) {\n if ((!event.allDay || bgEvent(event.display)) && eventIntersects(event, start, end, resourceFilter)) {\n let chunk = createEventChunk(event, start, end);\n switch (event.display) {\n case 'background': bgChunks.push(chunk); break;\n default: chunks.push(chunk);\n }\n }\n }\n groupEventChunks(chunks);\n return [chunks, bgChunks];\n });\n\n let iChunks = $derived.by(() => {\n if (disabled) {\n return [];\n }\n return $_iEvents.map(\n event => event && eventIntersects(event, start, end, resource) ? createEventChunk(event, start, end) : null\n );\n });\n\n function dateFromPoint(x, y) {\n y -= rect(el).top;\n return {\n allDay: false,\n date: addDuration(\n addDuration(cloneDate(date), $_slotTimeLimits.min),\n $slotDuration,\n floor(y / $slotHeight)\n ),\n resource,\n dayEl: el,\n disabled\n };\n }\n\n onMount(() => {\n setPayload(el, dateFromPoint);\n });\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{highlight ? ' ' + $theme.highlight : ''}{disabled ? ' ' + $theme.disabled : ''}\"\n role=\"cell\"\n onpointerdown={!disabled ? $_interaction.action?.select : undefined}\n>\n <div class=\"{$theme.bgEvents}\">\n {#if !disabled}\n {#each bgChunks as chunk (chunk.event)}\n <Event {date} {chunk}/>\n {/each}\n {/if}\n </div>\n <div class=\"{$theme.events}\">\n {#if !disabled}\n <!-- Pointer -->\n {#if iChunks[1]}\n <Event {date} chunk={iChunks[1]}/>\n {/if}\n {#each chunks as chunk (chunk.event)}\n <Event {date} {chunk}/>\n {/each}\n <!-- Drag, Resize & Select -->\n {#if iChunks[0] && !iChunks[0].event.allDay}\n <Event {date} chunk={iChunks[0]}/>\n {/if}\n {/if}\n </div>\n <div class=\"{$theme.extra}\">\n <!-- Now indicator -->\n {#if $nowIndicator && isToday && !disabled}\n <NowIndicator />\n {/if}\n </div>\n</div>\n","<script>\n import {ancestor, bgEvent, height, rect, repositionEvent} from '#lib';\n import {InteractableEvent} from '#components';\n\n let {chunk, longChunks = {}} = $props();\n\n let el = $state();\n let margin = $state(1);\n let event = $derived(chunk.event);\n let display = $derived(chunk.event.display);\n\n // Style\n let styles = $derived(style => {\n if (bgEvent(display)) {\n style['width'] = `calc(${chunk.days * 100}% + ${(chunk.days - 1)}px)`;\n } else {\n style['width'] = `calc(${chunk.days * 100}% + ${(chunk.days - 1) * 7}px)`;\n style['margin-top'] = `${event._margin ?? margin}px`;\n }\n return style;\n });\n\n export function reposition() {\n if (!el) {\n return;\n }\n margin = repositionEvent(chunk, longChunks, height(el));\n }\n</script>\n\n<InteractableEvent\n bind:el\n {chunk}\n {styles}\n axis=\"x\"\n forceMargin={() => rect(el).top - rect(ancestor(el, 1)).top}\n/>\n","<script>\n import {getContext, onMount} from 'svelte';\n import {datesEqual, outsideRange, runReposition, setPayload} from '../../../lib';\n import Event from './Event.svelte';\n\n let {date, chunks, bgChunks, longChunks, iChunks = [], resource = undefined} = $props();\n\n let {highlightedDates, theme, validRange, _interaction, _today} = getContext('state');\n\n let el = $state();\n let refs = [];\n\n let dayChunks = $derived(chunks.filter(chunk => datesEqual(chunk.date, date)));\n let dayBgChunks = $derived(bgChunks.filter(bgChunk => datesEqual(bgChunk.date, date)));\n\n let isToday = $derived(datesEqual(date, $_today));\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n\n // dateFromPoint\n onMount(() => {\n setPayload(el, () => ({\n allDay: true,\n date,\n resource,\n dayEl: el,\n disabled\n }));\n });\n\n export function reposition() {\n if (!disabled) {\n runReposition(refs, dayChunks);\n }\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{highlight ? ' ' + $theme.highlight : ''}{disabled ? ' ' + $theme.disabled : ''}\"\n role=\"cell\"\n onpointerdown={!disabled ? $_interaction.action?.select : undefined}\n>\n <div class=\"{$theme.bgEvents}\">\n {#if !disabled}\n {#each dayBgChunks as chunk (chunk.event)}\n <Event {chunk}/>\n {/each}\n {/if}\n </div>\n <!-- Drag, Resize & Select -->\n {#if iChunks[0] && datesEqual(iChunks[0].date, date) && !disabled}\n <div class=\"{$theme.events} {$theme.preview}\">\n <Event chunk={iChunks[0]}/>\n </div>\n {/if}\n <div class=\"{$theme.events}\">\n {#if !disabled}\n {#each dayChunks as chunk, i (chunk.event)}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Event {chunk} {longChunks} bind:this={refs[i]}/>\n {/each}\n {/if}\n </div>\n</div>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {\n addDay, bgEvent, cloneDate, createEventChunk, eventIntersects, limitToRange, prepareEventChunks, runReposition\n } from '../../../lib';\n import Day from './Day.svelte';\n\n let {dates, resource = undefined} = $props();\n\n let {_filteredEvents, _iEvents, hiddenDays, resources, filterEventsWithResources, validRange } = getContext('state');\n\n let refs = [];\n\n let start = $derived(limitToRange(dates[0], $validRange));\n let end = $derived(addDay(cloneDate(limitToRange(dates.at(-1), $validRange))));\n\n let resourceFilter = $derived(resource ?? (\n $filterEventsWithResources ? $resources : undefined\n ));\n\n let [chunks, bgChunks, longChunks] = $derived.by(() => {\n let chunks = [];\n let bgChunks = [];\n for (let event of $_filteredEvents) {\n if (event.allDay && eventIntersects(event, start, end, resourceFilter)) {\n let chunk = createEventChunk(event, start, end);\n if (bgEvent(event.display)) {\n bgChunks.push(chunk);\n } else {\n chunks.push(chunk);\n }\n }\n }\n prepareEventChunks(bgChunks, $hiddenDays);\n let longChunks = prepareEventChunks(chunks, $hiddenDays);\n return [chunks, bgChunks, longChunks];\n });\n\n function reposition() {\n runReposition(refs, dates);\n }\n $effect(() => {\n chunks;\n untrack(reposition);\n });\n\n let iChunks = $derived($_iEvents.map(event => {\n let chunk;\n if (event && event.allDay && eventIntersects(event, start, end, resource)) {\n chunk = createEventChunk(event, start, end);\n prepareEventChunks([chunk], $hiddenDays);\n } else {\n chunk = null;\n }\n return chunk;\n }));\n</script>\n\n{#each dates as date, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Day {date} {chunks} {bgChunks} {longChunks} {iChunks} {resource} bind:this={refs[i]} />\n{/each}\n\n<svelte:window on:resize={reposition}/>\n","<script>\n import {getContext} from 'svelte';\n import {datesEqual, setContent, toISOString} from '#lib';\n import Section from './Section.svelte';\n import Body from './Body.svelte';\n import Day from './Day.svelte';\n import Week from './all-day/Week.svelte';\n\n let {_viewDates, _intlDayHeader, _intlDayHeaderAL, _today, allDaySlot, theme} = getContext('state');\n</script>\n\n<div class=\"{$theme.header}\">\n <Section>\n {#each $_viewDates as date}\n <div\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{datesEqual(date, $_today) ? ' ' + $theme.today : ''}\"\n role=\"columnheader\"\n >\n <time\n datetime=\"{toISOString(date, 10)}\"\n aria-label=\"{$_intlDayHeaderAL.format(date)}\"\n use:setContent={$_intlDayHeader.format(date)}\n ></time>\n </div>\n {/each}\n </Section>\n <div class=\"{$theme.hiddenScroll}\"></div>\n</div>\n{#if $allDaySlot}\n <div class=\"{$theme.allDay}\">\n <div class=\"{$theme.content}\">\n <Section>\n <Week dates={$_viewDates}/>\n </Section>\n <div class=\"{$theme.hiddenScroll}\"></div>\n </div>\n </div>\n{/if}\n<Body>\n{#each $_viewDates as date}\n <Day {date}/>\n{/each}\n</Body>\n","import {btnTextDay, btnTextWeek, themeView} from '#lib';\nimport {slotTimeLimits, times} from './stores.js';\nimport View from './View.svelte';\n\nexport {default as Section} from './Section.svelte';\nexport {default as Body} from './Body.svelte';\nexport {default as Day} from './Day.svelte';\nexport {default as Week} from './all-day/Week.svelte';\n\nexport default {\n createOptions(options) {\n // Common options\n options.buttonText.timeGridDay = 'day';\n options.buttonText.timeGridWeek = 'week';\n options.view = 'timeGridWeek';\n options.views.timeGridDay = {\n buttonText: btnTextDay,\n component: View,\n dayHeaderFormat: {weekday: 'long'},\n duration: {days: 1},\n theme: themeView('ec-time-grid ec-day-view'),\n titleFormat: {year: 'numeric', month: 'long', day: 'numeric'}\n };\n options.views.timeGridWeek = {\n buttonText: btnTextWeek,\n component: View,\n duration: {weeks: 1},\n theme: themeView('ec-time-grid ec-week-view')\n };\n },\n\n createStores(state) {\n state._slotTimeLimits = slotTimeLimits(state); // flexible limits\n state._times = times(state);\n }\n}\n","<script>\n import {getContext, onMount, untrack} from 'svelte';\n import {setContent, toLocalDate, isFunction} from '#lib';\n\n let {resource, date = undefined, setLabel = undefined} = $props();\n\n let {resourceLabelContent, resourceLabelDidMount, _intlDayHeaderAL} = getContext('state');\n\n let el = $state();\n // Content\n let content = $derived.by(() => {\n if ($resourceLabelContent) {\n return isFunction($resourceLabelContent)\n ? $resourceLabelContent({\n resource,\n date: date ? toLocalDate(date) : undefined,\n })\n : $resourceLabelContent;\n } else {\n return resource.title;\n }\n });\n // Aria-label\n let ariaLabel = $state();\n $effect(() => {\n content;\n untrack(() => {\n if (date) {\n ariaLabel = $_intlDayHeaderAL.format(date) + ', ' + el.innerText;\n } else if (setLabel) {\n ariaLabel = undefined;\n setLabel(el.innerText);\n }\n });\n });\n\n onMount(() => {\n if (isFunction($resourceLabelDidMount)) {\n $resourceLabelDidMount({\n resource,\n date: date ? toLocalDate(date) : undefined,\n el\n });\n }\n });\n</script>\n\n<span\n bind:this={el}\n aria-label=\"{ariaLabel}\"\n use:setContent={content}\n></span>\n","<script>\n import {getContext} from 'svelte';\n import {datesEqual, setContent, toISOString} from '#lib';\n import {Section, Body, Day, Week} from '../time-grid/index.js';\n import Label from './Label.svelte';\n\n let {\n datesAboveResources, _today, _viewDates, _viewResources, _intlDayHeader, _intlDayHeaderAL, allDaySlot, theme\n } = getContext('state');\n\n let loops = $derived($datesAboveResources ? [$_viewDates, $_viewResources] : [$_viewResources, $_viewDates]);\n\n let resourceLabels = $state([]);\n</script>\n\n<div class=\"{$theme.header}\">\n <Section>\n {#each loops[0] as item0, i}\n <div class=\"{$theme.resource}\">\n {#if $datesAboveResources}\n <div class=\"{$theme.day} {$theme.weekdays?.[item0.getUTCDay()]}{datesEqual(item0, $_today) ? ' ' + $theme.today : ''}\">\n <time\n datetime=\"{toISOString(item0, 10)}\"\n aria-label=\"{$_intlDayHeaderAL.format(item0)}\"\n use:setContent={$_intlDayHeader.format(item0)}\n ></time>\n </div>\n {:else}\n <div class=\"{$theme.day}\">\n <Label resource={item0} setLabel={e => resourceLabels[i] = e.detail + ', '} />\n </div>\n {/if}\n {#if loops[1].length > 1}\n <div class=\"{$theme.days}\">\n {#each loops[1] as item1}\n {#if $datesAboveResources}\n <div class=\"{$theme.day}\" role=\"columnheader\">\n <Label resource={item1} date={item0} />\n </div>\n {:else}\n <div\n class=\"{$theme.day} {$theme.weekdays?.[item1.getUTCDay()]}{datesEqual(item1, $_today) ? ' ' + $theme.today : ''}\"\n role=\"columnheader\"\n >\n <time\n datetime=\"{toISOString(item1, 10)}\"\n aria-label=\"{resourceLabels[i]}{$_intlDayHeaderAL.format(item1)}\"\n use:setContent={$_intlDayHeader.format(item1)}\n ></time>\n </div>\n {/if}\n {/each}\n </div>\n {/if}\n </div>\n {/each}\n </Section>\n <div class=\"{$theme.hiddenScroll}\"></div>\n</div>\n{#if $allDaySlot}\n <div class=\"{$theme.allDay}\">\n <div class=\"{$theme.content}\">\n <Section>\n {#if $datesAboveResources}\n {#each $_viewDates as date}\n <div class=\"{$theme.resource}\">\n {#each $_viewResources as resource}\n <Week dates={[date]} {resource}/>\n {/each}\n </div>\n {/each}\n {:else}\n {#each $_viewResources as resource}\n <div class=\"{$theme.resource}\">\n <Week dates={$_viewDates} {resource}/>\n </div>\n {/each}\n {/if}\n </Section>\n <div class=\"{$theme.hiddenScroll}\"></div>\n </div>\n </div>\n{/if}\n<Body>\n{#each loops[0] as item0}\n <div class=\"{$theme.resource}\">\n {#each loops[1] as item1}\n <Day\n date={$datesAboveResources ? item0 : item1}\n resource={$datesAboveResources ? item1 : item0}\n />\n {/each}\n </div>\n{/each}\n</Body>\n","import {btnTextDay, btnTextWeek, themeView, viewResources} from '#lib';\nimport TimeGrid from '../time-grid/index.js';\nimport View from './View.svelte';\n\nexport default {\n createOptions(options) {\n options.datesAboveResources = false;\n // Common options\n options.buttonText.resourceTimeGridDay = 'resources';\n options.buttonText.resourceTimeGridWeek = 'resources';\n options.view = 'resourceTimeGridWeek';\n options.views.resourceTimeGridDay = {\n buttonText: btnTextDay,\n component: View,\n duration: {days: 1},\n theme: themeView('ec-time-grid ec-resource-day-view')\n };\n options.views.resourceTimeGridWeek = {\n buttonText: btnTextWeek,\n component: View,\n duration: {weeks: 1},\n theme: themeView('ec-time-grid ec-resource-week-view')\n };\n },\n\n createStores(state) {\n if (!('_times' in state)) {\n TimeGrid.createStores(state);\n }\n if (!('_viewResources' in state)) {\n state._viewResources = viewResources(state);\n }\n }\n}\n","import {derived} from 'svelte/store';\nimport {createSlotTimeLimits, createTimes, getPayload} from '#lib';\n\n// slotTimeLimits per day\nexport function dayTimeLimits(state) {\n return derived(\n [state.slotMinTime, state.slotMaxTime, state.flexibleSlotTimeLimits, state._viewDates, state._filteredEvents],\n ([$slotMinTime, $slotMaxTime, $flexibleSlotTimeLimits, $_viewDates, $_filteredEvents]) => {\n let dayTimeLimits = {};\n for (let date of $_viewDates) {\n dayTimeLimits[date.getTime()] = createSlotTimeLimits(\n $slotMinTime,\n $slotMaxTime,\n $flexibleSlotTimeLimits,\n [date],\n $_filteredEvents\n );\n }\n\n return dayTimeLimits;\n }\n );\n}\n\nexport function dayTimes(state) {\n return derived(\n [state._viewDates, state.slotDuration, state.slotLabelInterval, state._dayTimeLimits, state._intlSlotLabel],\n ([$_viewDates, $slotDuration, $slotLabelInterval, $_dayTimeLimits, $_intlSlotLabel]) => {\n let dayTimes = {};\n for (let date of $_viewDates) {\n let time = date.getTime();\n dayTimes[time] = time in $_dayTimeLimits\n ? createTimes(date, $slotDuration, $slotLabelInterval, $_dayTimeLimits[time], $_intlSlotLabel)\n : [];\n }\n\n return dayTimes;\n }\n );\n}\n\nexport function nestedResources(state) {\n return derived(state.resources, $resources => $resources.some(resource => getPayload(resource).children.length));\n}\n","<script>\n import {getContext, onMount} from 'svelte';\n import {setContent, toLocalDate, isFunction} from '#lib';\n\n let {resource, date = undefined} = $props();\n\n let {resourceLabelContent, resourceLabelDidMount} = getContext('state');\n\n let el = $state();\n // Content\n let content = $derived.by(() => {\n if ($resourceLabelContent) {\n return isFunction($resourceLabelContent)\n ? $resourceLabelContent({\n resource,\n date: date ? toLocalDate(date) : undefined,\n })\n : $resourceLabelContent;\n } else {\n return resource.title;\n }\n });\n\n onMount(() => {\n if (isFunction($resourceLabelDidMount)) {\n $resourceLabelDidMount({\n resource,\n date: date ? toLocalDate(date) : undefined,\n el\n });\n }\n });\n</script>\n\n<span\n bind:this={el}\n use:setContent={content}\n></span>\n","<script>\n import {getContext} from 'svelte';\n import {getPayload, identity} from '#lib';\n\n let {resource} = $props();\n\n let {resources, theme} = getContext('state');\n\n let payload = $state.raw({});\n let expanded = $state(true);\n\n $effect.pre(() => {\n payload = getPayload(resource);\n expanded = payload.expanded;\n });\n\n function onclick() {\n expanded = !expanded;\n payload.expanded = expanded;\n toggle(payload.children, expanded);\n resources.update(identity);\n }\n\n function toggle(children, expand) {\n for (let child of children) {\n let payload = getPayload(child);\n payload.hidden = !expand;\n if (payload.expanded) {\n toggle(payload.children, expand);\n }\n }\n }\n</script>\n\n{#each Array(payload.level) as level}\n <span class=\"{$theme.expander}\"></span>\n{/each}\n\n<span class=\"{$theme.expander}\">\n {#if payload.children?.length}\n <button class=\"{$theme.button}\" {onclick}>\n {#if expanded}−{:else}+{/if}\n </button>\n {/if}\n</span>\n","<script>\n import {getContext} from 'svelte';\n import {max} from '#lib';\n import Label from './Label.svelte';\n import Expander from './Expander.svelte';\n\n let {_viewResources, _headerHeight, _bodyEl, _resHs, _sidebarEl, _nestedResources, theme} = getContext('state');\n\n function onwheel(jsEvent) {\n $_bodyEl.scrollBy({\n top: jsEvent.deltaY < 0 ? -30 : 30\n });\n }\n</script>\n\n<div class=\"{$theme.sidebar}\">\n <div class=\"{$theme.sidebarTitle}\" style=\"flex-basis: {$_headerHeight}px\"></div>\n <div class=\"{$theme.content}\" bind:this={$_sidebarEl} {onwheel}>\n {#each $_viewResources as resource}\n <div class=\"{$theme.resource}\" style=\"flex-basis: {max($_resHs.get(resource) ?? 0, 34)}px\" role=\"rowheader\">\n {#if $_nestedResources}\n <Expander {resource} />\n {/if}\n <Label {resource}/>\n </div>\n {/each}\n </div>\n</div>\n","<script>\n import {getContext} from 'svelte';\n import {datesEqual, setContent, toISOString, toSeconds, observeResize} from '#lib';\n\n let {_headerEl, _headerHeight, _intlDayHeader, _intlDayHeaderAL, _dayTimes, _today, _viewDates,\n slotDuration, theme} = getContext('state');\n</script>\n\n<div class=\"{$theme.header}\" bind:this={$_headerEl} use:observeResize={() => $_headerHeight = $_headerEl.clientHeight}>\n <div class=\"{$theme.days}\" role=\"row\">\n {#each $_viewDates as date}\n <div class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{datesEqual(date, $_today) ? ' ' + $theme.today : ''}\">\n {#if toSeconds($slotDuration)}\n <div class=\"{$theme.dayHead}\">\n <time\n datetime=\"{toISOString(date, 10)}\"\n aria-label=\"{$_intlDayHeaderAL.format(date)}\"\n use:setContent={$_intlDayHeader.format(date)}\n ></time>\n </div>\n <div class=\"{$theme.times}\">\n {#each $_dayTimes[date.getTime()] as time}\n <div class=\"{$theme.time}{time[2] ? '' : ' ' + $theme.minor}\" role=\"columnheader\">\n <time\n datetime=\"{time[0]}\"\n use:setContent={time[1]}\n ></time>\n </div>\n {/each}\n </div>\n {:else}\n <div class=\"{$theme.time}\" role=\"columnheader\">\n <time\n datetime=\"{toISOString(date, 10)}\"\n aria-label=\"{$_intlDayHeaderAL.format(date)}\"\n use:setContent={$_intlDayHeader.format(date)}\n ></time>\n </div>\n {/if}\n </div>\n {/each}\n </div>\n <div class=\"{$theme.hiddenScroll}\"></div>\n</div>\n","import {addDay, addDuration, cloneDate, createDuration, datesEqual, sortEventChunks, toSeconds} from '#lib';\n\nexport function prepareEventChunks(chunks, $_viewDates, $_dayTimeLimits, $slotDuration) {\n let longChunks = {};\n let filteredChunks = [];\n\n if (chunks.length) {\n sortEventChunks(chunks);\n\n let step = toSeconds($slotDuration);\n let prevChunk;\n for (let chunk of chunks) {\n let prevDayEnd;\n if (step) {\n let slots = 0;\n for (let i = 0; i < $_viewDates.length; ++i) {\n let slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, $_viewDates[i]);\n let dayStart = addDuration(cloneDate($_viewDates[i]), slotTimeLimits.min);\n let dayEnd = addDuration(cloneDate($_viewDates[i]), slotTimeLimits.max);\n if (!chunk.date) {\n if (chunk.start < dayEnd && chunk.end > dayStart) {\n // The first day is found\n chunk.date = $_viewDates[i];\n if (chunk.start < dayStart) {\n // Adjust chunk start\n chunk.start = dayStart;\n }\n // Calculate offset\n chunk.offset = (chunk.start - dayStart) / 1000 / step;\n // Calculate slots\n if (chunk.end > dayEnd) {\n slots += dayEnd - chunk.start;\n } else {\n slots += chunk.end - chunk.start || step * 1000;\n break;\n }\n }\n } else {\n if (chunk.end <= dayStart) {\n // Adjust chunk end\n chunk.end = prevDayEnd;\n break;\n }\n // The chunk is long one\n let key = $_viewDates[i].getTime();\n if (longChunks[key]) {\n longChunks[key].push(chunk);\n } else {\n longChunks[key] = [chunk];\n }\n // Calculate slots\n if (chunk.end > dayEnd) {\n slots += dayEnd - dayStart;\n } else {\n slots += chunk.end - dayStart;\n break;\n }\n }\n prevDayEnd = dayEnd;\n }\n chunk.slots = slots / 1000 / step;\n } else {\n // Month view\n let days = 0;\n for (let i = 0; i < $_viewDates.length; ++i) {\n let dayStart = $_viewDates[i];\n let dayEnd = addDay(cloneDate(dayStart));\n if (!chunk.date) {\n if (chunk.start < dayEnd) {\n // The first day is found\n chunk.date = dayStart;\n if (chunk.start < dayStart) {\n // Adjust chunk start\n chunk.start = dayStart;\n }\n ++days;\n }\n } else {\n if (chunk.end <= dayStart) {\n // Adjust chunk end\n chunk.end = prevDayEnd;\n break;\n }\n // The chunk is long one\n let key = dayStart.getTime();\n if (longChunks[key]) {\n longChunks[key].push(chunk);\n } else {\n longChunks[key] = [chunk];\n }\n ++days;\n }\n prevDayEnd = dayEnd;\n }\n chunk.days = days;\n }\n\n if (!chunk.date) {\n // Chunk is outside the slot time limits, so skip it\n continue;\n }\n\n if (prevChunk && datesEqual(prevChunk.date, chunk.date)) {\n chunk.prev = prevChunk;\n }\n prevChunk = chunk;\n filteredChunks.push(chunk);\n }\n }\n\n return [filteredChunks, longChunks];\n}\n\nexport function repositionEvent(chunk, dayChunks, longChunks, height, allDay) {\n chunk.top = 0;\n chunk.bottom = height;\n let margin = 1;\n let key = chunk.date.getTime();\n longChunks = longChunks?.[key] ?? [];\n let chunks = [...dayChunks, ...longChunks];\n chunks.sort((a, b) => (a.top ?? 0) - (b.top ?? 0) || a.start - b.start || b.event.allDay - a.event.allDay);\n for (let dayChunk of chunks) {\n if (dayChunk === chunk) {\n continue;\n }\n if ((allDay || chunk.start < dayChunk.end && chunk.end > dayChunk.start) && chunk.top < dayChunk.bottom && chunk.bottom > dayChunk.top) {\n let offset = dayChunk.bottom - chunk.top + 1;\n margin += offset;\n chunk.top += offset;\n chunk.bottom += offset;\n }\n }\n\n return margin;\n}\n\nexport function getSlotTimeLimits($_dayTimeLimits, date) {\n return $_dayTimeLimits[date.getTime()] ?? {min: createDuration(0), max: createDuration(0)};\n}\n","<script>\n import {getContext} from 'svelte';\n import {height, helperEvent, toSeconds} from '#lib';\n import {repositionEvent} from './lib.js';\n import {InteractableEvent} from '#components';\n\n let {chunk, dayChunks = [], longChunks = {}, resource = undefined} = $props();\n\n let {slotDuration, slotWidth} = getContext('state');\n\n let el = $state();\n let margin = $state(helperEvent(chunk.event.display) ? 1 : 0);\n let event = $derived(chunk.event);\n // Style\n let width = $derived('slots' in chunk ? chunk.slots * $slotWidth : chunk.days * 100);\n let styles = $derived(style => {\n if ('slots' in chunk) {\n let left = chunk.offset * $slotWidth;\n style['left'] = `${left}px`;\n style['width'] = `${width}px`;\n } else {\n // Month view\n style['width'] = `${width}%`;\n }\n let marginTop = margin;\n if (event._margin) {\n // Force margin for helper events\n let [_margin, _resource] = event._margin;\n if (resource === _resource) {\n marginTop = _margin;\n }\n }\n style['margin-top'] = `${marginTop}px`;\n return style;\n });\n\n export function reposition() {\n if (!el) {\n return 0;\n }\n let h = height(el);\n margin = repositionEvent(chunk, dayChunks, longChunks, h, !toSeconds($slotDuration));\n return margin + h;\n }\n</script>\n\n{#if width > 0}\n <InteractableEvent bind:el {chunk} {styles} axis=\"x\" forceMargin={() => [margin, resource]} />\n{/if}\n","<script>\n import {getContext} from 'svelte';\n import {\n addDuration, ceil, cloneDate, datesEqual, floor, max, outsideRange, rect, runReposition, setPayload, toSeconds\n } from '#lib';\n import {getSlotTimeLimits} from './lib.js';\n import Event from './Event.svelte';\n\n let {date, resource, chunks, bgChunks, longChunks, iChunks = []} = $props();\n\n let {\n highlightedDates, slotDuration, slotWidth, theme, validRange, _interaction, _today, _dayTimeLimits\n } = getContext('state');\n\n let el = $state();\n let refs = [];\n\n let isToday = $derived(datesEqual(date, $_today));\n let highlight = $derived($highlightedDates.some(d => datesEqual(d, date)));\n let disabled = $derived(outsideRange(date, $validRange));\n\n let slotTimeLimits = $derived(getSlotTimeLimits($_dayTimeLimits, date));\n let allDay = $derived(!toSeconds($slotDuration));\n let pointerIdx = $derived(allDay ? 2 : 1);\n\n let dayChunks = $derived(chunks.filter(chunkIntersects));\n let dayBgChunks = $derived(bgChunks.filter(bgChunk => (!allDay || bgChunk.event.allDay) && chunkIntersects(bgChunk)));\n\n function chunkIntersects(chunk) {\n return datesEqual(chunk.date, date);\n }\n\n function dateFromPoint(x, y) {\n x -= rect(el).left;\n return {\n allDay,\n date: allDay\n ? cloneDate(date)\n : addDuration(\n addDuration(cloneDate(date), slotTimeLimits.min),\n $slotDuration,\n floor(x / $slotWidth)\n ),\n resource,\n dayEl: el,\n disabled\n };\n }\n $effect(() => {\n setPayload(el, dateFromPoint);\n });\n\n export function reposition() {\n return max(...runReposition(refs, dayChunks));\n }\n</script>\n\n<div\n bind:this={el}\n class=\"{$theme.day} {$theme.weekdays?.[date.getUTCDay()]}{isToday ? ' ' + $theme.today : ''}{highlight ? ' ' + $theme.highlight : ''}{disabled ? ' ' + $theme.disabled : ''}\"\n style=\"flex-grow: {allDay ? null : ceil((toSeconds(slotTimeLimits.max) - toSeconds(slotTimeLimits.min)) / toSeconds($slotDuration))}\"\n role=\"cell\"\n onpointerdown={$_interaction.action?.select}\n>\n <div class=\"{$theme.events}\">\n {#if !disabled}\n {#each dayBgChunks as chunk (chunk.event)}\n <Event {chunk}/>\n {/each}\n <!-- Pointer -->\n {#if iChunks[pointerIdx] && chunkIntersects(iChunks[pointerIdx])}\n <Event chunk={iChunks[pointerIdx]}/>\n {/if}\n {#each dayChunks as chunk, i (chunk.event)}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Event {chunk} {dayChunks} {longChunks} {resource} bind:this={refs[i]}/>\n {/each}\n <!-- Drag, Resize & Select -->\n {#if iChunks[0] && chunkIntersects(iChunks[0])}\n <Event chunk={iChunks[0]} {resource}/>\n {/if}\n {/if}\n </div>\n</div>\n","<script>\n import {getContext} from 'svelte';\n import {\n addDay, addDuration, bgEvent, ceil, cloneDate, createEventChunk, DAY_IN_SECONDS, eventIntersects,\n limitToRange, max, runReposition\n } from '#lib';\n import {getSlotTimeLimits, prepareEventChunks} from './lib.js';\n import Day from './Day.svelte';\n\n let {resource} = $props();\n\n let {\n _viewDates, _filteredEvents, _iEvents, _resHs, _dayTimeLimits, slotDuration, theme, validRange\n } = getContext('state');\n\n let refs = [];\n let height = $state(0);\n\n let [start, end] = $derived.by(() => {\n let start = cloneDate(limitToRange($_viewDates[0], $validRange));\n let end = cloneDate(limitToRange($_viewDates.at(-1), $validRange));\n let slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, start);\n addDuration(start, slotTimeLimits.min);\n slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, end);\n if (slotTimeLimits.max.seconds > DAY_IN_SECONDS) {\n addDuration(end, slotTimeLimits.max) /** @see https://github.com/vkurko/calendar/issues/333 */\n } else {\n addDay(end);\n }\n return [start, end];\n });\n\n let [chunks, bgChunks, longChunks] = $derived.by(() => {\n let chunks = [];\n let bgChunks = [];\n let longChunks;\n for (let event of $_filteredEvents) {\n if (eventIntersects(event, start, end, resource)) {\n let chunk = createEventChunk(event, start, end);\n if (bgEvent(event.display)) {\n bgChunks.push(chunk);\n } else {\n chunks.push(chunk);\n }\n }\n }\n [bgChunks] = prepareEventChunks(bgChunks, $_viewDates, $_dayTimeLimits, $slotDuration);\n [chunks, longChunks] = prepareEventChunks(chunks, $_viewDates, $_dayTimeLimits, $slotDuration);\n return [chunks, bgChunks, longChunks];\n });\n\n let iChunks = $derived($_iEvents.map(event => {\n let chunk;\n if (event && eventIntersects(event, start, end, resource)) {\n chunk = createEventChunk(event, start, end);\n [[chunk]] = prepareEventChunks([chunk], $_viewDates, $_dayTimeLimits, $slotDuration);\n } else {\n chunk = null;\n }\n return chunk;\n }));\n\n export function reposition() {\n height = ceil(max(...runReposition(refs, $_viewDates))) + 10;\n $_resHs.set(resource, height);\n $_resHs = $_resHs;\n }\n</script>\n\n<div class=\"{$theme.days}\" style=\"flex-basis: {max(height, 34)}px\" role=\"row\">\n {#each $_viewDates as date, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Day {date} {resource} {chunks} {bgChunks} {longChunks} {iChunks} bind:this={refs[i]}/>\n {/each}\n</div>\n","<script>\n import {getContext, untrack} from 'svelte';\n import {observeResize, runReposition, toSeconds} from '#lib';\n import {getSlotTimeLimits} from './lib.js';\n import Days from './Days.svelte';\n\n let {_bodyEl, _bodyHeight, _bodyWidth, _bodyScrollLeft, _headerEl, _filteredEvents, _sidebarEl, _dayTimes, _dayTimeLimits,\n _recheckScrollable, _resHs, _viewResources, _viewDates, scrollTime, slotDuration, slotWidth, theme} = getContext('state');\n\n let refs = [];\n\n function scrollToTime() {\n let slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, $_viewDates[0]);\n $_bodyEl.scrollLeft = (toSeconds($scrollTime) - toSeconds(slotTimeLimits.min)) / toSeconds($slotDuration) * $slotWidth;\n $_bodyScrollLeft = $_bodyEl.scrollLeft;\n }\n $effect(() => {\n $_viewDates;\n $scrollTime;\n untrack(scrollToTime);\n });\n\n function reposition() {\n $_resHs.clear();\n runReposition(refs, $_viewResources);\n }\n $effect(() => {\n $_filteredEvents;\n $_viewResources;\n untrack(reposition);\n });\n\n function onscroll() {\n $_headerEl.scrollLeft = $_bodyEl.scrollLeft;\n $_sidebarEl.scrollTop = $_bodyEl.scrollTop;\n $_bodyScrollLeft = $_bodyEl.scrollLeft;\n }\n\n function onresize() {\n $_bodyHeight = $_bodyEl.clientHeight;\n $_bodyWidth = $_bodyEl.clientWidth;\n $_recheckScrollable = true;\n }\n</script>\n\n<div\n bind:this={$_bodyEl}\n class=\"{$theme.body}\"\n {onscroll}\n use:observeResize={onresize}\n>\n <div class=\"{$theme.content}\">\n <div class=\"{$theme.lines}\">\n {#each $_viewDates as date}\n {#each $_dayTimes[date.getTime()] as time}\n <div class=\"{$theme.line}{time[2] ? '' : ' ' + $theme.minor}\"></div>\n {/each}\n {/each}\n </div>\n {#each $_viewResources as resource, i}\n <!-- svelte-ignore binding_property_non_reactive -->\n <Days {resource} bind:this={refs[i]}/>\n {/each}\n </div>\n</div>\n\n<svelte:window on:resize={reposition}/>\n","<script>\n import {getContext} from 'svelte';\n import {addDuration, cloneDate, datesEqual} from '#lib';\n import {getSlotTimeLimits} from './lib.js';\n\n let {slotDuration, slotWidth, theme, _bodyHeight, _bodyWidth, _bodyScrollLeft,\n _headerHeight, _dayTimeLimits, _now, _today, _viewDates} = getContext('state');\n\n // Style\n let left = $derived.by(() => {\n let offset = 0;\n for (let i = 0; i < $_viewDates.length; ++i) {\n let slotTimeLimits = getSlotTimeLimits($_dayTimeLimits, $_viewDates[i]);\n if (datesEqual($_viewDates[i], $_today)) {\n let dayStart = addDuration(cloneDate($_viewDates[i]), slotTimeLimits.min);\n let dayEnd = addDuration(cloneDate($_viewDates[i]), slotTimeLimits.max);\n if ($_now >= dayStart && $_now <= dayEnd) {\n offset += ($_now - dayStart) / 1000;\n break;\n } else {\n return null;\n }\n } else {\n offset += slotTimeLimits.max.seconds - slotTimeLimits.min.seconds;\n }\n }\n let step = $slotDuration.seconds;\n return offset / step * $slotWidth - $_bodyScrollLeft;\n });\n</script>\n\n{#if left !== null && left >= 3 && left <= $_bodyWidth - 3}\n <div\n class=\"{$theme.nowIndicator}\"\n style:top=\"{$_headerHeight+2}px\"\n style:left=\"{left}px\"\n style:height=\"{$_bodyHeight-1}px\"\n ></div>\n{/if}\n","<script>\n import {getContext} from 'svelte';\n import Sidebar from './Sidebar.svelte';\n import Header from './Header.svelte';\n import Body from './Body.svelte';\n import NowIndicator from './NowIndicator.svelte';\n\n let {nowIndicator, theme} = getContext('state');\n</script>\n\n<div class=\"{$theme.container}\">\n <Sidebar/>\n <div class=\"{$theme.main}\">\n <Header/>\n <Body/>\n {#if $nowIndicator}\n <NowIndicator/>\n {/if}\n </div>\n</div>\n","import {writable} from 'svelte/store';\nimport {btnTextDay, btnTextMonth, btnTextWeek, themeView, viewResources} from '#lib';\nimport {dayTimeLimits, dayTimes, nestedResources} from './stores.js';\nimport View from './View.svelte';\n\nexport default {\n\tcreateOptions(options) {\n\t\t// Common options\n\t\toptions.buttonText.resourceTimelineDay = 'timeline';\n\t\toptions.buttonText.resourceTimelineWeek = 'timeline';\n\t\toptions.buttonText.resourceTimelineMonth = 'timeline';\n\t\toptions.theme.expander = 'ec-expander';\n\t\toptions.theme.main = 'ec-main';\n\t\toptions.theme.times = 'ec-times';\n\t\toptions.theme.container = 'ec-container';\n\t\toptions.view = 'resourceTimelineWeek';\n\t\toptions.views.resourceTimelineDay = {\n\t\t\tbuttonText: btnTextDay,\n\t\t\tcomponent: View,\n\t\t\tdisplayEventEnd: false,\n\t\t\tdayHeaderFormat: {weekday: 'long'},\n\t\t\tduration: {days: 1},\n\t\t\tslotDuration: '01:00',\n\t\t\ttheme: themeView('ec-timeline ec-resource-day-view'),\n\t\t\ttitleFormat: {year: 'numeric', month: 'long', day: 'numeric'}\n\t\t};\n\t\toptions.views.resourceTimelineWeek = {\n\t\t\tbuttonText: btnTextWeek,\n\t\t\tcomponent: View,\n\t\t\tdisplayEventEnd: false,\n\t\t\tduration: {weeks: 1},\n\t\t\tslotDuration: '01:00',\n\t\t\ttheme: themeView('ec-timeline ec-resource-week-view')\n\t\t};\n\t\toptions.views.resourceTimelineMonth = {\n\t\t\tbuttonText: btnTextMonth,\n\t\t\tcomponent: View,\n\t\t\tdisplayEventEnd: false,\n\t\t\tdayHeaderFormat: {\n\t\t\t\tweekday: 'short',\n\t\t\t\tday: 'numeric'\n\t\t\t},\n\t\t\tduration: {months: 1},\n\t\t\tslotDuration: {days: 1},\n\t\t\ttheme: themeView('ec-timeline ec-resource-month-view'),\n\t\t\ttitleFormat: {year: 'numeric', month: 'long'}\n\t\t};\n\t},\n\n\tcreateStores(state) {\n\t\tif (!('_viewResources' in state)) {\n\t\t\tstate._viewResources = viewResources(state);\n\t\t}\n\t\tstate._bodyHeight = writable(0);\n\t\tstate._bodyWidth = writable(0);\n\t\tstate._bodyScrollLeft = writable(0);\n\t\tstate._headerEl = writable(undefined);\n\t\tstate._headerHeight = writable(0);\n\t\tstate._dayTimeLimits = dayTimeLimits(state); // flexible time limits per day\n\t\tstate._dayTimes = dayTimes(state);\n\t\tstate._nestedResources = nestedResources(state);\n\t\tstate._resHs = writable(new Map()); // resource row heights\n\t\tstate._sidebarEl = writable(undefined);\n\t}\n}\n","import {mount, unmount} from 'svelte';\nimport {Calendar} from './index.svelte.js';\n\nexport function createCalendar(target, plugins, options) {\n return mount(Calendar, {\n target,\n props: {\n plugins,\n options\n }\n });\n}\n\nexport function destroyCalendar(calendar) {\n return unmount(calendar);\n}\n\nexport {\n DayGrid,\n Interaction,\n List,\n ResourceTimeGrid,\n ResourceTimeline,\n TimeGrid\n} from './index.svelte.js';\n","import {createCalendar, DayGrid, Interaction, List, ResourceTimeGrid, ResourceTimeline, TimeGrid} from './index.es.js';\n\nexport function create(target, options) {\n return createCalendar(target, [\n DayGrid,\n Interaction,\n List,\n ResourceTimeGrid,\n ResourceTimeline,\n TimeGrid\n ], options);\n}\n\nexport {destroyCalendar as destroy} from './index.es.js';\n"],"names":["is_array","index_of","array_from","define_property","get_descriptor","get_descriptors","object_prototype","array_prototype","get_prototype_of","is_extensible","noop","run","fn","run_all","arr","i","to_array","value","n","array","element","DERIVED","EFFECT","RENDER_EFFECT","BLOCK_EFFECT","BRANCH_EFFECT","ROOT_EFFECT","BOUNDARY_EFFECT","UNOWNED","DISCONNECTED","CLEAN","DIRTY","MAYBE_DIRTY","INERT","DESTROYED","EFFECT_RAN","EFFECT_TRANSPARENT","LEGACY_DERIVED_PROP","INSPECT_EFFECT","HEAD_EFFECT","EFFECT_HAS_DERIVED","EFFECT_IS_UPDATING","STATE_SYMBOL","LEGACY_PROPS","LOADING_ATTR_SYMBOL","equals","safe_not_equal","a","b","safe_equals","effect_in_teardown","rune","effect_in_unowned_derived","effect_orphan","effect_update_depth_exceeded","props_invalid_value","key","state_descriptors_fixed","state_prototype_fixed","state_unsafe_mutation","legacy_mode_flag","tracing_mode_flag","enable_legacy_mode_flag","EACH_ITEM_REACTIVE","EACH_INDEX_REACTIVE","EACH_IS_CONTROLLED","EACH_IS_ANIMATED","EACH_ITEM_IMMUTABLE","PROPS_IS_IMMUTABLE","PROPS_IS_RUNES","PROPS_IS_UPDATED","PROPS_IS_BINDABLE","PROPS_IS_LAZY_INITIAL","TEMPLATE_FRAGMENT","TEMPLATE_USE_IMPORT_NODE","UNINITIALIZED","NAMESPACE_HTML","lifecycle_outside_component","name","component_context","set_component_context","context","getContext","get_or_init_context_map","setContext","push","props","runes","ctx","source","teardown","pop","component","context_stack_item","component_effects","previous_effect","active_effect","previous_reaction","active_reaction","component_effect","set_active_effect","set_active_reaction","effect","is_runes","get_parent_context","parent","context_map","proxy","prototype","sources","is_proxied_array","version","reaction","with_parent","result","_","prop","descriptor","e.state_descriptors_fixed","s","set","target","update_version","ls","receiver","exists","_a","p","v","get","has","other_s","own_keys","e.state_prototype_fixed","signal","d","derived","flags","parent_derived","user_derived","push_reaction_value","derived_safe_equal","destroy_derived_effects","effects","destroy_effect","get_derived_parent_effect","execute_derived","prev_active_effect","update_reaction","update_derived","increment_write_version","is_destroying_effect","status","skip_reaction","set_signal_status","old_values","stack","state","mutable_source","initial_value","immutable","trackable","should_proxy","untracking","reaction_sources","e.state_unsafe_mutation","new_value","internal_set","old_value","mark_reactions","untracked_writes","set_untracked_writes","reactions","length","schedule_effect","hydrating","$window","is_firefox","first_child_getter","next_sibling_getter","init_operations","element_prototype","node_prototype","text_prototype","create_text","get_first_child","node","get_next_sibling","child","is_text","first_child","fragment","first","sibling","count","next_sibling","clear_text_content","validate_effect","e.effect_orphan","e.effect_in_unowned_derived","e.effect_in_teardown","push_effect","parent_effect","parent_last","create_effect","type","sync","update_effect","e","inert","user_effect","defer","user_pre_effect","render_effect","component_root","options","fulfil","pause_effect","legacy_pre_effect","deps","token","untrack","legacy_pre_effect_reset","check_dirtiness","template_effect","thunks","deriveds","block","branch","execute_effect_teardown","previously_destroying_effect","set_is_destroying_effect","destroy_effect_children","remove_dom","next","destroy_block_effect_children","removed","remove_effect_dom","remove_reactions","transitions","transition","unlink_effect","end","prev","callback","pause_children","run_out_transitions","remaining","check","local","transparent","resume_effect","resume_children","micro_tasks","idle_tasks","run_micro_tasks","tasks","run_idle_tasks","queue_micro_task","flush_tasks","handle_error","error","invoke_error_boundary","is_flushing","last_scheduled_effect","is_updating_effect","queued_root_effects","dev_effect_stack","new_deps","skipped_deps","write_version","read_version","dependencies","is_unowned","dependency","is_disconnected","is_unowned_connected","schedule_possible_effect_self_invalidation","root","previous_deps","previous_skipped_deps","previous_untracked_writes","previous_skip_reaction","previous_reaction_sources","previous_component_context","previous_untracking","remove_reaction","index","new_length","start_index","was_updating_effect","dep","infinite_loop_guard","e.effect_update_depth_exceeded","flush_queued_root_effects","flush_count","root_effects","collected_effects","process_effects","flush_queued_effects","is_branch","is_skippable_branch","flushSync","tick","is_derived","STATUS_MASK","deep_read_state","deep_read","visited","proto","descriptors","PASSIVE_EVENTS","is_passive_event","without_reactive_context","all_registered_events","root_event_handles","create_event","event_name","dom","handler","target_handler","event","handle_event_propagation","capture","passive","delegate","events","handler_element","owner_document","path","current_target","path_idx","handled_at","at_idx","handler_idx","throw_error","other_errors","parent_element","delegated","data","create_fragment_from_html","html","elem","assign_nodes","start","from_html","content","is_fragment","use_import_node","has_start","clone","text","comment","frag","anchor","append","set_text","str","mount","_mount","document_listeners","Component","intro","registered_events","event_handle","unmount","anchor_node","mounted_components","if_block","root_index","hydrate_index","consequent_effect","alternate_effect","condition","has_branch","set_branch","flag","update_branch","new_condition","pause_effects","items","controlled_anchor","items_map","is_controlled","parent_node","link","item","each","get_collection","get_key","render_fn","fallback_fn","fallback","was_empty","each_array","collection","reconcile","is_animated","should_update","current","seen","to_animate","matched","stashed","child_anchor","create_item","update_item","_b","j","move","to_destroy","destroy_length","_c","_d","reactive","mutable","dest","next_node","snippet","get_snippet","args","snippet_effect","get_component","action","get_value","payload","inited","r","f","o","clsx","_clsx","to_class","hash","directives","classname","append_styles","styles","important","separator","css","to_css_name","to_style","new_style","normal_styles","important_styles","in_str","in_apo","in_comment","reserved_names","name_index","len","property","set_class","is_html","prev_classes","next_classes","next_class_name","update_styles","priority","set_style","prev_styles","next_styles","next_style_attr","IS_CUSTOM_ELEMENT","IS_HTML","set_attribute","attribute","skip_warning","attributes","get_attributes","get_setters","setters_cache","setters","element_proto","bind_prop","desc","is_bound_this","bound_value","element_or_component","bind_this","update","get_parts","old_parts","parts","init","callbacks","changed","observe_all","fns","subscribe_to_store","store","invalidate","unsub","subscriber_queue","readable","writable","stop","subscribers","run_queue","subscriber","subscribe","stores","single","stores_array","auto","started","values","pending","cleanup","unsubscribers","is_store_binding","IS_UNMOUNTED","store_get","store_name","entry","is_synchronous_callback","get_store","store_set","setup_stores","store_mutate","expression","capture_store_binding","previous_is_store_binding","has_destroyed_component_ctx","current_value","bindable","lazy","is_store_sub","prop_value","is_entry_props","setter","fallback_value","fallback_dirty","fallback_used","get_fallback","e.props_invalid_value","getter","derived_getter","legacy_parent","mutation","from_child","inner_current_value","parent_value","child_value","onMount","init_update_callbacks","l","PUBLIC_VERSION","increment","keyEnter","setContent","actions","outsideEvent","handlePointerDown","jsEvent","observeResize","resizeObserver","entries","DAY_IN_SECONDS","createDate","input","_fromLocalDate","_fromISOString","createDuration","seconds","exp","part","weeks","cloneDate","date","addDuration","duration","x","month","subtractDay","subtractDuration","addDay","setMidnight","toLocalDate","toISOString","datesEqual","date1","dates2","date2","nextClosestDay","day","diff","prevClosestDay","noTimePart","copyTime","toDate","fromDate","toSeconds","nextDate","prevDate","hiddenDays","getWeekNumber","firstDay","yearStart","assign","keys","object","floor","ceil","min","max","symbol","isArray","isFunction","runAll","identity","stopPropagation","debounce","handle","queueStore","queue","flushDebounce","task","payloadProp","setPayload","obj","hasPayload","getPayload","createElement","tag","className","attrs","el","attr","hasYScroll","rect","ancestor","up","height","getElementWithPayload","y","processed","shadowEl","listen","createView","view","_viewTitle","_currentRange","_activeRange","toViewWithLocalDates","listView","timelineView","eventId","createEvents","toArrayProp","propName","createEventSources","createEventChunk","chunk","sortEventChunks","chunks","createEventContent","displayEventEnd","eventContent","theme","_intlEventTime","_view","timeText","toEventWithLocalDates","domNodes","createTimeElement","createEventClasses","eventClassNames","_cloneEvent","cloneEvent","dateFn","prepareEventChunks","longChunks","prevChunk","dates","maxEnd","repositionEvent","margin","longChunk","offset","runReposition","refs","ref","eventIntersects","resources","resource","helperEvent","display","previewEvent","ghostEvent","pointerEvent","bgEvent","btnTextDay","btnText","btnTextWeek","btnTextMonth","btnTextYear","period","themeView","createDateRange","outsideRange","range","limitToRange","createResources","_createResources","level","flat","createResource","resourceBackgroundColor","findResource","resourceTextColor","intl","locale","format","$locale","$format","intlRange","formatRange","_getParts","viewResources","$resources","$filterResourcesWithEvents","$_filteredEvents","$_activeRange","createTimes","$slotDuration","$slotLabelInterval","$_slotTimeLimits","$_intlSlotLabel","times","label","createSlotTimeLimits","$slotMinTime","$slotMaxTime","$flexibleSlotTimeLimits","$_viewDates","minMin","minFn","maxFn","maxMax","filter","loop","minStart","createOptions","plugins","plugin","createParsers","parsers","days","prevOptions","dayGrid","$view","activeRange","$_currentRange","$firstDay","$_dayGrid","start2","currentRange","$date","$duration","viewDates","$hiddenDays","viewTitle","$_intlTitle","_events","abortController","fetching","debounceHandle","$events","$eventSources","$_fetchedRange","$lazyFetching","$loading","stopLoading","failure","success","startStr","endStr","params","url","headers","body","response","filteredEvents","$_view","$_events","$eventFilter","now","interval","today","$_now","State","parseOpts","option","view2","validKey","views","defOpts","mergeOpts","opts","filterOpts","_set","rest","newView","override","buttons","$.prop","$$props","_viewDates","buttonText","customButtons","validRange","prevDisabled","$.mutable_source","nextDisabled","todayDisabled","running","isRunning","test","$validRange","$.store_set","$.set","currentDate","$.each","button","$_viewTitle","$.untrack","$theme","$buttonText","$.event","button_3","$customButtons","$.get","$$args","$$render","consequent_5","consequent_3","alternate_3","consequent_2","alternate_2","consequent_1","alternate_1","consequent","alternate","headerToolbar","sections","$.derived","$headerToolbar","group","$.index","$$anchor","$.template_effect","$.set_class","div_1","nav","datesSet","eventAllUpdated","_auxiliary","_filteredEvents","_scrollable","_bodyEl","_tasks","_recheckScrollable","_queue","$.user_effect","$datesSet","$eventAllUpdated","$_queue","$_recheckScrollable","$_bodyEl","$_auxiliary","_viewComponent","_interaction","_iClass","setOption","getOption","refetchEvents","getEvents","getEventById","id","addEvent","updateEvent","idx","$.store_mutate","removeEventById","getView","unselect","$_interaction","dateFromPoint","dayEl","info","View","$_viewComponent","$_scrollable","$_iClass","$height","_intlDayHeader","_intlDayHeaderAL","_days","$_days","$_intlDayHeader","div_2","$0","$_intlDayHeaderAL","div","div_3","read_methods","set_like_methods","_SvelteSet","__privateAdd","_SvelteSet_instances","_sources","_version","_size","__privateGet","__privateMethod","init_fn","deleted","set_proto","method","SvelteSet","classes","eventBackgroundColor","eventColor","eventClick","eventDidMount","eventMouseEnter","eventMouseLeave","eventTextColor","bgColor","$eventBackgroundColor","$eventColor","txtColor","$eventTextColor","style","classNames","$eventClassNames","$displayEventEnd","$eventContent","$_intlEventTime","$$array","$eventDidMount","createHandler","onclick","$eventClick","onkeydown","onmouseenter","$eventMouseEnter","onmouseleave","$eventMouseLeave","$.clsx","defaultBody","$.bind_this","article","$$value","_iClasses","$_iClasses","createDragHandler","onpointerdown","Resizer","$.noop","inPopup","dayMaxEvents","_hiddenEvents","_popupDate","$.state","hidden","marginTop","_margin","_dates","reposition","$dayMaxEvents","hide","h","footHeight","hiddenEvents","$_hiddenEvents","size","$_popupDate","_intlDayPopover","_popupChunks","position","bodyEl","popupRect","dayRect","bodyRect","left","right","top","bottom","$_popupChunks","close","handlePointerDownOutside","$_intlDayPopover","event_handler_1","event_handler_2","$.set_attribute","iChunks","highlightedDates","moreLinkContent","weekNumbers","weekNumberContent","_intlDayCell","_today","$.user_pre_effect","isToday","$_today","otherMonth","$currentDate","highlight","$highlightedDates","disabled","dayBgChunks","bgChunk","dayChunks","moreLink","$moreLinkContent","showMore","showPopup","setPopupChunks","nextDay","showWeekNumber","$weekNumbers","weekNumber","week","$weekNumberContent","$.action","time","$$node","$$action_arg","$_intlDayCell","span","node_2","div_4","consequent_4","node_9","consequent_6","event_handler","consequent_7","div_5","div_6","_iEvents","filterEventsWithResources","$$d","bgChunks","$filterEventsWithResources","$_iEvents","DayGrid","eventDraggable","$eventStartEditable","$editable","eventResizable","$eventDurationEditable","busy","animate","limit","minLimit","maxLimit","_dayGrid","datesAboveResources","dateClick","dragConstraint","dragScroll","editable","eventStartEditable","eventDragMinDistance","eventDragStart","eventDragStop","eventDrop","eventLongPressDelay","eventResizeStart","eventResizeStop","eventResize","longPressDelay","resizeConstraint","selectable","selectFn","selectBackgroundColor","selectConstraint","selectLongPressDelay","selectMinDistance","slotDuration","slotHeight","slotWidth","unselectFn","unselectAuto","unselectCancel","ACTION_DRAG","ACTION_RESIZE_END","ACTION_RESIZE_START","ACTION_SELECT","ACTION_CLICK","ACTION_NO_ACTION","interacting","newDate","newResource","fromX","fromY","toX","toY","clipEl","clipRect","delta","allDay","iClass","minResize","selectStep","selected","noDateClick","timer","viewport","extraDuration","draggable","drag","eventToDrag","forceDate","forceMargin","validJsEvent","complexAction","common","resize","eventToResize","axis","zeroDuration","resizingStart","select","$selectable","noAction","dragging","$datesAboveResources","calcViewport","selecting","$selectLongPressDelay","$eventLongPressDelay","$longPressDelay","distance","$selectMinDistance","$eventDragMinDistance","createIEventSelect","createIEvent","resizing","$eventResizeStart","$eventDragStart","findPayload","findDayEl","newAllDay","candidate","copyIEventData","constraintFn","$resizeConstraint","$selectConstraint","$dragConstraint","createSelectCallbackInfo","createCallbackInfo","$dragScroll","thresholdY","$slotHeight","thresholdX","$slotWidth","handleScroll","handlePointerMove","handlePointerUp","$unselectAuto","$unselectCancel","$selectFn","$eventResizeStop","$eventDragStop","oldEvent","destroyIEvent","$eventResize","$eventDrop","eventRef","clicking","$dateClick","$selectBackgroundColor","$unselectFn","noClick","handleTouchStart","stops","createPreventDefaultHandler","removePointerEvent","createPointerEvent","validEvent","eventDurationEditable","eventResizableFromStart","resizable","createResizeHandler","$eventResizableFromStart","pointer","bodyScrollHandler","Action","Pointer","$pointer","Interaction","Auxiliary","_intlListDay","_intlListDaySide","datetime","$_intlListDay","time_1","$_intlListDaySide","node_1","h4","$noEventsClick","noEventsClick","noEventsContent","noEvents","$noEventsContent","List","slotTimeLimits","groupEventChunks","c","createAllDayContent","allDayContent","slotLabelInterval","_times","allDayText","$allDayContent","showAllTimes","$_times","_slotTimeLimits","scrollTime","$scrollTime","scrollToTime","slotEventOverlap","step","maxHeight","$slotEventOverlap","_now","nowIndicator","resourceFilter","node_4","$nowIndicator","node_5","allDaySlot","$1","$allDaySlot","TimeGrid","setLabel","resourceLabelContent","resourceLabelDidMount","$resourceLabelContent","ariaLabel","$resourceLabelDidMount","_viewResources","loops","$_viewResources","resourceLabels","$.proxy","item0","item1","$3","node_10","div_10","node_11","div_11","div_8","div_9","div_12","div_13","div_7","ResourceTimeGrid","dayTimeLimits","dayTimes","$_dayTimeLimits","nestedResources","expanded","toggle","children","expand","span_1","_headerHeight","_resHs","_sidebarEl","_nestedResources","onwheel","$_nestedResources","$_resHs","$_sidebarEl","$_headerHeight","_headerEl","_dayTimes","$_dayTimes","time_2","$_headerEl","filteredChunks","prevDayEnd","slots","getSlotTimeLimits","dayStart","dayEnd","dayChunk","width","_resource","_dayTimeLimits","pointerIdx","chunkIntersects","node_3","$$d_1","$$array_3","_bodyHeight","_bodyWidth","_bodyScrollLeft","onscroll","onresize","$_bodyScrollLeft","$_bodyHeight","$_bodyWidth","ResourceTimeline","createCalendar","Calendar","destroyCalendar","calendar","create"],"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,61,68]}
|