@htmlbricks/hb-terms-doc-templates 0.50.0-alpha.8 → 0.50.0
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.
- package/main.iife.js +2 -1
- package/main.iife.js.map +1 -0
- package/manifest.json +1 -1
- package/package.json +6 -2
package/main.iife.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.iife.js","sources":["../../../node_modules/svelte/src/version.js","../../../node_modules/svelte/src/internal/disclose-version.js","../../../node_modules/svelte/src/constants.js","../../../node_modules/esm-env/false.js","../../../node_modules/svelte/src/internal/client/constants.js","../../../node_modules/svelte/src/internal/shared/utils.js","../../../node_modules/svelte/src/internal/client/dom/task.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/internal/client/reactivity/sources.js","../../../node_modules/svelte/src/internal/client/reactivity/deriveds.js","../../../node_modules/svelte/src/internal/client/warnings.js","../../../node_modules/svelte/src/internal/client/dom/hydration.js","../../../node_modules/svelte/src/internal/client/proxy.js","../../../node_modules/svelte/src/internal/client/dom/operations.js","../../../node_modules/svelte/src/internal/client/runtime.js","../../../node_modules/svelte/src/internal/client/reactivity/effects.js","../../../node_modules/svelte/src/internal/client/context.js","../../../node_modules/svelte/src/utils.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/css.js","../../../node_modules/svelte/src/internal/client/dom/elements/attributes.js","../../../node_modules/svelte/src/internal/client/reactivity/props.js","../../../node_modules/svelte/src/legacy/legacy-client.js","../../../node_modules/svelte/src/internal/client/dom/elements/custom-element.js","../../../node_modules/inline-style-parser/index.js","../../../node_modules/style-to-object/cjs/index.js","../../../node_modules/style-to-object/esm/index.mjs","../../../src/utils/utils.ts","../../../src/wc/terms-doc-templates/libs/utils.ts","../../../src/wc/terms-doc-templates/libs/privacyItContent.ts","../../../src/wc/terms-doc-templates/libs/cookieItContent.ts","../../../src/wc/terms-doc-templates/libs/cookieEnContent.ts","../../../src/wc/table/extra/docs.ts","../../../src/wc/terms-doc-templates/libs/i18n.ts","../../../src/wc/terms-doc-templates/component.wc.svelte"],"sourcesContent":["// 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.20.0';\nexport const PUBLIC_VERSION = '5';\n","import { PUBLIC_VERSION } from '../version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte ||= { v: new Set() }).v.add(PUBLIC_VERSION);\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;\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_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","export default false;\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;\n\nexport const STATE_SYMBOL = Symbol('$state');\nexport const STATE_SYMBOL_METADATA = Symbol('$state metadata');\nexport const LEGACY_PROPS = Symbol('legacy props');\nexport const LOADING_ATTR_SYMBOL = Symbol('');\n","// Store the references to globals in case someone tries to monkey patch these, causing the below\n// to de-opt (this occurs often when using popular extensions).\nexport var is_array = Array.isArray;\nexport var index_of = Array.prototype.indexOf;\nexport var array_from = Array.from;\nexport var object_keys = Object.keys;\nexport var define_property = Object.defineProperty;\nexport var get_descriptor = Object.getOwnPropertyDescriptor;\nexport var get_descriptors = Object.getOwnPropertyDescriptors;\nexport var object_prototype = Object.prototype;\nexport var array_prototype = Array.prototype;\nexport var get_prototype_of = Object.getPrototypeOf;\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","import { run_all } from '../../shared/utils.js';\n\n// Fallback for when requestIdleCallback is not available\nexport const request_idle_callback =\n\ttypeof requestIdleCallback === 'undefined'\n\t\t? (/** @type {() => void} */ cb) => setTimeout(cb, 1)\n\t\t: requestIdleCallback;\n\nlet is_micro_task_queued = false;\nlet is_idle_task_queued = false;\n\n/** @type {Array<() => void>} */\nlet current_queued_micro_tasks = [];\n/** @type {Array<() => void>} */\nlet current_queued_idle_tasks = [];\n\nfunction process_micro_tasks() {\n\tis_micro_task_queued = false;\n\tconst tasks = current_queued_micro_tasks.slice();\n\tcurrent_queued_micro_tasks = [];\n\trun_all(tasks);\n}\n\nfunction process_idle_tasks() {\n\tis_idle_task_queued = false;\n\tconst tasks = current_queued_idle_tasks.slice();\n\tcurrent_queued_idle_tasks = [];\n\trun_all(tasks);\n}\n\n/**\n * @param {() => void} fn\n */\nexport function queue_micro_task(fn) {\n\tif (!is_micro_task_queued) {\n\t\tis_micro_task_queued = true;\n\t\tqueueMicrotask(process_micro_tasks);\n\t}\n\tcurrent_queued_micro_tasks.push(fn);\n}\n\n/**\n * @param {() => void} fn\n */\nexport function queue_idle_task(fn) {\n\tif (!is_idle_task_queued) {\n\t\tis_idle_task_queued = true;\n\t\trequest_idle_callback(process_idle_tasks);\n\t}\n\tcurrent_queued_idle_tasks.push(fn);\n}\n\n/**\n * Synchronously run any queued tasks.\n */\nexport function flush_tasks() {\n\tif (is_micro_task_queued) {\n\t\tprocess_micro_tasks();\n\t}\n\tif (is_idle_task_queued) {\n\t\tprocess_idle_tasks();\n\t}\n}\n","/** @import { Equals } from '#client' */\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 * %parent% called `%method%` on an instance of %component%, which is no longer valid in Svelte 5\n * @param {string} parent\n * @param {string} method\n * @param {string} component\n * @returns {never}\n */\nexport function component_api_changed(parent, method, component) {\n\tif (DEV) {\n\t\tconst error = new Error(`component_api_changed\\n${parent} called \\`${method}\\` on an instance of ${component}, which 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 * Reading state that was created inside the same derived is forbidden. Consider using `untrack` to read locally created state\n * @returns {never}\n */\nexport function state_unsafe_local_read() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_unsafe_local_read\\nReading state that was created inside the same derived is forbidden. Consider using \\`untrack\\` to read locally created state\\nhttps://svelte.dev/e/state_unsafe_local_read`);\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_local_read`);\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","/** @import { Derived, Effect, Reaction, 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\tderived_sources,\n\tset_derived_sources,\n\tcheck_dirtiness,\n\tset_is_flushing_effect,\n\tis_flushing_effect,\n\tuntracking\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 '../constants.js';\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';\n\nexport let inspect_effects = new Set();\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 */\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 */\nexport function state(v) {\n\treturn push_derived_source(source(v));\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 {V} v\n * @param {boolean} [immutable]\n * @returns {Source<V>}\n */\nexport function mutable_state(v, immutable = false) {\n\treturn push_derived_source(mutable_source(v, immutable));\n}\n\n/**\n * @template V\n * @param {Source<V>} source\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction push_derived_source(source) {\n\tif (active_reaction !== null && !untracking && (active_reaction.f & DERIVED) !== 0) {\n\t\tif (derived_sources === null) {\n\t\t\tset_derived_sources([source]);\n\t\t} else {\n\t\t\tderived_sources.push(source);\n\t\t}\n\t}\n\n\treturn source;\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 * @returns {V}\n */\nexport function set(source, value) {\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// If the source was created locally within the current derived, then\n\t\t// we allow the mutation.\n\t\t(derived_sources === null || !derived_sources.includes(source))\n\t) {\n\t\te.state_unsafe_mutation();\n\t}\n\n\treturn internal_set(source, 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\t\tsource.v = value;\n\t\tsource.wv = increment_write_version();\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\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\t\t\tvar previously_flushing_effect = is_flushing_effect;\n\t\t\tset_is_flushing_effect(true);\n\t\t\ttry {\n\t\t\t\tfor (const effect of inspects) {\n\t\t\t\t\t// Mark clean inspect-effects as maybe dirty and then check their dirtiness\n\t\t\t\t\t// instead of just updating the effects - this way we avoid overfiring.\n\t\t\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t\t\t}\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}\n\t\t\t} finally {\n\t\t\t\tset_is_flushing_effect(previously_flushing_effect);\n\t\t\t}\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 { Derived, Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { CLEAN, DERIVED, DIRTY, EFFECT_HAS_DERIVED, MAYBE_DIRTY, UNOWNED } from '../constants.js';\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} 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 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\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\tif (!derived.equals(value)) {\n\t\tderived.v = value;\n\t\tderived.wv = increment_write_version();\n\t}\n}\n","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\nvar bold = 'font-weight: bold';\nvar normal = 'font-weight: normal';\n\n/**\n * Assignment to `%property%` property (%location%) will evaluate to the right-hand side, not the value of `%property%` following the assignment. This may result in unexpected behaviour.\n * @param {string} property\n * @param {string} location\n */\nexport function assignment_value_stale(property, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] assignment_value_stale\\n%cAssignment to \\`${property}\\` property (${location}) will evaluate to the right-hand side, not the value of \\`${property}\\` following the assignment. This may result in unexpected behaviour.\\nhttps://svelte.dev/e/assignment_value_stale`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/assignment_value_stale`);\n\t}\n}\n\n/**\n * `%binding%` (%location%) is binding to a non-reactive property\n * @param {string} binding\n * @param {string | undefined | null} [location]\n */\nexport function binding_property_non_reactive(binding, location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] binding_property_non_reactive\\n%c${location ? `\\`${binding}\\` (${location}) is binding to a non-reactive property` : `\\`${binding}\\` is binding to a non-reactive property`}\\nhttps://svelte.dev/e/binding_property_non_reactive`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/binding_property_non_reactive`);\n\t}\n}\n\n/**\n * Your `console.%method%` contained `$state` proxies. Consider using `$inspect(...)` or `$state.snapshot(...)` instead\n * @param {string} method\n */\nexport function console_log_state(method) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] console_log_state\\n%cYour \\`console.${method}\\` contained \\`$state\\` proxies. Consider using \\`$inspect(...)\\` or \\`$state.snapshot(...)\\` instead\\nhttps://svelte.dev/e/console_log_state`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/console_log_state`);\n\t}\n}\n\n/**\n * %handler% should be a function. Did you mean to %suggestion%?\n * @param {string} handler\n * @param {string} suggestion\n */\nexport function event_handler_invalid(handler, suggestion) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] event_handler_invalid\\n%c${handler} should be a function. Did you mean to ${suggestion}?\\nhttps://svelte.dev/e/event_handler_invalid`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/event_handler_invalid`);\n\t}\n}\n\n/**\n * The `%attribute%` attribute on `%html%` changed its value between server and client renders. The client value, `%value%`, will be ignored in favour of the server value\n * @param {string} attribute\n * @param {string} html\n * @param {string} value\n */\nexport function hydration_attribute_changed(attribute, html, value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydration_attribute_changed\\n%cThe \\`${attribute}\\` attribute on \\`${html}\\` changed its value between server and client renders. The client value, \\`${value}\\`, will be ignored in favour of the server value\\nhttps://svelte.dev/e/hydration_attribute_changed`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_attribute_changed`);\n\t}\n}\n\n/**\n * The value of an `{@html ...}` block %location% changed between server and client renders. The client value will be ignored in favour of the server value\n * @param {string | undefined | null} [location]\n */\nexport function hydration_html_changed(location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydration_html_changed\\n%c${location ? `The value of an \\`{@html ...}\\` block ${location} changed between server and client renders. The client value will be ignored in favour of the server value` : 'The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value'}\\nhttps://svelte.dev/e/hydration_html_changed`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_html_changed`);\n\t}\n}\n\n/**\n * Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near %location%\n * @param {string | undefined | null} [location]\n */\nexport function hydration_mismatch(location) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] hydration_mismatch\\n%c${location ? `Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}` : 'Hydration failed because the initial UI does not match what was rendered on the server'}\\nhttps://svelte.dev/e/hydration_mismatch`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/hydration_mismatch`);\n\t}\n}\n\n/**\n * The `render` function passed to `createRawSnippet` should return HTML for a single element\n */\nexport function invalid_raw_snippet_render() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] invalid_raw_snippet_render\\n%cThe \\`render\\` function passed to \\`createRawSnippet\\` should return HTML for a single element\\nhttps://svelte.dev/e/invalid_raw_snippet_render`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/invalid_raw_snippet_render`);\n\t}\n}\n\n/**\n * Detected a migrated `$:` reactive block in `%filename%` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an `$effect`.\n * @param {string} filename\n */\nexport function legacy_recursive_reactive_block(filename) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] legacy_recursive_reactive_block\\n%cDetected a migrated \\`$:\\` reactive block in \\`${filename}\\` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an \\`$effect\\`.\\nhttps://svelte.dev/e/legacy_recursive_reactive_block`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/legacy_recursive_reactive_block`);\n\t}\n}\n\n/**\n * Tried to unmount a component that was not mounted\n */\nexport function lifecycle_double_unmount() {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] lifecycle_double_unmount\\n%cTried to unmount a component that was not mounted\\nhttps://svelte.dev/e/lifecycle_double_unmount`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/lifecycle_double_unmount`);\n\t}\n}\n\n/**\n * %parent% passed a value to %child% with `bind:`, but the value is owned by %owner%. Consider creating a binding between %owner% and %parent%\n * @param {string} parent\n * @param {string} child\n * @param {string} owner\n */\nexport function ownership_invalid_binding(parent, child, owner) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_binding\\n%c${parent} passed a value to ${child} with \\`bind:\\`, but the value is owned by ${owner}. Consider creating a binding between ${owner} and ${parent}\\nhttps://svelte.dev/e/ownership_invalid_binding`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_binding`);\n\t}\n}\n\n/**\n * %component% mutated a value owned by %owner%. This is strongly discouraged. Consider passing values to child components with `bind:`, or use a callback instead\n * @param {string | undefined | null} [component]\n * @param {string | undefined | null} [owner]\n */\nexport function ownership_invalid_mutation(component, owner) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] ownership_invalid_mutation\\n%c${component ? `${component} mutated a value owned by ${owner}. This is strongly discouraged. Consider passing values to child components with \\`bind:\\`, or use a callback instead` : 'Mutating a value outside the component that created it is strongly discouraged. Consider passing values to child components with `bind:`, or use a callback instead'}\\nhttps://svelte.dev/e/ownership_invalid_mutation`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/ownership_invalid_mutation`);\n\t}\n}\n\n/**\n * Reactive `$state(...)` proxies and the values they proxy have different identities. Because of this, comparisons with `%operator%` will produce unexpected results\n * @param {string} operator\n */\nexport function state_proxy_equality_mismatch(operator) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] state_proxy_equality_mismatch\\n%cReactive \\`$state(...)\\` proxies and the values they proxy have different identities. Because of this, comparisons with \\`${operator}\\` will produce unexpected results\\nhttps://svelte.dev/e/state_proxy_equality_mismatch`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/state_proxy_equality_mismatch`);\n\t}\n}\n\n/**\n * The `slide` transition does not work correctly for elements with `display: %value%`\n * @param {string} value\n */\nexport function transition_slide_display(value) {\n\tif (DEV) {\n\t\tconsole.warn(`%c[svelte] transition_slide_display\\n%cThe \\`slide\\` transition does not work correctly for elements with \\`display: ${value}\\`\\nhttps://svelte.dev/e/transition_slide_display`, bold, normal);\n\t} else {\n\t\tconsole.warn(`https://svelte.dev/e/transition_slide_display`);\n\t}\n}","/** @import { TemplateNode } from '#client' */\n\nimport {\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","/** @import { ProxyMetadata, Source } from '#client' */\nimport { DEV } from 'esm-env';\nimport { get, active_effect } from './runtime.js';\nimport { component_context } from './context.js';\nimport {\n\tarray_prototype,\n\tget_descriptor,\n\tget_prototype_of,\n\tis_array,\n\tobject_prototype\n} from '../shared/utils.js';\nimport { check_ownership, widen_ownership } from './dev/ownership.js';\nimport { source, set } from './reactivity/sources.js';\nimport { STATE_SYMBOL, STATE_SYMBOL_METADATA } from './constants.js';\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 * @param {ProxyMetadata | null} [parent]\n * @param {Source<T>} [prev] dev mode only\n * @returns {T}\n */\nexport function proxy(value, parent = null, prev) {\n\t/** @type {Error | null} */\n\tvar stack = null;\n\tif (DEV && tracing_mode_flag) {\n\t\tstack = get_stack('CreatedAt');\n\t}\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\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/** @type {ProxyMetadata} */\n\tvar metadata;\n\n\tif (DEV) {\n\t\tmetadata = {\n\t\t\tparent,\n\t\t\towners: null\n\t\t};\n\n\t\tif (prev) {\n\t\t\t// Reuse owners from previous state; necessary because reassignment is not guaranteed to have correct component context.\n\t\t\t// If no previous proxy exists we play it safe and assume ownerless state\n\t\t\t// @ts-expect-error\n\t\t\tconst prev_owners = prev.v?.[STATE_SYMBOL_METADATA]?.owners;\n\t\t\tmetadata.owners = prev_owners ? new Set(prev_owners) : null;\n\t\t} else {\n\t\t\tmetadata.owners =\n\t\t\t\tparent === null\n\t\t\t\t\t? component_context !== null\n\t\t\t\t\t\t? new Set([component_context.function])\n\t\t\t\t\t\t: null\n\t\t\t\t\t: new Set();\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\n\t\t\tvar s = sources.get(prop);\n\n\t\t\tif (s === undefined) {\n\t\t\t\ts = source(descriptor.value, stack);\n\t\t\t\tsources.set(prop, s);\n\t\t\t} else {\n\t\t\t\tset(s, proxy(descriptor.value, metadata));\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(prop, source(UNINITIALIZED, stack));\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 (DEV && prop === STATE_SYMBOL_METADATA) {\n\t\t\t\treturn metadata;\n\t\t\t}\n\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 = source(proxy(exists ? target[prop] : UNINITIALIZED, metadata), 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\n\t\t\t\t// In case of something like `foo = bar.map(...)`, foo would have ownership\n\t\t\t\t// of the array itself, while the individual items would have ownership\n\t\t\t\t// of the component that created bar. That means if we later do `foo[0].baz = 42`,\n\t\t\t\t// we could get a false-positive ownership violation, since the two proxies\n\t\t\t\t// are not connected to each other via the parent metadata relationship.\n\t\t\t\t// For this reason, we need to widen the ownership of the children\n\t\t\t\t// upon access when we detect they are not connected.\n\t\t\t\tif (DEV) {\n\t\t\t\t\t/** @type {ProxyMetadata | undefined} */\n\t\t\t\t\tvar prop_metadata = v?.[STATE_SYMBOL_METADATA];\n\t\t\t\t\tif (prop_metadata && prop_metadata?.parent !== metadata) {\n\t\t\t\t\t\twiden_ownership(metadata, prop_metadata);\n\t\t\t\t\t}\n\t\t\t\t}\n\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 (DEV && prop === STATE_SYMBOL_METADATA) {\n\t\t\t\treturn true;\n\t\t\t}\n\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 = source(has ? proxy(target[prop], metadata) : 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 = 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 = source(undefined, stack);\n\t\t\t\t\tset(s, proxy(value, metadata));\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(s, proxy(value, metadata));\n\t\t\t}\n\n\t\t\tif (DEV) {\n\t\t\t\t/** @type {ProxyMetadata | undefined} */\n\t\t\t\tvar prop_metadata = value?.[STATE_SYMBOL_METADATA];\n\t\t\t\tif (prop_metadata && prop_metadata?.parent !== metadata) {\n\t\t\t\t\twiden_ownership(metadata, prop_metadata);\n\t\t\t\t}\n\t\t\t\tcheck_ownership(metadata);\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\tif (value !== null && typeof value === 'object' && STATE_SYMBOL in value) {\n\t\treturn value[STATE_SYMBOL];\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 { 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 } 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\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\t// the following assignments improve perf of lookups on DOM nodes\n\t// @ts-expect-error\n\telement_prototype.__click = undefined;\n\t// @ts-expect-error\n\telement_prototype.__className = '';\n\t// @ts-expect-error\n\telement_prototype.__attributes = null;\n\t// @ts-expect-error\n\telement_prototype.__styles = null;\n\t// @ts-expect-error\n\telement_prototype.__e = undefined;\n\n\t// @ts-expect-error\n\tText.prototype.__t = undefined;\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","/** @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\tRENDER_EFFECT,\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} from './constants.js';\nimport { flush_tasks } from './dom/task.js';\nimport { internal_set } 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\nconst FLUSH_MICROTASK = 0;\nconst FLUSH_SYNC = 1;\n// Used for DEV time error handling\n/** @param {WeakSet<Error>} value */\nconst handled_errors = new WeakSet();\nexport let is_throwing_error = false;\n\n// Used for controlling the flush of effects.\nlet scheduler_mode = FLUSH_MICROTASK;\n// Used for handling scheduling\nlet is_micro_task_queued = false;\n\n/** @type {Effect | null} */\nlet last_scheduled_effect = null;\n\nexport let is_flushing_effect = false;\nexport let is_destroying_effect = false;\n\n/** @param {boolean} value */\nexport function set_is_flushing_effect(value) {\n\tis_flushing_effect = value;\n}\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\nlet flush_count = 0;\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 derived, we record them so that we can safely allow\n * local mutations to these sources without the side-effect error being invoked unnecessarily.\n * @type {null | Source[]}\n */\nexport let derived_sources = null;\n\n/**\n * @param {Source[] | null} sources\n */\nexport function set_derived_sources(sources) {\n\tderived_sources = sources;\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 */\nexport let 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 (\n\t\t!DEV ||\n\t\tcomponent_context === null ||\n\t\t!(error instanceof Error) ||\n\t\thandled_errors.has(error)\n\t) {\n\t\tpropagate_error(error, effect);\n\t\treturn;\n\t}\n\n\thandled_errors.add(error);\n\n\tconst component_stack = [];\n\n\tconst effect_name = effect.fn?.name;\n\n\tif (effect_name) {\n\t\tcomponent_stack.push(effect_name);\n\t}\n\n\t/** @type {ComponentContext | null} */\n\tlet current_context = component_context;\n\n\twhile (current_context !== null) {\n\t\tif (DEV) {\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\t\t}\n\n\t\tcurrent_context = current_context.p;\n\t}\n\n\tconst indent = is_firefox ? ' ' : '\\t';\n\tdefine_property(error, 'message', {\n\t\tvalue: error.message + `\\n${component_stack.map((name) => `\\n${indent}in ${name}`).join('')}\\n`\n\t});\n\tdefine_property(error, 'component_stack', {\n\t\tvalue: component_stack\n\t});\n\n\tconst stack = error.stack;\n\n\t// Filter out internal files from callstack\n\tif (stack) {\n\t\tconst lines = stack.split('\\n');\n\t\tconst new_lines = [];\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (line.includes('svelte/src/internal')) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tnew_lines.push(line);\n\t\t}\n\t\tdefine_property(error, 'stack', {\n\t\t\tvalue: new_lines.join('\\n')\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\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 prev_derived_sources = derived_sources;\n\tvar previous_component_context = component_context;\n\tvar previous_untracking = untracking;\n\tvar flags = reaction.f;\n\n\tnew_deps = /** @type {null | Value[]} */ (null);\n\tskipped_deps = 0;\n\tuntracked_writes = null;\n\tactive_reaction = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;\n\tskip_reaction =\n\t\t(flags & UNOWNED) !== 0 &&\n\t\t(!is_flushing_effect || previous_reaction === null || previous_untracking);\n\n\tderived_sources = null;\n\tset_component_context(reaction.ctx);\n\tuntracking = false;\n\tread_version++;\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) {\n\t\t\tread_version++;\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\tderived_sources = prev_derived_sources;\n\t\tset_component_context(previous_component_context);\n\t\tuntracking = previous_untracking;\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\n\tactive_effect = effect;\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\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\tif (flush_count > 1000) {\n\t\tflush_count = 0;\n\t\ttry {\n\t\t\te.effect_update_depth_exceeded();\n\t\t} catch (error) {\n\t\t\tif (DEV) {\n\t\t\t\t// stack is garbage, ignore. Instead add a console.error message.\n\t\t\t\tdefine_property(error, 'stack', {\n\t\t\t\t\tvalue: ''\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Try and handle the error so it can be caught at a boundary, that's\n\t\t\t// if there's an effect available from when it was last scheduled\n\t\t\tif (last_scheduled_effect !== null) {\n\t\t\t\tif (DEV) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\thandle_error(error, last_scheduled_effect, null, null);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// Only log the effect stack if the error is re-thrown\n\t\t\t\t\t\tlog_effect_stack();\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thandle_error(error, last_scheduled_effect, null, null);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (DEV) {\n\t\t\t\t\tlog_effect_stack();\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tflush_count++;\n}\n\n/**\n * @param {Array<Effect>} root_effects\n * @returns {void}\n */\nfunction flush_queued_root_effects(root_effects) {\n\tvar length = root_effects.length;\n\tif (length === 0) {\n\t\treturn;\n\t}\n\tinfinite_loop_guard();\n\n\tvar previously_flushing_effect = is_flushing_effect;\n\tis_flushing_effect = true;\n\n\ttry {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tvar effect = root_effects[i];\n\n\t\t\tif ((effect.f & CLEAN) === 0) {\n\t\t\t\teffect.f ^= CLEAN;\n\t\t\t}\n\n\t\t\tvar collected_effects = process_effects(effect);\n\t\t\tflush_queued_effects(collected_effects);\n\t\t}\n\t} finally {\n\t\tis_flushing_effect = previously_flushing_effect;\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\nfunction process_deferred() {\n\tis_micro_task_queued = false;\n\tif (flush_count > 1001) {\n\t\treturn;\n\t}\n\tconst previous_queued_root_effects = queued_root_effects;\n\tqueued_root_effects = [];\n\tflush_queued_root_effects(previous_queued_root_effects);\n\n\tif (!is_micro_task_queued) {\n\t\tflush_count = 0;\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 {Effect} signal\n * @returns {void}\n */\nexport function schedule_effect(signal) {\n\tif (scheduler_mode === FLUSH_MICROTASK) {\n\t\tif (!is_micro_task_queued) {\n\t\t\tis_micro_task_queued = true;\n\t\t\tqueueMicrotask(process_deferred);\n\t\t}\n\t}\n\n\tlast_scheduled_effect = signal;\n\n\tvar 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} effect\n * @returns {Effect[]}\n */\nfunction process_effects(effect) {\n\t/** @type {Effect[]} */\n\tvar effects = [];\n\n\tvar current_effect = effect.first;\n\n\tmain_loop: while (current_effect !== null) {\n\t\tvar flags = current_effect.f;\n\t\tvar is_branch = (flags & BRANCH_EFFECT) !== 0;\n\t\tvar is_skippable_branch = is_branch && (flags & CLEAN) !== 0;\n\t\tvar sibling = current_effect.next;\n\n\t\tif (!is_skippable_branch && (flags & INERT) === 0) {\n\t\t\tif ((flags & EFFECT) !== 0) {\n\t\t\t\teffects.push(current_effect);\n\t\t\t} else if (is_branch) {\n\t\t\t\tcurrent_effect.f ^= CLEAN;\n\t\t\t} else {\n\t\t\t\t// Ensure we set the effect to be the active reaction\n\t\t\t\t// to ensure that unowned deriveds are correctly tracked\n\t\t\t\t// because we're flushing the current effect\n\t\t\t\tvar previous_active_reaction = active_reaction;\n\t\t\t\ttry {\n\t\t\t\t\tactive_reaction = current_effect;\n\t\t\t\t\tif (check_dirtiness(current_effect)) {\n\t\t\t\t\t\tupdate_effect(current_effect);\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\thandle_error(error, current_effect, null, current_effect.ctx);\n\t\t\t\t} finally {\n\t\t\t\t\tactive_reaction = previous_active_reaction;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar child = current_effect.first;\n\n\t\t\tif (child !== null) {\n\t\t\t\tcurrent_effect = child;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (sibling === null) {\n\t\t\tlet parent = current_effect.parent;\n\n\t\t\twhile (parent !== null) {\n\t\t\t\tif (effect === parent) {\n\t\t\t\t\tbreak main_loop;\n\t\t\t\t}\n\t\t\t\tvar parent_sibling = parent.next;\n\t\t\t\tif (parent_sibling !== null) {\n\t\t\t\t\tcurrent_effect = parent_sibling;\n\t\t\t\t\tcontinue main_loop;\n\t\t\t\t}\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t}\n\n\t\tcurrent_effect = sibling;\n\t}\n\n\treturn effects;\n}\n\n/**\n * Internal version of `flushSync` with the option to not flush previous effects.\n * Returns the result of the passed function, if given.\n * @param {() => any} [fn]\n * @returns {any}\n */\nexport function flush_sync(fn) {\n\tvar previous_scheduler_mode = scheduler_mode;\n\tvar previous_queued_root_effects = queued_root_effects;\n\n\ttry {\n\t\tinfinite_loop_guard();\n\n\t\t/** @type {Effect[]} */\n\t\tconst root_effects = [];\n\n\t\tscheduler_mode = FLUSH_SYNC;\n\t\tqueued_root_effects = root_effects;\n\t\tis_micro_task_queued = false;\n\n\t\tflush_queued_root_effects(previous_queued_root_effects);\n\n\t\tvar result = fn?.();\n\n\t\tflush_tasks();\n\t\tif (queued_root_effects.length > 0 || root_effects.length > 0) {\n\t\t\tflush_sync();\n\t\t}\n\n\t\tflush_count = 0;\n\t\tlast_scheduled_effect = null;\n\t\tif (DEV) {\n\t\t\tdev_effect_stack = [];\n\t\t}\n\n\t\treturn result;\n\t} finally {\n\t\tscheduler_mode = previous_scheduler_mode;\n\t\tqueued_root_effects = previous_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 flush_sync 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\tflush_sync();\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 (derived_sources !== null && derived_sources.includes(signal)) {\n\t\t\te.state_unsafe_local_read();\n\t\t}\n\t\tvar deps = active_reaction.deps;\n\t\tif (signal.rv < read_version) {\n\t\t\tsignal.rv = read_version;\n\t\t\t// If the signal is accessing the same dependencies in the same\n\t\t\t// order as it did last time, increment `skipped_deps`\n\t\t\t// rather than updating `new_deps`, which creates GC cost\n\t\t\tif (new_deps === null && deps !== null && deps[skipped_deps] === signal) {\n\t\t\t\tskipped_deps++;\n\t\t\t} else if (new_deps === null) {\n\t\t\t\tnew_deps = [signal];\n\t\t\t} else if (!skip_reaction || !new_deps.includes(signal)) {\n\t\t\t\t// Normally we can push duplicated dependencies to `new_deps`, but if we're inside\n\t\t\t\t// an unowned derived because skip_reaction is true, then we need to ensure that\n\t\t\t\t// we don't have duplicates\n\t\t\t\tnew_deps.push(signal);\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\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 */\nexport function 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","/** @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\tis_flushing_effect,\n\tremove_reactions,\n\tschedule_effect,\n\tset_active_reaction,\n\tset_is_destroying_effect,\n\tset_is_flushing_effect,\n\tset_signal_status,\n\tuntrack,\n\tskip_reaction,\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 '../constants.js';\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 is_root = (type & ROOT_EFFECT) !== 0;\n\tvar parent_effect = active_effect;\n\n\tif (DEV) {\n\t\t// Ensure the parent is never an inspect effect\n\t\twhile (parent_effect !== null && (parent_effect.f & INSPECT_EFFECT) !== 0) {\n\t\t\tparent_effect = parent_effect.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: is_root ? null : parent_effect,\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\tvar previously_flushing_effect = is_flushing_effect;\n\n\t\ttry {\n\t\t\tset_is_flushing_effect(true);\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} finally {\n\t\t\tset_is_flushing_effect(previously_flushing_effect);\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 && !is_root && push) {\n\t\tif (parent_effect !== null) {\n\t\t\tpush_effect(effect, parent_effect);\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\t\tdestroy_effect(effect, remove_dom);\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\t/** @type {TemplateNode | null} */\n\t\tvar node = effect.nodes_start;\n\t\tvar end = effect.nodes_end;\n\n\t\twhile (node !== null) {\n\t\t\t/** @type {TemplateNode | null} */\n\t\t\tvar next = node === end ? null : /** @type {TemplateNode} */ (get_next_sibling(node));\n\n\t\t\tnode.remove();\n\t\t\tnode = next;\n\t\t}\n\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 * 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 { ComponentContext } from '#client' */\n\nimport { DEV } from 'esm-env';\nimport { add_owner } from './dev/ownership.js';\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\tuntrack\n} from './runtime.js';\nimport { effect } 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\n\tif (DEV) {\n\t\t// When state is put into context, we treat as if it's global from now on.\n\t\t// We do for performance reasons (it's for example very expensive to call\n\t\t// getContext on a big object many times when part of a list component)\n\t\t// and danger of false positives.\n\t\tuntrack(() => add_owner(context, null, true));\n\t}\n\n\tcontext_map.set(key, context);\n\treturn context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\tconst context_map = get_or_init_context_map('hasContext');\n\treturn context_map.has(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\tconst context_map = get_or_init_context_map('getAllContexts');\n\treturn /** @type {T} */ (context_map);\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {any} runes\n * @param {Function} [fn]\n * @returns {void}\n */\nexport function push(props, runes = false, fn) {\n\tcomponent_context = {\n\t\tp: component_context,\n\t\tc: null,\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\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","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\nconst RUNES = /** @type {const} */ ([\n\t'$state',\n\t'$state.raw',\n\t'$state.snapshot',\n\t'$props',\n\t'$props.id',\n\t'$bindable',\n\t'$derived',\n\t'$derived.by',\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/**\n * @param {string} name\n * @returns {name is RUNES[number]}\n */\nexport function is_rune(name) {\n\treturn RUNES.includes(/** @type {RUNES[number]} */ (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 * @param {string | undefined} location\n */\nexport function sanitize_location(location) {\n\treturn location?.replace(/\\//g, '/\\u200b');\n}\n","/** @import { Location } from 'locate-character' */\nimport { 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\tif (dom.onload) {\n\t\tdom.removeAttribute('onload');\n\t}\n\tif (dom.onerror) {\n\t\tdom.removeAttribute('onerror');\n\t}\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\t// @ts-ignore\n\tif (dom === document.body || dom === window || dom === document) {\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 (delegated !== undefined && !(/** @type {any} */ (current_target).disabled)) {\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') {\n\t\thandler.apply(element, args);\n\t} else if (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\n\t\tconst event_name = args[0].type;\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}\n","/** @param {string} html */\nexport function create_fragment_from_html(html) {\n\tvar elem = document.createElement('template');\n\telem.innerHTML = html;\n\treturn elem.content;\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from './hydration.js';\nimport { create_text, get_first_child, is_firefox } from './operations.js';\nimport { create_fragment_from_html } from './reconciler.js';\nimport { active_effect } from '../runtime.js';\nimport { TEMPLATE_FRAGMENT, TEMPLATE_USE_IMPORT_NODE } 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 template(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 * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function template_with_script(content, flags) {\n\tvar fn = template(content, flags);\n\treturn () => run_scripts(/** @type {Element | DocumentFragment} */ (fn()));\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__*/\nexport function ns_template(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 * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function svg_template_with_script(content, flags) {\n\tvar fn = ns_template(content, flags);\n\treturn () => run_scripts(/** @type {Element | DocumentFragment} */ (fn()));\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function mathml_template(content, flags) {\n\treturn ns_template(content, flags, 'math');\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\nlet uid = 1;\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('#s')\n\t) {\n\t\tconst id = hydrate_node.textContent.substring(1);\n\t\thydrate_next();\n\t\treturn id;\n\t}\n\n\treturn 'c' + 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 '../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\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_ELSE, UNINITIALIZED } from '../../../../constants.js';\n\n/**\n * @param {TemplateNode} node\n * @param {(branch: (fn: (anchor: Node) => void, flag?: boolean) => void) => void} fn\n * @param {boolean} [elseif] True if this is an `{:else if ...}` block rather than an `{#if ...}`, as that affects which transitions are considered 'local'\n * @returns {void}\n */\nexport function if_block(node, fn, elseif = false) {\n\tif (hydrating) {\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 = elseif ? EFFECT_TRANSPARENT : 0;\n\n\tvar has_branch = false;\n\n\tconst set_branch = (/** @type {(anchor: Node) => void} */ fn, flag = true) => {\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) => 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) {\n\t\t\tconst is_else = /** @type {Comment} */ (anchor).data === HYDRATION_START_ELSE;\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}\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));\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\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 '../../constants.js';\nimport { queue_micro_task } from '../task.js';\nimport { active_effect, active_reaction, 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 = /** @type {Comment} */ (anchor).data === 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 { DEV } from 'esm-env';\nimport { queue_micro_task } from './task.js';\nimport { register_style } from '../dev/css.js';\n\n/**\n * @param {Node} anchor\n * @param {{ hash: string, code: string }} css\n */\nexport function append_styles(anchor, css) {\n\t// Use `queue_micro_task` to ensure `anchor` is in the DOM, otherwise getRootNode() will yield wrong results\n\tqueue_micro_task(() => {\n\t\tvar root = anchor.getRootNode();\n\n\t\tvar target = /** @type {ShadowRoot} */ (root).host\n\t\t\t? /** @type {ShadowRoot} */ (root)\n\t\t\t: /** @type {Document} */ (root).head ?? /** @type {Document} */ (root.ownerDocument).head;\n\n\t\t// Always querying the DOM is roughly the same perf as additionally checking for presence in a map first assuming\n\t\t// that you'll get cache hits half of the time, so we just always query the dom for simplicity and code savings.\n\t\tif (!target.querySelector('#' + css.hash)) {\n\t\t\tconst style = document.createElement('style');\n\t\t\tstyle.id = css.hash;\n\t\t\tstyle.textContent = css.code;\n\n\t\t\ttarget.appendChild(style);\n\n\t\t\tif (DEV) {\n\t\t\t\tregister_style(css.hash, style);\n\t\t\t}\n\t\t}\n\t});\n}\n","import { 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 '../../constants.js';\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\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { clsx } from '../../../shared/attributes.js';\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\t// @ts-expect-error\n\tvar attributes = (element.__attributes ??= {});\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\t// @ts-expect-error\n\tvar attributes = (element.__attributes ??= {});\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\t// @ts-expect-error\n\tvar attributes = (element.__attributes ??= {});\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 === 'style' && '__styles' in element) {\n\t\t// reset styles to force style: directive to update\n\t\telement.__styles = {};\n\t}\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\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\ttry {\n\t\tif (\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\tsetters_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, any> | undefined} prev\n * @param {Record<string, any>} next New attributes - this function mutates this object\n * @param {string} [css_hash]\n * @param {boolean} [preserve_attribute_case]\n * @param {boolean} [is_custom_element]\n * @param {boolean} [skip_warning]\n * @returns {Record<string, any>}\n */\nexport function set_attributes(\n\telement,\n\tprev,\n\tnext,\n\tcss_hash,\n\tpreserve_attribute_case = false,\n\tis_custom_element = false,\n\tskip_warning = false\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}\n\n\tif (css_hash !== undefined) {\n\t\tnext.class = next.class ? next.class + ' ' + css_hash : css_hash;\n\t}\n\n\tvar setters = get_setters(element);\n\n\t// @ts-expect-error\n\tvar attributes = /** @type {Record<string, unknown>} **/ (element.__attributes ??= {});\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\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' && value != null) {\n\t\t\telement.style.cssText = 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);\n\t\t\t}\n\t\t}\n\t\tif (key === 'style' && '__styles' in element) {\n\t\t\t// reset styles to force style: directive to update\n\t\t\telement.__styles = {};\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/** @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 { 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 {\n\tactive_effect,\n\tget,\n\tcaptured_signals,\n\tset_active_effect,\n\tuntrack,\n\tactive_reaction,\n\tset_active_reaction\n} from '../runtime.js';\nimport { safe_equals } from './equality.js';\nimport * as e from '../errors.js';\nimport {\n\tBRANCH_EFFECT,\n\tLEGACY_DERIVED_PROP,\n\tLEGACY_PROPS,\n\tROOT_EFFECT,\n\tSTATE_SYMBOL\n} from '../constants.js';\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\tfor (const key in p) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t}\n};\n\n/**\n * @param {Array<Record<string, unknown> | (() => Record<string, unknown>)>} props\n * @returns {any}\n */\nexport function spread_props(...props) {\n\treturn new Proxy({ props }, spread_props_handler);\n}\n\n/**\n * This function is responsible for synchronizing a possibly bound prop with the inner component state.\n * It is used whenever the compiler sees that the component writes to the prop, or when it has a default prop_value.\n * @template V\n * @param {Record<string, unknown>} props\n * @param {string} key\n * @param {number} flags\n * @param {V | (() => V)} [fallback]\n * @returns {(() => V | ((arg: V) => V) | ((arg: V, mutation: boolean) => V))}\n */\nexport function prop(props, key, flags, fallback) {\n\tvar 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) {\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\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\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\t\treturn get(current_value);\n\t};\n}\n","/** @import { ComponentConstructorOptions, ComponentType, SvelteComponent, Component } from 'svelte' */\nimport { DIRTY, LEGACY_PROPS, MAYBE_DIRTY } from '../internal/client/constants.js';\nimport { user_pre_effect } from '../internal/client/reactivity/effects.js';\nimport { mutable_source, set } from '../internal/client/reactivity/sources.js';\nimport { hydrate, mount, unmount } from '../internal/client/render.js';\nimport { active_effect, flush_sync, get, set_signal_status } from '../internal/client/runtime.js';\nimport { lifecycle_outside_component } from '../internal/shared/errors.js';\nimport { define_property, is_array } from '../internal/shared/utils.js';\nimport * as w from '../internal/client/warnings.js';\nimport { DEV } from 'esm-env';\nimport { FILENAME } from '../constants.js';\nimport { component_context, dev_current_component_function } from '../internal/client/context.js';\n\n/**\n * Takes the same options as a Svelte 4 component and the component function and returns a Svelte 4 compatible component.\n *\n * @deprecated Use this only as a temporary solution to migrate your imperative component code to Svelte 5.\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @template {Record<string, any>} Events\n * @template {Record<string, any>} Slots\n *\n * @param {ComponentConstructorOptions<Props> & {\n * \tcomponent: ComponentType<SvelteComponent<Props, Events, Slots>> | Component<Props>;\n * }} options\n * @returns {SvelteComponent<Props, Events, Slots> & Exports}\n */\nexport function createClassComponent(options) {\n\t// @ts-expect-error $$prop_def etc are not actually defined\n\treturn new Svelte4Component(options);\n}\n\n/**\n * Takes the component function and returns a Svelte 4 compatible component constructor.\n *\n * @deprecated Use this only as a temporary solution to migrate your imperative component code to Svelte 5.\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @template {Record<string, any>} Events\n * @template {Record<string, any>} Slots\n *\n * @param {SvelteComponent<Props, Events, Slots> | Component<Props>} component\n * @returns {ComponentType<SvelteComponent<Props, Events, Slots> & Exports>}\n */\nexport function asClassComponent(component) {\n\t// @ts-expect-error $$prop_def etc are not actually defined\n\treturn class extends Svelte4Component {\n\t\t/** @param {any} options */\n\t\tconstructor(options) {\n\t\t\tsuper({\n\t\t\t\tcomponent,\n\t\t\t\t...options\n\t\t\t});\n\t\t}\n\t};\n}\n\n/**\n * Support using the component as both a class and function during the transition period\n * @typedef {{new (o: ComponentConstructorOptions): SvelteComponent;(...args: Parameters<Component<Record<string, any>>>): ReturnType<Component<Record<string, any>, Record<string, any>>>;}} LegacyComponentType\n */\n\nclass Svelte4Component {\n\t/** @type {any} */\n\t#events;\n\n\t/** @type {Record<string, any>} */\n\t#instance;\n\n\t/**\n\t * @param {ComponentConstructorOptions & {\n\t * component: any;\n\t * }} options\n\t */\n\tconstructor(options) {\n\t\tvar sources = new Map();\n\n\t\t/**\n\t\t * @param {string | symbol} key\n\t\t * @param {unknown} value\n\t\t */\n\t\tvar add_source = (key, value) => {\n\t\t\tvar s = mutable_source(value);\n\t\t\tsources.set(key, s);\n\t\t\treturn s;\n\t\t};\n\n\t\t// Replicate coarse-grained props through a proxy that has a version source for\n\t\t// each property, which is incremented on updates to the property itself. Do not\n\t\t// use our $state proxy because that one has fine-grained reactivity.\n\t\tconst props = new Proxy(\n\t\t\t{ ...(options.props || {}), $$events: {} },\n\t\t\t{\n\t\t\t\tget(target, prop) {\n\t\t\t\t\treturn get(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop)));\n\t\t\t\t},\n\t\t\t\thas(target, prop) {\n\t\t\t\t\t// Necessary to not throw \"invalid binding\" validation errors on the component side\n\t\t\t\t\tif (prop === LEGACY_PROPS) return true;\n\n\t\t\t\t\tget(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop)));\n\t\t\t\t\treturn Reflect.has(target, prop);\n\t\t\t\t},\n\t\t\t\tset(target, prop, value) {\n\t\t\t\t\tset(sources.get(prop) ?? add_source(prop, value), value);\n\t\t\t\t\treturn Reflect.set(target, prop, value);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.#instance = (options.hydrate ? hydrate : mount)(options.component, {\n\t\t\ttarget: options.target,\n\t\t\tanchor: options.anchor,\n\t\t\tprops,\n\t\t\tcontext: options.context,\n\t\t\tintro: options.intro ?? false,\n\t\t\trecover: options.recover\n\t\t});\n\n\t\t// We don't flush_sync for custom element wrappers or if the user doesn't want it\n\t\tif (!options?.props?.$$host || options.sync === false) {\n\t\t\tflush_sync();\n\t\t}\n\n\t\tthis.#events = props.$$events;\n\n\t\tfor (const key of Object.keys(this.#instance)) {\n\t\t\tif (key === '$set' || key === '$destroy' || key === '$on') continue;\n\t\t\tdefine_property(this, key, {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#instance[key];\n\t\t\t\t},\n\t\t\t\t/** @param {any} value */\n\t\t\t\tset(value) {\n\t\t\t\t\tthis.#instance[key] = value;\n\t\t\t\t},\n\t\t\t\tenumerable: true\n\t\t\t});\n\t\t}\n\n\t\tthis.#instance.$set = /** @param {Record<string, any>} next */ (next) => {\n\t\t\tObject.assign(props, next);\n\t\t};\n\n\t\tthis.#instance.$destroy = () => {\n\t\t\tunmount(this.#instance);\n\t\t};\n\t}\n\n\t/** @param {Record<string, any>} props */\n\t$set(props) {\n\t\tthis.#instance.$set(props);\n\t}\n\n\t/**\n\t * @param {string} event\n\t * @param {(...args: any[]) => any} callback\n\t * @returns {any}\n\t */\n\t$on(event, callback) {\n\t\tthis.#events[event] = this.#events[event] || [];\n\n\t\t/** @param {any[]} args */\n\t\tconst cb = (...args) => callback.call(this, ...args);\n\t\tthis.#events[event].push(cb);\n\t\treturn () => {\n\t\t\tthis.#events[event] = this.#events[event].filter(/** @param {any} fn */ (fn) => fn !== cb);\n\t\t};\n\t}\n\n\t$destroy() {\n\t\tthis.#instance.$destroy();\n\t}\n}\n\n/**\n * Runs the given function once immediately on the server, and works like `$effect.pre` on the client.\n *\n * @deprecated Use this only as a temporary solution to migrate your component code to Svelte 5.\n * @param {() => void | (() => void)} fn\n * @returns {void}\n */\nexport function run(fn) {\n\tuser_pre_effect(() => {\n\t\tfn();\n\t\tvar effect = /** @type {import('#client').Effect} */ (active_effect);\n\t\t// If the effect is immediately made dirty again, mark it as maybe dirty to emulate legacy behaviour\n\t\tif ((effect.f & DIRTY) !== 0) {\n\t\t\tlet filename = \"a file (we can't know which one)\";\n\t\t\tif (DEV) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tfilename = dev_current_component_function?.[FILENAME] ?? filename;\n\t\t\t}\n\t\t\tw.legacy_recursive_reactive_block(filename);\n\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t}\n\t});\n}\n\n/**\n * Function to mimic the multiple listeners available in svelte 4\n * @deprecated\n * @param {EventListener[]} handlers\n * @returns {EventListener}\n */\nexport function handlers(...handlers) {\n\treturn function (event) {\n\t\tconst { stopImmediatePropagation } = event;\n\t\tlet stopped = false;\n\n\t\tevent.stopImmediatePropagation = () => {\n\t\t\tstopped = true;\n\t\t\tstopImmediatePropagation.call(event);\n\t\t};\n\n\t\tconst errors = [];\n\n\t\tfor (const handler of handlers) {\n\t\t\ttry {\n\t\t\t\t// @ts-expect-error `this` is not typed\n\t\t\t\thandler?.call(this, event);\n\t\t\t} catch (e) {\n\t\t\t\terrors.push(e);\n\t\t\t}\n\n\t\t\tif (stopped) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (let error of errors) {\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}\n\t};\n}\n\n/**\n * Function to create a `bubble` function that mimic the behavior of `on:click` without handler available in svelte 4.\n * @deprecated Use this only as a temporary solution to migrate your automatically delegated events in Svelte 5.\n */\nexport function createBubbler() {\n\tconst active_component_context = component_context;\n\tif (active_component_context === null) {\n\t\tlifecycle_outside_component('createBubbler');\n\t}\n\n\treturn (/**@type {string}*/ type) => (/**@type {Event}*/ event) => {\n\t\tconst events = /** @type {Record<string, Function | Function[]>} */ (\n\t\t\tactive_component_context.s.$$events\n\t\t)?.[/** @type {any} */ (type)];\n\n\t\tif (events) {\n\t\t\tconst callbacks = is_array(events) ? events.slice() : [events];\n\t\t\tfor (const fn of callbacks) {\n\t\t\t\tfn.call(active_component_context.x, event);\n\t\t\t}\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\nexport {\n\tonce,\n\tpreventDefault,\n\tself,\n\tstopImmediatePropagation,\n\tstopPropagation,\n\ttrusted,\n\tpassive,\n\tnonpassive\n} from '../internal/client/dom/legacy/event-modifiers.js';\n","import { createClassComponent } from '../../../../legacy/legacy-client.js';\nimport { destroy_effect, effect_root, render_effect } from '../../reactivity/effects.js';\nimport { append } from '../template.js';\nimport { define_property, get_descriptor, object_keys } from '../../../shared/utils.js';\n\n/**\n * @typedef {Object} CustomElementPropDefinition\n * @property {string} [attribute]\n * @property {boolean} [reflect]\n * @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]\n */\n\n/** @type {any} */\nlet SvelteElement;\n\nif (typeof HTMLElement === 'function') {\n\tSvelteElement = class extends HTMLElement {\n\t\t/** The Svelte component constructor */\n\t\t$$ctor;\n\t\t/** Slots */\n\t\t$$s;\n\t\t/** @type {any} The Svelte component instance */\n\t\t$$c;\n\t\t/** Whether or not the custom element is connected */\n\t\t$$cn = false;\n\t\t/** @type {Record<string, any>} Component props data */\n\t\t$$d = {};\n\t\t/** `true` if currently in the process of reflecting component props back to attributes */\n\t\t$$r = false;\n\t\t/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */\n\t\t$$p_d = {};\n\t\t/** @type {Record<string, EventListenerOrEventListenerObject[]>} Event listeners */\n\t\t$$l = {};\n\t\t/** @type {Map<EventListenerOrEventListenerObject, Function>} Event listener unsubscribe functions */\n\t\t$$l_u = new Map();\n\t\t/** @type {any} The managed render effect for reflecting attributes */\n\t\t$$me;\n\n\t\t/**\n\t\t * @param {*} $$componentCtor\n\t\t * @param {*} $$slots\n\t\t * @param {*} use_shadow_dom\n\t\t */\n\t\tconstructor($$componentCtor, $$slots, use_shadow_dom) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\t\t\tif (use_shadow_dom) {\n\t\t\t\tthis.attachShadow({ mode: 'open' });\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * @param {string} type\n\t\t * @param {EventListenerOrEventListenerObject} listener\n\t\t * @param {boolean | AddEventListenerOptions} [options]\n\t\t */\n\t\taddEventListener(type, listener, options) {\n\t\t\t// We can't determine upfront if the event is a custom event or not, so we have to\n\t\t\t// listen to both. If someone uses a custom event with the same name as a regular\n\t\t\t// browser event, this fires twice - we can't avoid that.\n\t\t\tthis.$$l[type] = this.$$l[type] || [];\n\t\t\tthis.$$l[type].push(listener);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t}\n\t\t\tsuper.addEventListener(type, listener, options);\n\t\t}\n\n\t\t/**\n\t\t * @param {string} type\n\t\t * @param {EventListenerOrEventListenerObject} listener\n\t\t * @param {boolean | AddEventListenerOptions} [options]\n\t\t */\n\t\tremoveEventListener(type, listener, options) {\n\t\t\tsuper.removeEventListener(type, listener, options);\n\t\t\tif (this.$$c) {\n\t\t\t\tconst unsub = this.$$l_u.get(listener);\n\t\t\t\tif (unsub) {\n\t\t\t\t\tunsub();\n\t\t\t\t\tthis.$$l_u.delete(listener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tasync connectedCallback() {\n\t\t\tthis.$$cn = true;\n\t\t\tif (!this.$$c) {\n\t\t\t\t// We wait one tick to let possible child slot elements be created/mounted\n\t\t\t\tawait Promise.resolve();\n\t\t\t\tif (!this.$$cn || this.$$c) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t/** @param {string} name */\n\t\t\t\tfunction create_slot(name) {\n\t\t\t\t\t/**\n\t\t\t\t\t * @param {Element} anchor\n\t\t\t\t\t */\n\t\t\t\t\treturn (anchor) => {\n\t\t\t\t\t\tconst slot = document.createElement('slot');\n\t\t\t\t\t\tif (name !== 'default') slot.name = name;\n\n\t\t\t\t\t\tappend(anchor, slot);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t/** @type {Record<string, any>} */\n\t\t\t\tconst $$slots = {};\n\t\t\t\tconst existing_slots = get_custom_elements_slots(this);\n\t\t\t\tfor (const name of this.$$s) {\n\t\t\t\t\tif (name in existing_slots) {\n\t\t\t\t\t\tif (name === 'default' && !this.$$d.children) {\n\t\t\t\t\t\t\tthis.$$d.children = create_slot(name);\n\t\t\t\t\t\t\t$$slots.default = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$$slots[name] = create_slot(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const attribute of this.attributes) {\n\t\t\t\t\t// this.$$data takes precedence over this.attributes\n\t\t\t\t\tconst name = this.$$g_p(attribute.name);\n\t\t\t\t\tif (!(name in this.$$d)) {\n\t\t\t\t\t\tthis.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, 'toProp');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Port over props that were set programmatically before ce was initialized\n\t\t\t\tfor (const key in this.$$p_d) {\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\tif (!(key in this.$$d) && this[key] !== undefined) {\n\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\tthis.$$d[key] = this[key]; // don't transform, these were set through JavaScript\n\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\tdelete this[key]; // remove the property that shadows the getter/setter\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$c = createClassComponent({\n\t\t\t\t\tcomponent: this.$$ctor,\n\t\t\t\t\ttarget: this.shadowRoot || this,\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t...this.$$d,\n\t\t\t\t\t\t$$slots,\n\t\t\t\t\t\t$$host: this\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Reflect component props as attributes\n\t\t\t\tthis.$$me = effect_root(() => {\n\t\t\t\t\trender_effect(() => {\n\t\t\t\t\t\tthis.$$r = true;\n\t\t\t\t\t\tfor (const key of object_keys(this.$$c)) {\n\t\t\t\t\t\t\tif (!this.$$p_d[key]?.reflect) continue;\n\t\t\t\t\t\t\tthis.$$d[key] = this.$$c[key];\n\t\t\t\t\t\t\tconst attribute_value = get_custom_element_value(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tthis.$$d[key],\n\t\t\t\t\t\t\t\tthis.$$p_d,\n\t\t\t\t\t\t\t\t'toAttribute'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (attribute_value == null) {\n\t\t\t\t\t\t\t\tthis.removeAttribute(this.$$p_d[key].attribute || key);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setAttribute(this.$$p_d[key].attribute || key, attribute_value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.$$r = false;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tfor (const type in this.$$l) {\n\t\t\t\t\tfor (const listener of this.$$l[type]) {\n\t\t\t\t\t\tconst unsub = this.$$c.$on(type, listener);\n\t\t\t\t\t\tthis.$$l_u.set(listener, unsub);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.$$l = {};\n\t\t\t}\n\t\t}\n\n\t\t// We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte\n\t\t// and setting attributes through setAttribute etc, this is helpful\n\n\t\t/**\n\t\t * @param {string} attr\n\t\t * @param {string} _oldValue\n\t\t * @param {string} newValue\n\t\t */\n\t\tattributeChangedCallback(attr, _oldValue, newValue) {\n\t\t\tif (this.$$r) return;\n\t\t\tattr = this.$$g_p(attr);\n\t\t\tthis.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, 'toProp');\n\t\t\tthis.$$c?.$set({ [attr]: this.$$d[attr] });\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tthis.$$cn = false;\n\t\t\t// In a microtask, because this could be a move within the DOM\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\tif (!this.$$cn && this.$$c) {\n\t\t\t\t\tthis.$$c.$destroy();\n\t\t\t\t\tthis.$$me();\n\t\t\t\t\tthis.$$c = undefined;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * @param {string} attribute_name\n\t\t */\n\t\t$$g_p(attribute_name) {\n\t\t\treturn (\n\t\t\t\tobject_keys(this.$$p_d).find(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tthis.$$p_d[key].attribute === attribute_name ||\n\t\t\t\t\t\t(!this.$$p_d[key].attribute && key.toLowerCase() === attribute_name)\n\t\t\t\t) || attribute_name\n\t\t\t);\n\t\t}\n\t};\n}\n\n/**\n * @param {string} prop\n * @param {any} value\n * @param {Record<string, CustomElementPropDefinition>} props_definition\n * @param {'toAttribute' | 'toProp'} [transform]\n */\nfunction get_custom_element_value(prop, value, props_definition, transform) {\n\tconst type = props_definition[prop]?.type;\n\tvalue = type === 'Boolean' && typeof value !== 'boolean' ? value != null : value;\n\tif (!transform || !props_definition[prop]) {\n\t\treturn value;\n\t} else if (transform === 'toAttribute') {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value == null ? null : JSON.stringify(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value ? '' : null;\n\t\t\tcase 'Number':\n\t\t\t\treturn value == null ? null : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t} else {\n\t\tswitch (type) {\n\t\t\tcase 'Object':\n\t\t\tcase 'Array':\n\t\t\t\treturn value && JSON.parse(value);\n\t\t\tcase 'Boolean':\n\t\t\t\treturn value; // conversion already handled above\n\t\t\tcase 'Number':\n\t\t\t\treturn value != null ? +value : value;\n\t\t\tdefault:\n\t\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * @param {HTMLElement} element\n */\nfunction get_custom_elements_slots(element) {\n\t/** @type {Record<string, true>} */\n\tconst result = {};\n\telement.childNodes.forEach((node) => {\n\t\tresult[/** @type {Element} node */ (node).slot || 'default'] = true;\n\t});\n\treturn result;\n}\n\n/**\n * @internal\n *\n * Turn a Svelte component into a custom element.\n * @param {any} Component A Svelte component function\n * @param {Record<string, CustomElementPropDefinition>} props_definition The props to observe\n * @param {string[]} slots The slots to create\n * @param {string[]} exports Explicitly exported values, other than props\n * @param {boolean} use_shadow_dom Whether to use shadow DOM\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\texports,\n\tuse_shadow_dom,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, use_shadow_dom);\n\t\t\tthis.$$p_d = props_definition;\n\t\t}\n\t\tstatic get observedAttributes() {\n\t\t\treturn object_keys(props_definition).map((key) =>\n\t\t\t\t(props_definition[key].attribute || key).toLowerCase()\n\t\t\t);\n\t\t}\n\t};\n\tobject_keys(props_definition).forEach((prop) => {\n\t\tdefine_property(Class.prototype, prop, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tvalue = get_custom_element_value(prop, value, props_definition);\n\t\t\t\tthis.$$d[prop] = value;\n\t\t\t\tvar component = this.$$c;\n\n\t\t\t\tif (component) {\n\t\t\t\t\t// // If the instance has an accessor, use that instead\n\t\t\t\t\tvar setter = get_descriptor(component, prop)?.get;\n\n\t\t\t\t\tif (setter) {\n\t\t\t\t\t\tcomponent[prop] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcomponent.$set({ [prop]: value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\texports.forEach((property) => {\n\t\tdefine_property(Class.prototype, property, {\n\t\t\tget() {\n\t\t\t\treturn this.$$c?.[property];\n\t\t\t}\n\t\t});\n\t});\n\tif (extend) {\n\t\t// @ts-expect-error - assigning here is fine\n\t\tClass = extend(Class);\n\t}\n\tComponent.element = /** @type {any} */ Class;\n\treturn Class;\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = StyleToObject;\nvar inline_style_parser_1 = __importDefault(require(\"inline-style-parser\"));\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nfunction StyleToObject(style, iterator) {\n var styleObject = null;\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n var declarations = (0, inline_style_parser_1.default)(style);\n var hasIterator = typeof iterator === 'function';\n declarations.forEach(function (declaration) {\n if (declaration.type !== 'declaration') {\n return;\n }\n var property = declaration.property, value = declaration.value;\n if (hasIterator) {\n iterator(property, value, declaration);\n }\n else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n return styleObject;\n}\n//# sourceMappingURL=index.js.map","import StyleToObject from '../cjs/index.js';\n\n// ensure compatibility with rollup umd build\nexport default StyleToObject.default || StyleToObject;\n","export type SupportedTheme = \"bootstrap\";\nexport type CssValueType = \"color\" | \"string\" | \"htmlsize\" | \"number\";\nexport type LicenseType =\n | \"Apache-2.0\"\n | \"MIT\"\n | \"ISC\"\n | \"BSD-3-Clause\"\n | \"BSD-2-Clause\"\n | \"Unlicense\"\n | \"Public-Domain\"\n | \"Other\"\n | \"AGPLv2\"\n | \"AGPLv3\";\nexport type CssPart = {\n name: string;\n description?: string;\n};\nexport type HtmlSlot = {\n name: string;\n description?: string;\n};\nexport type CssVar = {\n defaultValue?: string;\n valueType: CssValueType;\n name: string;\n description?: string;\n theme?: SupportedTheme;\n};\nexport type StyleSetup = {\n parts: CssPart[];\n vars: CssVar[];\n};\nexport type i18nLang = {\n language: string;\n lang: string;\n};\nexport type License = {\n type: LicenseType;\n path: string;\n cost: number;\n currency: \"EUR\" | \"USD\";\n conditions?: string;\n};\nexport interface ComponentShortSetup {\n i18n: i18nLang[];\n name: string;\n description: string;\n category: string;\n tags: string[];\n size: { layout?: \"fullscreen\" };\n iifePath: string;\n repoName: string;\n version: string;\n screenshots: string[];\n licenses: License[];\n readmePath: string;\n author: string;\n owner: string;\n}\nexport interface ComponentSetup extends ComponentShortSetup {\n definitions: {\n events: {\n $ref: string;\n $schema: string;\n definitions: any;\n };\n component: {\n $ref: string;\n $schema: string;\n definitions: any;\n };\n };\n storybookArgs: any;\n styleSetup: StyleSetup;\n htmlSlots: HtmlSlot[];\n examples: { name: string; data: any; description?: string }[];\n contributors: {\n name: string;\n email: string;\n url?: string;\n }[];\n}\nexport function getChildStyleToPass(\n parsedStyle: { [x: string]: string },\n vars: CssVar[]\n) {\n let toreturn = \"\";\n if (\n parsedStyle &&\n vars?.length &&\n Object.keys(parsedStyle)?.length &&\n vars?.filter((f) => Object.keys(parsedStyle).includes(f.name))?.length\n ) {\n for (const k of Object.keys(parsedStyle)) {\n const isPresent = vars?.filter(\n (f) => f.name === k && f.defaultValue !== parsedStyle[k]\n );\n if (isPresent) {\n toreturn += `${k}:${parsedStyle[k]};`;\n }\n }\n }\n return toreturn;\n}\n\nexport function addComponent(opts?: {\n local?: string;\n iifePath?: string;\n repoName: string;\n provider?: \"github\" | \"npm\";\n version: string;\n}) {\n const componentName = opts?.repoName.split(\"/\")?.[1] || opts?.repoName;\n if (!componentName) throw new Error(\"wrong componentPath \" + opts?.repoName);\n if (!opts?.version) throw new Error(\"wrong version \" + opts?.version);\n const iifePath = opts?.iifePath || \"main.iife.js\";\n if (!document.getElementById(componentName + \"-script\")) {\n try {\n const script = document.createElement(\"script\");\n script.id = componentName + \"-script\";\n script.src = `https://cdn.jsdelivr.net/npm/${opts.repoName}@${opts.version}/${iifePath}`;\n if (opts?.local && location.href.includes(\"localhost\")) {\n script.src = `${opts.local}`;\n }\n document.head.appendChild(script);\n } catch (err) {\n console.warn(err);\n }\n }\n}\n\nexport class LanguageTranslator {\n dictionary: { [x: string]: { [x: string]: string } };\n lang: string = \"\";\n constructor(opts: {\n lang?: string;\n dictionary: { [x: string]: { [x: string]: string } };\n }) {\n if (!opts?.dictionary) throw new Error(\"no dictionary provided\");\n this.dictionary = opts.dictionary;\n this.setLang(opts?.lang);\n }\n setLang(lang?: string) {\n if (!lang) lang = LanguageTranslator.getDefaultLang();\n this.lang = lang;\n }\n\n translateWord(wordKey: string, lang?: string) {\n return LanguageTranslator.getDictionaryWord(\n wordKey,\n this.dictionary,\n lang || this.lang\n );\n }\n translateDate(\n dateISOString: Date,\n timeOptions: Intl.DateTimeFormatOptions,\n lang?: string\n ) {\n return LanguageTranslator.formatDate(\n dateISOString,\n timeOptions,\n lang || this.lang\n );\n }\n static getDefaultLang() {\n let browserLang = \"en\";\n if (\n navigator?.languages &&\n navigator.languages[0]?.split(\"-\")[0]?.toLowerCase()?.length\n ) {\n browserLang = navigator.languages[0]?.split(\"-\")[0]?.toLowerCase();\n }\n return browserLang;\n }\n static getDictionaryWord(\n wordKey: string,\n dictionary: { [x: string]: { [x: string]: string } },\n lang?: string\n ) {\n if (!wordKey) throw new Error(\"no wordKey provided\");\n if (!dictionary) throw new Error(\"no dictionary provided\");\n\n if (lang && dictionary[lang]?.[wordKey]) return dictionary[lang][wordKey];\n\n let w: string = \"\";\n const defLng = LanguageTranslator.getDefaultLang();\n if (!lang || defLng !== lang) {\n const defaultLng = dictionary?.[defLng];\n if (defaultLng?.[wordKey]) {\n w = defaultLng[wordKey];\n }\n }\n\n return w;\n }\n static formatDate(\n dateISOString: Date,\n timeOptions: Intl.DateTimeFormatOptions,\n lang?: string\n ) {\n if (!dateISOString) throw new Error(\"no date provided\");\n if (typeof dateISOString.getMonth !== \"function\") {\n throw new Error(\"wrong date format\");\n }\n const dayDateFormat = new Intl.DateTimeFormat(\n lang || LanguageTranslator.getDefaultLang(),\n timeOptions\n );\n return dayDateFormat.format(dateISOString);\n }\n}\n","import type { CookieRow, IDoc, IRow, ITableHeaders } from \"@app/types/webcomponent.type\";\n\nexport function sortFinalDoc(doc: IDoc) {\n\tlet ci = 1;\n\n\tconst chapters = doc.chapters.filter((f) => f).sort((a, b) => a.index - b.index);\n\tfor (const chapter of chapters) {\n\t\tchapter.index = ci;\n\t\tci++;\n\t\tlet pi = 1;\n\t\tconst sortedParagraphs = chapter.paragraphs.filter((f) => f).sort((a, b) => a.index - b.index);\n\n\t\tfor (const paragraph of sortedParagraphs) {\n\t\t\tparagraph.index = pi;\n\t\t\tpi++;\n\t\t\tlet li = 1;\n\n\t\t\tif (paragraph.list?.length) {\n\t\t\t\tconst sortedList = paragraph.list.filter((f) => f).sort((a, b) => a.index - b.index);\n\t\t\t\tfor (const lis of sortedList) {\n\t\t\t\t\tlis.index = li;\n\t\t\t\t\tli++;\n\t\t\t\t}\n\t\t\t\tparagraph.list = sortedList;\n\t\t\t}\n\t\t}\n\t\tchapter.paragraphs = sortedParagraphs;\n\t}\n\tdoc.chapters = chapters;\n\treturn doc;\n}\nexport const cookieHeaders: ITableHeaders = [\n\t{ key: \"name\", label: \"Nome\", nosort: true },\n\t{ key: \"service\", label: \"Servizio\", nosort: true },\n\t{ key: \"porpose\", label: \"Scope\", nosort: true },\n\t{ key: \"details\", label: \"Tipologie e Durata\", nosort: true },\n];\n\nexport function mapCookie(cookie: CookieRow): IRow {\n\tconst row: IRow = {\n\t\t_id: cookie.name,\n\t\tname: cookie.name,\n\t\tservice: cookie.service,\n\t\tporpose: cookie.purpose,\n\t\tdetails: (cookie.storage === \"persistent\" ? \"\" : \"\") + cookie.durate,\n\t};\n\treturn row;\n}\n","import type { ITPrivacy, IDoc, IParagraphList } from \"@app/types/webcomponent.type\";\nimport { sortFinalDoc } from \"./utils\";\n\nexport default function (config: ITPrivacy) {\n\tconst content: IDoc = {\n\t\tid: config.id,\n\t\ttitle: \"INFORMATIVA PRIVACY\",\n\t\tint: { key: \"it\", flag: \"\" },\n\t\tchapters: [\n\t\t\t{\n\t\t\t\ttitle: \"Informazioni relative alla Privacy del sito\",\n\t\t\t\tindex: 0,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i1\",\n\t\t\t\t\t\tcontent: `In questa sezione sono contenute le informazioni relative alle modalità di gestione di ${config.site.name}, di\n\t\tproprietà di ${config.company.name}, in riferimento al trattamento dei dati degli utenti del sito stesso.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i2\",\n\n\t\t\t\t\t\tcontent: `La presente informativa ha valore anche ai fini dell'articolo 13 del Regolamento (UE) n. 2016/679, relativo alla protezione delle persone fisiche con\n\t\triguardo al trattamento dei dati personali nonché alla libera circolazione di tali dati, per i soggetti che interagiscono con ${config.site.name}`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i3\",\n\t\t\t\t\t\tcontent: `L'informativa è resa solo per ${config.site.name} e non anche per altri siti web eventualmente consultati dall'utente tramite\n\t\tlink in esso contenuti.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i4\",\n\t\t\t\t\t\tcontent: `Scopo del presente documento è fornire indicazioni circa le modalità, i tempi e la natura delle informazioni che i titolari del trattamento devono\n\t\tfornire agli utenti al momento della connessione alle pagine web di ${config.site.name}, indipendentemente dagli scopi del\n\t\tcollegamento stesso, secondo la legislazione Italiana ed Europea.`,\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i5\",\n\t\t\t\t\t\tcontent: `L'informativa può subire modifiche a causa dell'introduzione di nuove norme al riguardo, si invita pertanto l'utente a controllare periodicamente la\n\t\tpresente pagina.`,\n\t\t\t\t\t\tindex: 4,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i6\",\n\t\t\t\t\t\tcontent: `Se l'utente ha meno di quattordici anni, ai sensi dell'art.8, c.1 regolamento (UE) 2016/679, e dell'Art. 2 - Quinquies del D.Lgs 196/2003, così come\n\t\tmodificato dal D.Lgs 181/18, dovrà legittimare il suo consenso attraverso l'autorizzazione dei genitori o di chi ne fa le veci.`,\n\t\t\t\t\t\tindex: 5,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"info\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Titolare del trattamento\",\n\t\t\t\tindex: 1,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"t1\",\n\t\t\t\t\t\tcontent: `Il titolare del trattamento è la persona fisica o giuridica, l'autorità pubblica, il servizio o altro organismo che, singolarmente o insieme ad\n\t\taltri, determina le finalità e i mezzi del trattamento di dati personali. Si occupa anche dei profili sulla sicurezza.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"t2\",\n\t\t\t\t\t\tcontent: `Relativamente al presente sito web il titolare del trattamento è: ${config.privacyAdmin.name}, e per\n\t\togni chiarimento o esercizio dei diritti dell'utente potrà contattarlo al seguente indirizzo mail: ${config.privacyAdmin.email}`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"owner\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Luogo trattamento dati\",\n\t\t\t\tindex: 2,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"l1\",\n\t\t\t\t\t\tcontent: `Il trattamento dei dati generato dall'utilizzo di ${config.site.name} avviene presso ${config.company.address}`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"l2\",\n\t\t\t\t\t\tcontent: `In caso di necessità, i dati connessi al servizio newsletter possono essere trattati dal responsabile del trattamento o soggetti da esso incaricati a\n\t\ttal fine presso la relativa sede.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"location\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Base giuridica del trattamento\",\n\t\t\t\tindex: 3,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"b1\",\n\t\t\t\t\t\tcontent: `Il trattamento dei dati personali da parte di ${config.site.name} si basa sul consenso – ai sensi dell'art. 6, par. 1, lett.\n\t\ta) del Regolamento UE 2016/679 – espresso dall'utente mediante la navigazione su questo sito web e la sua consultazione, così accettando la presente informativa.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"b2\",\n\t\t\t\t\t\tcontent: `Il consenso è facoltativo e può essere revocato in qualsiasi momento mediante richiesta inviata a mezzo email a ${config.privacyAdmin.email} precisando che, in tal caso, in assenza di consenso non potranno essere erogati alcuni servizi e la navigazione sul sito web potrebbe essere compromessa.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"law\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Cookies\",\n\t\t\t\tindex: 4,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"c1\",\n\t\t\t\t\t\tcontent: `In questa sezione viene descritto in che modo questo Sito e terze parti utilizzano i cookie e tecnologie similari. L'utilizzo dei cookie avviene nel\n\t\trispetto della relativa normativa europea (direttiva 2009/136/CE ha modificato la direttiva 2002/58/CE \"E Privacy) e nazionale (Provvedimento Garante\n\t\tper la protezione dei dati personali dell'8 maggio 2014 e successivi chiarimenti nonché Linee Guida cookie e altri strumenti di tracciamento del 10\n\t\tgiugno 2021 n.231).`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"c2\",\n\t\t\t\t\t\tcontent: `Per avere informazioni complete riguardo ai cookies visitare la nostra cookie policy: ${config.site.cookiePolicyUri}`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"cookies\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Tipologia di trattamento dati\",\n\t\t\t\tindex: 5,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"td1\",\n\t\t\t\t\t\tcontent: `Il trattamento dei dati personali è necessario per il perseguimento del legittimo interesse del titolare del trattamento per finalità di fornire\n\t\tinformazioni circa l'attività di ${config.site.name} ai sensi dell'art. 6, par. 1, lett. f) del Regolamento UE 2016/679, nel\n\t\trispetto di quanto previsto dal medesimo Regolamento.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"td2\",\n\t\t\t\t\t\tcontent: `Il presente sito fa uso di Log Files nei quali vengono conservate informazioni raccolte in maniera automatizzata durante le visite degli utenti. Tali informazioni sono trattate in forma automatizzata e raccolte in forma esclusivamente aggregata al fine di verificare il corretto\n\t\tfunzionamento del sito, e per motivi di sicurezza. Le informazioni saranno trattate in base ai legittimi interessi del titolare e potrebbero essere le seguenti:`,\n\t\t\t\t\t\tlist: [\n\t\t\t\t\t\t\t{ key: \"tdl1\", content: `indirizzo internet protocol (IP)` },\n\t\t\t\t\t\t\t{ key: `tdl2`, content: `tipo di browser e parametri del dispositivo usato per connettersi al sito` },\n\t\t\t\t\t\t\t{ key: `tdl3`, content: `nome dell'internet service provider (ISP)` },\n\t\t\t\t\t\t\t{ key: `tdl4`, content: `data e orario di visita` },\n\t\t\t\t\t\t\t{ key: `tdl5`, content: `pagina web di provenienza del visitatore (referral) e di uscita` },\n\t\t\t\t\t\t\t{ key: `tdl6`, content: `eventualmente il numero di click` },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"td3\",\n\t\t\t\t\t\tcontent: `A fini di sicurezza (filtri antispam, firewall, rilevazione virus), i dati registrati automaticamente possono eventualmente comprendere anche dati\n\t\tpersonali come l'indirizzo Ip, che potrebbe essere utilizzato, conformemente alle leggi vigenti in materia, al fine di bloccare tentativi di\n\t\tdanneggiamento al sito medesimo o di recare danno ad altri utenti, o comunque attività dannose o costituenti reato. Tali dati non sono mai utilizzati\n\t\tper l'identificazione o la profilazione dell'utente, ma solo a fini di tutela del sito e dei suoi utenti, tali informazioni saranno trattate in base ai\n\t\tlegittimi interessi del titolare.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"dataTerms\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Tipologia di dati acquisti\",\n\t\t\t\tindex: 6,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `${config.site.name} raccoglie i dati degli utenti direttamente dal sito o da terze parti. I dati sono necessari per la navigazione\n\t\tdel sito.`,\n\t\t\t\t\t\tkey: \"tda1\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"dataTypes\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Dati forniti dall'utente\",\n\t\t\t\tindex: 7,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `Qualora il sito consenta l'inserimento di commenti, oppure in caso di specifici servizi richiesti dall'utente, ivi compresi la possibilità di inviare\n\t\til Curriculum Vitae per un eventuale rapporto lavorativo, il sito rileva automaticamente e registra alcuni dati identificativi dell'utente, compreso\n\t\tl'indirizzo mail. Tali dati si intendono volontariamente forniti dall'utente al momento della richiesta di erogazione del servizio.`,\n\t\t\t\t\t\tkey: \"tfa21\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"tfa22\",\n\t\t\t\t\t\tcontent: `Inserendo un commento o altra informazione l'utente accetta espressamente l'informativa privacy. I dati ricevuti verranno utilizzati esclusivamente\n\t\tper l'erogazione del servizio richiesto e per il solo tempo necessario per la fornitura del servizio.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"tfa23\",\n\t\t\t\t\t\tcontent: `Le informazioni che gli utenti del sito riterranno di rendere pubbliche tramite i servizi e gli strumenti messi a disposizione degli stessi, sono\n\t\tfornite dall'utente consapevolmente e volontariamente, esentando il presente sito da qualsiasi responsabilità in merito ad eventuali violazioni delle\n\t\tleggi. Spetta all'utente verificare di avere i permessi per l'immissione di dati personali di terzi o di contenuti tutelati dalle norme nazionali ed\n\t\tinternazionali.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"tfa24\",\n\t\t\t\t\t\tcontent: `L'invio facoltativo, esplicito e volontario di posta elettronica agli indirizzi indicati su questo sito comporta la successiva acquisizione\n\t\tdell'indirizzo del mittente, necessario per rispondere alle richieste, nonché degli eventuali altri dati personali inseriti nella missiva.`,\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"tfa25\",\n\t\t\t\t\t\tcontent: `Specifiche informative di sintesi verranno progressivamente riportate o visualizzate nelle pagine del sito predisposte per particolari servizi a\n\t\trichiesta.`,\n\t\t\t\t\t\tindex: 4,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"dataFunctions\",\n\t\t\t},\n\n\t\t\t{\n\t\t\t\ttitle: \"Interazione social network\",\n\t\t\t\tindex: 12,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `Il presente sito incorpora anche plugin e/o bottoni per i social network, al fine di consentire una facile condivisione dei contenuti sui vostri\n\t\tsocial network preferiti. Tali plugin sono programmati in modo da non impostare alcun cookie all'accesso della pagina, per salvaguardare la privacy\n\t\tdegli utenti. Eventualmente i cookie vengono impostati, se così previsto dai social network, solo quando l'utente fa effettivo e volontario uso del\n\t\tplugin. Si tenga presente che se l'utente naviga avendo effettuato il login nel social network allora ha già acconsentito all'uso dei cookie veicolati\n\t\ttramite questo sito al momento dell'iscrizione al social network.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\tkey: \"isn1\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `Questo tipo di servizi permette di effettuare interazioni con i social network, o con altre piattaforme esterne, direttamente dalle pagine di ${config.site.name}`,\n\t\t\t\t\t\tkey: \"isn2\",\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `Le interazioni e le informazioni acquisite da ${config.site.name} sono in ogni caso soggette alle impostazioni privacy\n\t\t\tdell'Utente relative ad ogni social network. Nel caso in cui sia installato un servizio di interazione con i social network, è possibile che, anche nel\n\t\t\tcaso gli Utenti non utilizzino il servizio, lo stesso raccolga dati di traffico relativi alle pagine in cui è installato.`,\n\t\t\t\t\t\tkey: \"isn3\",\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"socials\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Diritti dell'utente\",\n\t\t\t\tindex: 13,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `Viene garantito all'utente il rispetto dei suoi diritti nell'ambito della protezione dei dati personali. In linea con quanto ripreso e affermato dal\n\t\tGDPR, in relazione al trattamento dei propri dati personali, l'utente ha diritto di chiedere al Titolare:`,\n\n\t\t\t\t\t\tlist: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tkey: \"drl1\",\n\t\t\t\t\t\t\t\tcontent: `L'accesso: l'utente può chiedere conferma che sia o meno in essere un trattamento di dati che lo riguarda, oltre a maggiori chiarimenti circa le\n\t\tinformazioni di cui alla presente informativa`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tkey: \"drl2\",\n\t\t\t\t\t\t\t\tcontent: `La rettifica: può chiedere di rettificare o integrare i dati che ha fornito, qualora inesatti o incompleti`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tkey: \"drl3\",\n\t\t\t\t\t\t\t\tcontent: `La cancellazione: può chiedere che i suoi dati vengano cancellati, qualora non siano più necessari alle nostre finalità, in caso di revoca del consenso o opposizione al trattamento, in caso di trattamento illecito, ovvero sussista un obbligo legale di cancellazione o si riferiscano a soggetti minori di anni quattordici;`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tkey: \"drl4\",\n\t\t\t\t\t\t\t\tcontent: `La limitazione: può chiedere che i suoi dati siano trattati solo ai fini della conservazione, con esclusioni di altri trattamenti, per il periodo necessario alla rettifica dei suoi dati, in caso di trattamento illecito per il quale si opponga alla cancellazione, qualora lei debba esercitare i suoi diritti in sede giudiziaria e i dati conservati dal Titolare le possono essere utili e, infine, in caso di opposizione al trattamento e sia in corso una verifica sulla prevalenza dei motivi legittimi del Titolare rispetto ai suoi.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tkey: \"drl5\",\n\t\t\t\t\t\t\t\tcontent: `L'opposizione: può opporsi in qualunque momento al trattamento dei suoi dati, salvo che vi siano motivi legittimi del Titolare per procedere al trattamento che prevalgano sui suoi, per esempio per l'esercizio o la propria difesa in sede giudiziaria.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tkey: \"drl6\",\n\t\t\t\t\t\t\t\tcontent: `La portabilità: può chiedere di ricevere i suoi dati, o di farli trasmettere ad altro titolare da lei indicato, in un formato strutturato, di uso comune e leggibile da dispositivo automatico.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tkey: \"drl7\",\n\t\t\t\t\t\t\t\tcontent: `La revoca: può revocare il suo consenso all'utilizzo di cookie (Cookie Policy) in qualsiasi momento, poiché in questo caso costituisca la base del trattamento. La revoca del consenso comunque non pregiudica la liceità del trattamento basata sul consenso svolto prima della revoca stessa.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tkey: \"du1\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"du2\",\n\t\t\t\t\t\tcontent: `In qualsiasi momento l'utente può chiedere di esercitare i suddetti diritti a ${config.site.name} rivolgendosi all'indirizzo mail: ${config.privacyAdmin.email}`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"du3\",\n\t\t\t\t\t\tcontent: `Inoltre, l'utente ha diritto di proporre reclamo nei confronti dell'Autorità di controllo italiana: \"Garante per la Protezione dei Dati Personali\"\n\t\tnel caso in cui ritenga che i suoi diritti siano stati violati da ${config.site.name} o nel caso in cui non ritenga\n\t\tsoddisfacente la risposta di ${config.site.name} alle sue richieste.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"rights\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Trasferimento a Paesi extra UE\",\n\t\t\t\tindex: 14,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `Il presente sito potrebbe condividere alcuni dei dati raccolti con servizi localizzati al di fuori dell'area dell'Unione Europea. In particolare con\n\t\tGoogle, Facebook e Microsoft (LinkedIn) tramite i social plugin e il servizio di Google Analytics. Il trasferimento è autorizzato e strettamente\n\t\tregolato dall'articolo 45, comma 1 del Regolamento (UE) 2016/679, per cui non occorre ulteriore consenso.`,\n\t\t\t\t\t\tkey: \"tpe1\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `Non verranno mai trasferiti dati a Paesi terzi che non rispettino le condizioni previste dall'articolo 45 e ss, del Regolamento (UE).`,\n\t\t\t\t\t\tkey: \"tpe2\",\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"transferExtraEu\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Modifiche al presente documento\",\n\t\t\t\tindex: 15,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: `Il presente documento, che costituisce la privacy policy di questo sito, è pubblicato all'indirizzo: ${config.site.privacyPolicyUri}`,\n\t\t\t\t\t\tkey: \"ts1\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"ts2\",\n\t\t\t\t\t\tcontent: `Esso può essere soggetto a modifiche o aggiornamenti. Qualora si tratti di modifiche ed aggiornamenti rilevanti questi saranno segnalati con apposite\n\t\tnotifiche agli utenti.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"ts3\",\n\t\t\t\t\t\tcontent: `Le versioni precedenti del documento saranno comunque consultabili a questa pagina.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"ts4\",\n\t\t\t\t\t\tcontent: `Il documento è stato aggiornato in data ${new Date(config.date).toLocaleDateString(\n\t\t\t\t\t\t\t\"it-IT\",\n\t\t\t\t\t\t)} per essere conforme alle disposizioni normative in materia, ed in particolare in conformità al Regolamento (UE) 2016/679.`,\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"timestamps\",\n\t\t\t},\n\t\t],\n\t};\n\n\tif (config.storage?.durate) {\n\t\tcontent.chapters.push({\n\t\t\ttitle: \"Conservazione Dati\",\n\t\t\tindex: 9,\n\t\t\tparagraphs: [\n\t\t\t\t{\n\t\t\t\t\tcontent: `Conformemente a quanto prescritto dall'art. 5.1(c) del Regolamento, i sistemi informativi e i programmi informatici utilizzati da ${config.site.name} sono configurati in modo da ridurre al minimo l'uso di dati personali e identificativi; tali dati saranno trattati solo nella misura necessaria per il\n\t\tconseguimento delle finalità indicate nella presente Policy.`,\n\t\t\t\t\tkey: \"cd1\",\n\t\t\t\t\tindex: 0,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"cd2\",\n\t\t\t\t\tcontent: `I dati verranno conservati per il periodo di tempo strettamente necessario al conseguimento delle finalità in concreto perseguite e, in ogni caso, il\n\t\tcriterio utilizzato per determinare il periodo di conservazione è improntato al rispetto dei termini consentiti dalle leggi applicabili e dai principi\n\t\tdi minimizzazione del trattamento e limitazione della conservazione.`,\n\t\t\t\t\tindex: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"cd3\",\n\t\t\t\t\tcontent: `Nello specifico, i dati verranno conservati per i seguenti periodi: ${config.storage.durate}`,\n\t\t\t\t\tindex: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tkey: \"cd4\",\n\t\t\t\t\tcontent: `I dati utilizzati a fini di sicurezza (blocco tentativi di danneggiamento del sito) sono conservati per il tempo strettamente necessario al\n\t\traggiungimento del fine anteriormente indicato.`,\n\t\t\t\t\tindex: 3,\n\t\t\t\t},\n\t\t\t\t,\n\t\t\t],\n\t\t\tkey: \"dataStorage\",\n\t\t});\n\t}\n\tif (config.socialNetworks) {\n\t\tconst linkedin = `Pulsante e widget sociali di Linkedin (LinkedIn Corporation). Il pulsante e i widget sociali di LinkedIn sono servizi di interazione con il\n\t\t\t\tsocial network Linkedin, forniti da LinkedIn Corporation. Dati Personali raccolti: Cookie e Dati di utilizzo. Luogo del trattamento: Stati Uniti\n\t\t\t\t– Privacy Policy: https://www.linkedin.com/legal/privacy-policy`;\n\t\tconst facebook = `Pulsante Mi Piace e widget sociali di Facebook (Facebook, Inc.) Il pulsante \"Mi Piace\" e i widget sociali di Facebook sono servizi di\n\t\t\t\tinterazione con il social network Facebook, forniti da Facebook, Inc. Dati Personali raccolti: Cookie e Dati di utilizzo. Luogo del trattamento:\n\t\t\t\tStati Uniti – Privacy Policy: https://www.facebook.com/privacy/explanation.`;\n\n\t\tconst google = `Pulsante +1 e widget sociali di Google+ (Google Inc.) Il pulsante +1 e i widget sociali di Google+ sono servizi di interazione con il social\n\t\t\t\tnetwork Google+, forniti da Google Inc. Dati Personali raccolti: Cookie e Dati di utilizzo. Luogo del trattamento: Stati Uniti – Privacy Policy:\n\t\t\t\thttps://policies.google.com/privacy?hl=it.`;\n\t\tconst twitter = `Pulsante Tweet e widget sociali di Twitter (Twitter, Inc.) Il pulsante Tweet e i widget sociali di Twitter sono servizi di interazione con il\n\t\t\t\tsocial network Twitter, forniti da Twitter, Inc. Dati Personali raccolti: Cookie e Dati di utilizzo. Luogo del trattamento: Stati Uniti –\n\t\t\t\tPrivacy Policy: https://twitter.com/en/privacy.`;\n\t\tconst pinterest = `Pulsante Pin It e widget sociali di Pinterest (Pinterest Inc.)<br />Pulsante Pin It e i widget sociali di Pinterest sono servizi di interazione\n\t\t\t\tcon il social network Pinterest, fornito da Pinterest Inc.Dati Personali raccolti: Cookie e Dati di utilizzo. Luogo del trattamento: USA –\n\t\t\t\tPrivacy Policy: https://policy.pinterest.com/it/privacy-policy`;\n\t\tconst instagram = `Pulsante e widget sociali di Instagram (Instagram, Inc.)<br />Il pulsante e i widget sociali di Instagram sono servizi di interazione con il\n\t\t\t\tsocial network Instagram, fornito da Instagram, Inc. Dati Personali raccolti: Cookie e Dati di utilizzo Luogo del trattamento: USA – Privacy\n\t\t\t\tPolicy: https://help.instagram.com/196883487377501`;\n\t\tconst socialText: IParagraphList[] = [];\n\t\tif (config.socialNetworks.find((f) => f.company.toLowerCase() === \"linkedin\")) socialText.push({ content: linkedin, key: \"linkedin\" });\n\t\tif (config.socialNetworks.find((f) => f.company.toLowerCase() === \"facebook\")) socialText.push({ content: facebook, key: \"facebook\" });\n\t\tif (config.socialNetworks.find((f) => f.company.toLowerCase() === \"google\")) socialText.push({ content: google, key: \"google\" });\n\t\tif (config.socialNetworks.find((f) => f.company.toLowerCase() === \"twitter\")) socialText.push({ content: twitter, key: \"twitter\" });\n\t\tif (config.socialNetworks.find((f) => f.company.toLowerCase() === \"instagram\")) socialText.push({ content: instagram, key: \"instagram\" });\n\t\tif (config.socialNetworks.find((f) => f.company.toLowerCase() === \"pinterest\")) socialText.push({ content: pinterest, key: \"pinterest\" });\n\t\tconst socialParagraph = {\n\t\t\tcontent: `Le interazioni e le informazioni acquisite da ${config.site.name} sono in ogni caso soggette alle impostazioni privacy dell'Utente relative ad ogni social network. Nel caso in cui sia installato un servizio di interazione con i social network, è possibile che, anche nel caso gli Utenti non utilizzino il servizio, lo stesso raccolga dati di traffico relativi alle pagine in cui è installato.`,\n\t\t\tlist: socialText,\n\t\t\tkey: \"isn4\",\n\t\t\tindex: 3,\n\t\t};\n\t\tcontent.chapters.find((f) => f.key === \"socials\").paragraphs.push(socialParagraph);\n\t}\n\tif (config.collectedData?.dataTypes?.length) {\n\t\tcontent.chapters\n\t\t\t.find((f) => f.key === \"dataTypes\")\n\t\t\t.paragraphs.push({\n\t\t\t\tcontent: `I dati raccolti sono da ${config.site.name} sono:`,\n\t\t\t\tlist: config.collectedData.dataTypes.map((m) => {\n\t\t\t\t\treturn { content: m.label, key: m.label.replace(/ /g, \"\") };\n\t\t\t\t}),\n\t\t\t\tkey: \"tda2\",\n\t\t\t\tindex: 1,\n\t\t\t});\n\t}\n\tif (config.collectedData?.scopes?.length) {\n\t\tcontent.chapters.push({\n\t\t\ttitle: \"Finalità del trattamento dati\",\n\t\t\tindex: 8,\n\t\t\tparagraphs: [\n\t\t\t\t{\n\t\t\t\t\tcontent: `I dati raccolti dal sito durante il suo funzionamento sono utilizzati per finalità sopra indicate e per le seguenti finalità:`,\n\t\t\t\t\tlist: config.collectedData.scopes.map((m) => {\n\t\t\t\t\t\treturn { content: m.label, key: m.label.replace(/ /g, \"\") };\n\t\t\t\t\t}),\n\t\t\t\t\tkey: \"ftd1\",\n\t\t\t\t\tindex: 0,\n\t\t\t\t},\n\t\t\t],\n\t\t\tkey: \"dataScopes\",\n\t\t});\n\t}\n\tif (config.collectedData?.contactModule?.data?.length) {\n\t\tcontent.chapters.push({\n\t\t\ttitle: \"Moduli di contatto\",\n\t\t\tindex: 11,\n\t\t\tparagraphs: [\n\t\t\t\t{\n\t\t\t\t\tcontent: `L'utente può compilare il/i moduli di contatto/richiesta informazioni, inserendo i propri dati e acconsentendo al loro uso per rispondere alle\n\t\trichieste di natura indicata nella intestazione del modulo.`,\n\t\t\t\t\tkey: \"mc1\",\n\t\t\t\t\tindex: 0,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: `Dati personali che potrebbero essere raccolti:`,\n\t\t\t\t\tlist: config.collectedData.contactModule.data.map((m) => {\n\t\t\t\t\t\treturn { content: m.label, key: m.label.replace(/ /g, \"\") };\n\t\t\t\t\t}),\n\t\t\t\t\tkey: \"mc2\",\n\t\t\t\t\tindex: 1,\n\t\t\t\t},\n\t\t\t],\n\t\t\tkey: \"contacts\",\n\t\t});\n\t}\n\tif (config.payments?.companies?.length) {\n\t\tconst stripe = `Pulsante di pagamento Stripe (Stripe Inc.). Pulsante di pagamento Stripe è un servizio di pagamento fornito da Stripe, Inc. Dati Personali raccolti: Cookie e Dati di utilizzo. Luogo del trattamento: USA – Privacy Policy: https://stripe.com/it/privacy`;\n\t\tconst paypal = `Pulsante di pagamento Paypal (PayPal Inc.). Pulsante di pagamento Paypal è un servizio di pagamento fornito da PayPal, Inc. Dati Personali raccolti: Cookie e Dati di utilizzo. Luogo del trattamento: USA – Privacy Policy: https://www.paypal.com/it/webapps/mpp/ua/privacy-full`;\n\t\tconst paymentCompanies: IParagraphList[] = [];\n\t\tif (config.payments.companies.find((f) => f.company.toLowerCase() === \"stripe\")) paymentCompanies.push({ content: stripe, key: \"stripe\" });\n\t\tif (config.payments.companies.find((f) => f.company.toLowerCase() === \"paypal\")) paymentCompanies.push({ content: paypal, key: \"paypal\" });\n\n\t\tcontent.chapters.push({\n\t\t\ttitle: \"Pagamenti\",\n\t\t\tindex: 10,\n\t\t\tparagraphs: [\n\t\t\t\t{\n\t\t\t\t\tcontent: `${config.site.name} utilizza servizi di pagamento per eseguire pagamenti con carta di credito, bonifico bancario o\n\t\t\taltri strumenti. ${config.site.name} non raccoglie o acquisisce i dati usati per il pagamento.`,\n\t\t\t\t\tkey: \"py1\",\n\t\t\t\t\tindex: 0,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: `I dati per il pagamento sono raccolti e acquisiti direttamente dal gestore del servizio di pagamento, come l'ente carta di credito, Paypal,\n\t\t\tStripe o simili. Questi servizi possono effettuare invio di messaggi verso l'utente, per esempio email o sms di notifiche del pagamento.`,\n\t\t\t\t\tkey: \"py2\",\n\t\t\t\t\tindex: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcontent: `I dati acquisiti e l'utilizzo degli stessi da parte di servizi terzi sono regolamentati dalle rispettive Privacy Policy alle quali si prega di\n\t\t\tfare riferimento.`,\n\t\t\t\t\tkey: \"py3\",\n\t\t\t\t\tindex: 2,\n\t\t\t\t},\n\n\t\t\t\t{\n\t\t\t\t\tcontent: `Lista dei principalii servizi di terze parti utilizzati per le finalità relative ai pagamenti:`,\n\t\t\t\t\tkey: \"py4\",\n\t\t\t\t\tlist: paymentCompanies,\n\t\t\t\t\tindex: 3,\n\t\t\t\t},\n\t\t\t],\n\t\t\tkey: \"payments\",\n\t\t});\n\t}\n\treturn sortFinalDoc(content);\n}\n","import type { CookieContent, IDoc, IParagraphList, ITableHeaders } from \"@app/types/webcomponent.type\";\nimport { cookieHeaders, mapCookie, sortFinalDoc } from \"./utils\";\n\n// https://www.iubenda.com/privacy-policy/54363417/cookie-policy?an=no&s_ck=false&newmarkup=yes\n\nexport default function (config: CookieContent) {\n\tconst content: IDoc = {\n\t\tid: config.id,\n\t\ttitle: `Cookie Policy di ${config.site.name}`,\n\t\tint: { key: \"it\", flag: \"\" },\n\t\tchapters: [\n\t\t\t{\n\t\t\t\ttitle: \"Informazioni generali\",\n\t\t\t\tindex: 0,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i1\",\n\t\t\t\t\t\tcontent: `Questo documento contiene informazioni in merito alle tecnologie che consentono a questo Sito Web di raggiungere gli scopi descritti di seguito. Tali tecnologie permettono al Titolare di raccogliere e salvare informazioni (per esempio tramite l’utilizzo di Cookie) o di utilizzare risorse (per esempio eseguendo uno script) sul dispositivo dell’Utente quando quest’ultimo interagisce con questo Sito Web.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i2\",\n\t\t\t\t\t\tcontent: `Per semplicità, in questo documento tali tecnologie sono sinteticamente definite “Strumenti di Tracciamento”, salvo vi sia ragione di differenziare. Per esempio, sebbene i Cookie possano essere usati in browser sia web sia mobili, sarebbe fuori luogo parlare di Cookie nel contesto di applicazioni per dispositivi mobili, dal momento che si tratta di Strumenti di Tracciamento che richiedono la presenza di un browser. Per questo motivo, all’interno di questo documento il temine Cookie è utilizzato solo per indicare in modo specifico quel particolare tipo di Strumento di Tracciamento.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i3\",\n\t\t\t\t\t\tcontent: `Alcune delle finalità per le quali vengono impiegati Strumenti di Tracciamento potrebbero, inoltre, a seconda della legge applicabile richiedere il consenso dell’Utente. Se viene prestato il consenso, esso può essere revocato liberamente in qualsiasi momento seguendo le istruzioni contenute in questo documento.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i4\",\n\t\t\t\t\t\tcontent: `Questo Sito Web utilizza Strumenti di Tracciamento gestiti direttamente dal Titolare (comunemente detti Strumenti di Tracciamento “di prima parte”) e Strumenti di Tracciamento che abilitano servizi forniti da terzi (comunemente detti Strumenti di Tracciamento “di terza parte”). Se non diversamente specificato all’interno di questo documento, tali terzi hanno accesso ai rispettivi Strumenti di Tracciamento.`,\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i5\",\n\t\t\t\t\t\tcontent: `Durata e scadenza dei Cookie e degli altri Strumenti di Tracciamento simili possono variare a seconda di quanto impostato dal Titolare o da ciascun fornitore terzo. Alcuni di essi scadono al termine della sessione di navigazione dell’Utente.`,\n\t\t\t\t\t\tindex: 4,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i6\",\n\t\t\t\t\t\tcontent: `In aggiunta a quanto specificato nella descrizione di ciascuna delle categorie di seguito riportate, gli Utenti possono ottenere informazioni più dettagliate ed aggiornate sulla durata, così come qualsiasi altra informazione rilevante - quale la presenza di altri Strumenti di Tracciamento - nelle privacy policy dei rispettivi fornitori terzi (tramite i link messi a disposizione) o contattando il Titolare.`,\n\t\t\t\t\t\tindex: 5,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"info\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Attività strettamente necessarie a garantire il funzionamento di questo Sito Web e la fornitura del Servizio\",\n\t\t\t\tindex: 1,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"act1\",\n\t\t\t\t\t\tcontent: `Questo Sito Web utilizza Cookie comunemente detti “tecnici” o altri Strumenti di Tracciamento analoghi per svolgere attività strettamente necessarie a garantire il funzionamento o la fornitura del Servizio.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t// {\n\t\t\t\t\t// \tkey: \"act2\",\n\t\t\t\t\t// \tcontent: `Technical Tracking Tools from ${config.company.name}`,\n\t\t\t\t\t// \tindex: 1,\n\t\t\t\t\t// \ttable: { headers: cookieHeaders, rows: config.cookies.filter((f) => f.type === \"technical\" && !f.third).map(mapCookie) },\n\t\t\t\t\t// },\n\t\t\t\t\t// {\n\t\t\t\t\t// \tkey: \"act2\",\n\t\t\t\t\t// \tcontent: `Third party technical Tracking Tools`,\n\t\t\t\t\t// \tindex: 2,\n\t\t\t\t\t// \ttable: { headers: cookieHeaders, rows: config.cookies.filter((f) => f.type === \"technical\" && f.third).map(mapCookie) },\n\t\t\t\t\t// },\n\t\t\t\t],\n\t\t\t\tkey: \"technicals\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Attività connesse all'autenticazione degli utenti e alla gestione dei rispettivi dati\",\n\t\t\t\tindex: 2,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"auth0\",\n\t\t\t\t\t\tcontent: `Questi vengono memorizzati quando accedi al sito ${config.site.name}, utilizzando il nostro servizio di autenticazione. Quando lo fai, accetti l'informativa sulla privacy associata.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t// table: { headers: cookieHeaders, rows: [] },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"authentication\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Attività di analisi dell'utilizzo del Sito Web\",\n\t\t\t\tindex: 3,\n\t\t\t\tparagraphs: [],\n\t\t\t\tkey: \"analytics\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Cookies di terze parti\",\n\t\t\t\tindex: 4,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr1\",\n\t\t\t\t\t\tcontent: `Alcune delle nostre pagine mostrano contenuti di fornitori esterni, ad es. YouTube, Facebook e Twitter.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr2\",\n\t\t\t\t\t\tcontent: `Per visualizzare questo contenuto di terze parti, devi prima accettare i loro termini e condizioni specifici. Ciò include le loro politiche sui cookie, su cui non abbiamo alcun controllo.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr3\",\n\t\t\t\t\t\tcontent: `Se non visualizzi questo contenuto, sul tuo dispositivo non vengono installati cookie di terze parti.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr4\",\n\t\t\t\t\t\tcontent: `Provider dei sistemi di tracking di terze parti`,\n\t\t\t\t\t\tlist: [],\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr5\",\n\t\t\t\t\t\tcontent: `Questi servizi di terze parti sono al di fuori del controllo di ${config.company.name}. I fornitori possono, in qualsiasi momento, modificare i propri termini di servizio, finalità e utilizzo dei cookie, ecc.`,\n\t\t\t\t\t\tindex: 4,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"third-party\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Come posso gestire i cookies?\",\n\t\t\t\tindex: 5,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"mng1\",\n\t\t\t\t\t\ttitle: `Cancellazione dei cookie dal tuo dispositivo`,\n\t\t\t\t\t\tcontent: `Puoi eliminare tutti i cookie già presenti sul tuo dispositivo cancellando la cronologia di navigazione del tuo browser. Questo rimuoverà tutti i cookie da tutti i siti web che hai visitato. Tieni presente, tuttavia, che potresti anche perdere alcune informazioni salvate (ad es. dettagli di accesso salvati, preferenze del sito).`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"mng2\",\n\t\t\t\t\t\ttitle: `Gestione di specifici cookie`,\n\t\t\t\t\t\tcontent: `Per un controllo più dettagliato sui cookie specifici del sito, controlla le impostazioni sulla privacy e sui cookie nel tuo browser preferito.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"mng3\",\n\t\t\t\t\t\ttitle: `Blocco dei cookie`,\n\t\t\t\t\t\tcontent: `Puoi impostare i browser più moderni in modo da impedire che qualsiasi cookie venga inserito sul tuo dispositivo, ma potresti dover modificare manualmente alcune preferenze ogni volta che visiti un sito/una pagina. Inoltre, alcuni servizi e funzionalità potrebbero non funzionare correttamente (ad es. accesso al profilo).`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"mng4\",\n\t\t\t\t\t\ttitle: `Gestione dei cookie per analitici`,\n\t\t\t\t\t\tcontent: `Puoi gestire le tue preferenze relative ai cookie da ${config.site.name} nella pagina dedicata del sito.`,\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"managment\",\n\t\t\t},\n\t\t],\n\t};\n\n\tif (config.cookies?.length) {\n\t\tconst technicalFirst = config.cookies.filter((f) => f.type === \"technical\" && !f.third).map((m) => mapCookie(m));\n\t\tconst technicalThird = config.cookies.filter((f) => f.type === \"technical\" && f.third).map((m) => mapCookie(m));\n\t\tif (technicalFirst.length || technicalThird.length) {\n\t\t\tif (technicalFirst.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"technicals\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `I dati tecnici raccolti dagli strumenti di tracking di ${config.site.name} sono:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: technicalFirst },\n\t\t\t\t\t\tkey: \"tda2\",\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (technicalThird.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"technicals\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `I dati tecnici raccolti dai cookie di terze parti sono:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: technicalThird },\n\t\t\t\t\t\tkey: \"tda3\",\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst analyticsFirst = config.cookies.filter((f) => f.type === \"analytics\" && !f.third).map((m) => mapCookie(m));\n\t\tconst analyticsThird = config.cookies.filter((f) => f.type === \"analytics\" && f.third).map((m) => mapCookie(m));\n\n\t\tif (analyticsFirst.length || analyticsThird.length) {\n\t\t\tif (analyticsFirst.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"analytics\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `I dati raccolti dagli strumenti di tracking di ${config.site.name} come strumento di analisi sono:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: analyticsFirst },\n\t\t\t\t\t\tkey: \"ana1\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (analyticsThird.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"analytics\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `I dati analitici raccolti dai cookie di terze parti sono:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: analyticsThird },\n\t\t\t\t\t\tkey: \"ana2\",\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst authenticationsFirst = config.cookies.filter((f) => f.type === \"authentication\" && !f.third).map((m) => mapCookie(m));\n\t\tconst authenticationsThird = config.cookies.filter((f) => f.type === \"authentication\" && f.third).map((m) => mapCookie(m));\n\n\t\tif (authenticationsFirst.length || authenticationsThird.length) {\n\t\t\tif (authenticationsFirst.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"authentication\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `I dati raccolti dagli strumenti di tracking di ${config.site.name} per l'autenticazione sono:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: authenticationsFirst },\n\t\t\t\t\t\tkey: \"auth1\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (authenticationsThird.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"authentication\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `I dati raccolti dai cookie di terze parti per l'autenticazione sono:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: authenticationsThird },\n\t\t\t\t\t\tkey: \"auth2\",\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst advertising = config.cookies.filter((f) => f.type === \"advertising\").map((m) => mapCookie(m));\n\n\t\tif (advertising.length) {\n\t\t\tcontent.chapters\n\t\t\t\t.find((f) => f.key === \"advertising\")\n\t\t\t\t?.paragraphs.push({\n\t\t\t\t\tcontent: `I dati raccolti dai cookie pubblicitari di terze parti sono:`,\n\t\t\t\t\ttable: { headers: cookieHeaders, rows: advertising },\n\t\t\t\t\tkey: \"adv1\",\n\t\t\t\t\tindex: 0,\n\t\t\t\t});\n\t\t}\n\t\tconst thirds = config.cookies.filter((f) => f.type === \"third-party\").map((m) => mapCookie(m));\n\n\t\tif (thirds.length) {\n\t\t\tcontent.chapters\n\t\t\t\t.find((f) => f.key === \"third-party\")\n\t\t\t\t?.paragraphs.push({\n\t\t\t\t\tcontent: `I dati raccolti dai cookie di terze parti sono:`,\n\t\t\t\t\ttable: { headers: cookieHeaders, rows: thirds },\n\t\t\t\t\tkey: \"th1\",\n\t\t\t\t\tindex: 0,\n\t\t\t\t});\n\t\t}\n\t}\n\treturn sortFinalDoc(content);\n}\n","import type { CookieContent, CookieRow, IDoc, IParagraphList, IRow, ITableHeaders } from \"@app/types/webcomponent.type\";\nimport { cookieHeaders, mapCookie, sortFinalDoc } from \"./utils\";\n\nexport default function (config: CookieContent) {\n\tconst content: IDoc = {\n\t\tid: config.id,\n\t\ttitle: `Cookie Policy of ${config.site.name}`,\n\t\tint: { key: \"en\", flag: \"\" },\n\t\tchapters: [\n\t\t\t{\n\t\t\t\ttitle: \"General Informations\",\n\t\t\t\tindex: 0,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i1\",\n\t\t\t\t\t\tcontent: `This document contains information about the technologies that allow this Website to achieve the purposes described below. These technologies allow the Owner to collect and save information (for example through the use of Cookies) or to use resources (for example by running a script) on the User's device when the latter interacts with this Website.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i2\",\n\t\t\t\t\t\tcontent: `For the sake of simplicity, these technologies are briefly referred to in this document as \"Tracking Tools\", unless there is reason to differentiate. For example, although Cookies can be used in both web and mobile browsers, it would be out of place to speak of Cookies in the context of applications for mobile devices, since they are Tracking Tools that require the presence of a browser. For this reason, within this document the term Cookie is used only to specifically indicate that particular type of Tracking Tool.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i3\",\n\t\t\t\t\t\tcontent: `Some of the purposes for which Tracking Tools are used may also require the User's consent, depending on the applicable law. If consent is given, it can be freely revoked at any time by following the instructions contained in this document.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i4\",\n\t\t\t\t\t\tcontent: `This Website uses Tracking Tools managed directly by the Owner (commonly called \"first party\" Tracking Tools) and Tracking Tools that enable services provided by third parties (commonly called \"third party\" Tracking Tools). Unless otherwise specified in this document, these third parties have access to the respective Tracking Tools.`,\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i5\",\n\t\t\t\t\t\tcontent: `Duration and expiration of Cookies and other similar Tracking Tools may vary depending on what is set by the Owner or by each third party provider. Some of them expire at the end of the User's browsing session.`,\n\t\t\t\t\t\tindex: 4,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"i6\",\n\t\t\t\t\t\tcontent: `In addition to what is specified in the description of each of the categories listed below, Users can obtain more detailed and updated information on the duration, as well as any other relevant information - such as the presence of other Tracking Tools - in the privacy policies of their respective third party suppliers. (through the links made available) or by contacting the Data Controller.`,\n\t\t\t\t\t\tindex: 5,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"info\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Attività strettamente necessarie a garantire il funzionamento di questo Sito Web e la fornitura del Servizio\",\n\t\t\t\tindex: 1,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"act1\",\n\t\t\t\t\t\tcontent: `This Website uses Cookies commonly called \"technical\" or other similar Tracking Tools to carry out activities strictly necessary to ensure the functioning or provision of the Service.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t// {\n\t\t\t\t\t// \tkey: \"act2\",\n\t\t\t\t\t// \tcontent: `Technical Tracking Tools from ${config.company.name}`,\n\t\t\t\t\t// \tindex: 1,\n\t\t\t\t\t// \ttable: { headers: cookieHeaders, rows: config.cookies.filter((f) => f.type === \"technical\" && !f.third).map(mapCookie) },\n\t\t\t\t\t// },\n\t\t\t\t\t// {\n\t\t\t\t\t// \tkey: \"act2\",\n\t\t\t\t\t// \tcontent: `Third party technical Tracking Tools`,\n\t\t\t\t\t// \tindex: 2,\n\t\t\t\t\t// \ttable: { headers: cookieHeaders, rows: config.cookies.filter((f) => f.type === \"technical\" && f.third).map(mapCookie) },\n\t\t\t\t\t// },\n\t\t\t\t],\n\t\t\t\tkey: \"technicals\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Activities related to user authentication and management of their data\",\n\t\t\t\tindex: 2,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"auth0\",\n\t\t\t\t\t\tcontent: `These are stored when you log in to a ${config.site.name} site, using our authentication service. When you do this, you accept the associated privacy policy.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t\t// table: { headers: cookieHeaders, rows: [] },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"authentication\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Analytics tracking tools\",\n\t\t\t\tindex: 3,\n\t\t\t\tparagraphs: [],\n\t\t\t\tkey: \"analytics\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Third-party cookies\",\n\t\t\t\tindex: 4,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr1\",\n\t\t\t\t\t\tcontent: `Some of our pages display content from external providers, e.g. YouTube, Facebook and Twitter.`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr2\",\n\t\t\t\t\t\tcontent: `To view this third-party content, you first have to accept their specific terms and conditions. This includes their cookie policies, which we have no control over.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr3\",\n\t\t\t\t\t\tcontent: `If you do not view this content, no third-party cookies are installed on your device.`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr4\",\n\t\t\t\t\t\tcontent: `Third-party providers on ${config.site.name} websites`,\n\t\t\t\t\t\tlist: [],\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"thr5\",\n\t\t\t\t\t\tcontent: `These third-party services are outside of the control of ${config.company.name}. Providers may, at any time, change their terms of service, purpose and use of cookies, etc.`,\n\t\t\t\t\t\tindex: 4,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"third-party\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"How can you manage cookies?\",\n\t\t\t\tindex: 5,\n\t\t\t\tparagraphs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"mng1\",\n\t\t\t\t\t\ttitle: `Removing cookies from your device`,\n\t\t\t\t\t\tcontent: `You can delete all cookies that are already on your device by clearing the browsing history of your browser. This will remove all cookies from all websites you have visited. Be aware though that you may also lose some saved information (e.g. saved login details, site preferences).`,\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"mng2\",\n\t\t\t\t\t\ttitle: `Managing site-specific cookies`,\n\t\t\t\t\t\tcontent: `For more detailed control over site-specific cookies, check the privacy and cookie settings in your preferred browser.`,\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"mng3\",\n\t\t\t\t\t\ttitle: `Blocking cookies`,\n\t\t\t\t\t\tcontent: `You can set most modern browsers to prevent any cookies being placed on your device, but you may then have to manually adjust some preferences every time you visit a site/page. And some services and functionalities may not work properly at all (e.g. profile logging-in).`,\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tkey: \"mng4\",\n\t\t\t\t\t\ttitle: `Managing our analytics cookies`,\n\t\t\t\t\t\tcontent: `You can manage your preferences concerning cookies from ${config.site.name} on the dedicated website page.`,\n\t\t\t\t\t\tindex: 3,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tkey: \"managment\",\n\t\t\t},\n\t\t],\n\t};\n\n\tif (config.cookies?.length) {\n\t\tconst technicalFirst = config.cookies.filter((f) => f.type === \"technical\" && !f.third).map((m) => mapCookie(m));\n\t\tconst technicalThird = config.cookies.filter((f) => f.type === \"technical\" && f.third).map((m) => mapCookie(m));\n\t\tif (technicalFirst.length || technicalThird.length) {\n\t\t\tif (technicalFirst.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"technicals\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `I dati raccolti dagli strumenti di tracking di ${config.site.name} sono:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: technicalFirst },\n\t\t\t\t\t\tkey: \"tda2\",\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (technicalThird.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"technicals\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `I dati raccolti dai cookie di terze parti sono:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: technicalThird },\n\t\t\t\t\t\tkey: \"tda3\",\n\t\t\t\t\t\tindex: 2,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst analyticsFirst = config.cookies.filter((f) => f.type === \"analytics\" && !f.third).map((m) => mapCookie(m));\n\t\tconst analyticsThird = config.cookies.filter((f) => f.type === \"analytics\" && f.third).map((m) => mapCookie(m));\n\n\t\tif (analyticsFirst.length || analyticsThird.length) {\n\t\t\tif (analyticsFirst.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"analytics\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `Cookies collected from ${config.site.name} for analytics purpose are:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: analyticsFirst },\n\t\t\t\t\t\tkey: \"ana1\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (analyticsThird.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"analytics\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `Analytics data collected from third party cookies are:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: analyticsThird },\n\t\t\t\t\t\tkey: \"ana2\",\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst authenticationsFirst = config.cookies.filter((f) => f.type === \"authentication\" && !f.third).map((m) => mapCookie(m));\n\t\tconst authenticationsThird = config.cookies.filter((f) => f.type === \"authentication\" && f.third).map((m) => mapCookie(m));\n\n\t\tif (authenticationsFirst.length || authenticationsThird.length) {\n\t\t\tif (authenticationsFirst.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"authentication\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `Cookies collected from ${config.site.name} for authentication functionality are:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: authenticationsFirst },\n\t\t\t\t\t\tkey: \"auth1\",\n\t\t\t\t\t\tindex: 0,\n\t\t\t\t\t});\n\t\t\t}\n\t\t\tif (authenticationsThird.length) {\n\t\t\t\tcontent.chapters\n\t\t\t\t\t.find((f) => f.key === \"authentication\")\n\t\t\t\t\t?.paragraphs.push({\n\t\t\t\t\t\tcontent: `Cookies collected from third party for authentication purpose are:`,\n\t\t\t\t\t\ttable: { headers: cookieHeaders, rows: authenticationsThird },\n\t\t\t\t\t\tkey: \"auth2\",\n\t\t\t\t\t\tindex: 1,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst advertising = config.cookies.filter((f) => f.type === \"advertising\").map((m) => mapCookie(m));\n\n\t\tif (advertising.length) {\n\t\t\tcontent.chapters\n\t\t\t\t.find((f) => f.key === \"advertising\")\n\t\t\t\t?.paragraphs.push({\n\t\t\t\t\tcontent: `Third Parties Cookie data for ${config.site.name} advertising are:`,\n\t\t\t\t\ttable: { headers: cookieHeaders, rows: advertising },\n\t\t\t\t\tkey: \"adv1\",\n\t\t\t\t\tindex: 0,\n\t\t\t\t});\n\t\t}\n\t\tconst thirds = config.cookies.filter((f) => f.type === \"third-party\").map((m) => mapCookie(m));\n\n\t\tif (thirds.length) {\n\t\t\tcontent.chapters\n\t\t\t\t.find((f) => f.key === \"third-party\")\n\t\t\t\t?.paragraphs.push({\n\t\t\t\t\tcontent: `Third Parties Cookie data for ${config.site.name} are:`,\n\t\t\t\t\ttable: { headers: cookieHeaders, rows: thirds },\n\t\t\t\t\tkey: \"th1\",\n\t\t\t\t\tindex: 0,\n\t\t\t\t});\n\t\t}\n\t}\n\n\treturn sortFinalDoc(content);\n}\n","import type {\n CssPart,\n CssVar,\n HtmlSlot,\n i18nLang,\n StyleSetup,\n ComponentSetup,\n} from \"../../../utils/utils\";\n\nimport type { Component } from \"../types/webcomponent.type\";\n\nexport const storybookArgs = {\n size: { control: { type: \"range\", min: 1, max: 100 } },\n page: { control: { type: \"number\" } },\n\n enableselect: { control: { type: \"boolean\" } },\n selectrow: { control: { type: \"boolean\" } },\n disablepagination: { control: { type: \"boolean\" } },\n add_item: { control: { type: \"boolean\" } },\n rows: { control: { type: \"array\" } },\n headers: { control: { type: \"array\" } },\n actions: { control: { type: \"array\" } },\n selectactions: { control: { type: \"array\" } },\n pageChange: { action: \"pagechangeEvent\" },\n tableaction: { action: \"tableactionEvent\" },\n tableCustomActionClick: { action: \"tableCustomActionClickEvent\" },\n cellclick: { action: \"cellclickEvent\" },\n actiononselected: { action: \"actiononselectedEvent\" },\n clickonrow: { action: \"clickonrowEvent\" },\n confirmActionModal: { action: \"confirmActionModalEvent\" },\n confirmActionModalForm: { action: \"confirmActionModalFormEvent\" },\n showConfirmModal: { action: \"showConfirmModal\" },\n showConfirmModalForm: { action: \"showConfirmModalForm\" },\n externalfilter: { control: { type: \"boolean\" } },\n pages: { control: { type: \"number\" } },\n clipboardCopyText: { action: \"pagechangeEvent\" },\n addItem: { action: \"addItemEvent\" },\n};\n\nconst cssVars: CssVar[] = [\n {\n name: \"--bs-primary\",\n valueType: \"color\",\n theme: \"bootstrap\",\n defaultValue: \"#07689f\",\n },\n {\n name: \"--bs-secondary\",\n valueType: \"color\",\n theme: \"bootstrap\",\n defaultValue: \"#c9d6df\",\n },\n {\n name: \"--bs-success\",\n valueType: \"color\",\n theme: \"bootstrap\",\n defaultValue: \"#11d3bc\",\n },\n {\n name: \"--bs-info\",\n valueType: \"color\",\n theme: \"bootstrap\",\n defaultValue: \"#a2d5f2\",\n },\n {\n name: \"--bs-warning\",\n valueType: \"color\",\n theme: \"bootstrap\",\n defaultValue: \"#ffc107\",\n },\n {\n name: \"--bs-danger\",\n valueType: \"color\",\n theme: \"bootstrap\",\n defaultValue: \"#f67280\",\n },\n];\nexport const cssParts: CssPart[] = [];\nexport const htmlSlots: HtmlSlot[] = [\n { name: \"add-button-content\" },\n { name: \"buttons-container\" },\n];\nexport const i18nLanguages: i18nLang[] = [];\n\nexport const styleSetup: StyleSetup = {\n vars: cssVars,\n parts: cssParts,\n};\nconst rows: Component[\"rows\"] = [\n {\n title: \"bau\",\n videoSrc:\n \"https://comapi.be-on.tv/v1/public/records/61043eedb50af916a6429fdc/video\",\n time: \"2021-08-06T22:46:30.565Z\",\n _id: \"bau\",\n status: \"closed\",\n },\n {\n title: \"bb1\",\n videoSrc:\n \"https://comapi.be-on.tv/v1/public/records/61043eedb50af916a6429fdc/video\",\n time: \"2021-08-06T22:46:31.565Z\",\n description: \"ffff2\",\n _id: \"bb1\",\n status: \"closed\",\n },\n {\n title: \"bb2\",\n time: \"2021-08-02T22:46:32.565Z\",\n _id: \"bb2\",\n status: \"active\",\n },\n {\n title: \"ss\",\n time: \"2021-08-06T22:46:34.565Z\",\n description: \"fffffff\",\n testnested: { nested: \"dddd\" },\n _id: \"ss\",\n status: \"active\",\n },\n {\n title: \"bb4\",\n time: \"2021-08-06T22:46:34.565Z\",\n _id: \"bb4\",\n status: \"active\",\n },\n {\n title: \"aa5\",\n time: \"2021-08-06T22:46:34.565Z\",\n _id: \"aa5\",\n status: \"active\",\n },\n {\n title: \"bb6\",\n time: \"2021-08-06T22:46:34.565Z\",\n _id: \"bb6\",\n status: \"active\",\n },\n {\n title: \"bb7\",\n time: \"2021-08-06T22:46:34.565Z\",\n _id: \"bb7\",\n status: \"active\",\n },\n {\n title: \"bb8\",\n time: \"2021-08-06T22:46:34.565Z\",\n _id: \"bb8\",\n status: \"active\",\n },\n {\n title: \"bb9\",\n time: \"2021-08-06T22:46:33.565Z\",\n _id: \"bb9\",\n status: \"active\",\n },\n\n {\n title: \"bb10\",\n time: \"2021-08-06T22:46:34.565Z\",\n _id: \"bb10\",\n status: \"active\",\n },\n {\n title: \"bb11\",\n time: \"2021-08-06T22:46:34.565Z\",\n _id: \"bb11\",\n status: \"active\",\n },\n {\n title: \"bb12\",\n time: \"2021-08-06T22:46:34.565Z\",\n videoSrc:\n \"https://comapi.be-on.tv/v1/public/records/61043eedb50af916a6429fdc/video\",\n _id: \"bb12\",\n status: \"active\",\n },\n {\n title: \"bb13\",\n time: \"2021-08-07T22:46:39.565Z\",\n _id: \"bb13\",\n status: \"active\",\n },\n];\nconst preferences = [\n {\n type: \"text\",\n placeholder: \"Inserisci titolo di default\",\n id: \"defaultTitle\",\n required: true,\n\n label: \"Titolo di default\",\n value: \"titolotest\",\n params: {\n minLength: 8,\n maxLength: 120,\n },\n },\n {\n type: \"number\",\n id: \"age\",\n required: true,\n label: \"Age\",\n value: 9,\n params: {\n min: 8,\n max: 120,\n },\n validationTip: \"Min 8, Max 120\",\n },\n];\nconst rowsWithActions: Component[\"rows\"] = [\n {\n title: \"bau\",\n _actions: [\n {\n name: \"activate\",\n type: \"icon\",\n iconOrText: \"ticket-fill\",\n confirm: {\n confirmLabel: \"conferma\",\n title: \"confermi?\",\n content: \"contenuto dialog1\",\n },\n },\n {\n name: \"activate2\",\n type: \"icon\",\n iconOrText: \"ticket-fill\",\n confirm: {\n confirmLabel: \"conferma\",\n title: \"confermi?\",\n content: \"contenuto dialog2\",\n },\n },\n {\n name: \"activate3\",\n type: \"icon\",\n iconOrText: \"ticket-fill\",\n edit: {\n confirmLabel: \"conferma\",\n title: \"confermi?\",\n schema: preferences,\n },\n },\n ],\n videoSrc:\n \"https://comapi.be-on.tv/v1/public/records/61043eedb50af916a6429fdc/video\",\n time: \"2021-08-06T22:46:30.565Z\",\n _id: \"bau\",\n status: \"closed\",\n },\n {\n title: \"bb1\",\n videoSrc:\n \"https://comapi.be-on.tv/v1/public/records/61043eedb50af916a6429fdc/video\",\n time: \"2021-08-06T22:46:31.565Z\",\n description: \"ffff2\",\n _id: \"bb1\",\n status: \"closed\",\n _actions: [\n {\n name: \"activate\",\n type: \"icon\",\n iconOrText: \"ticket-fill\",\n confirm: {\n confirmLabel: \"conferma\",\n title: \"confermi?\",\n content: \"content3\",\n },\n },\n {\n name: \"activate2\",\n type: \"icon\",\n iconOrText: \"ticket-fill\",\n confirm: {\n confirmLabel: \"conferma\",\n title: \"confermi?\",\n content: \"content4\",\n },\n },\n ],\n },\n {\n title: \"bb2\",\n time: \"2021-08-02T22:46:32.565Z\",\n _id: \"bb2\",\n status: \"active\",\n _actions: [\n {\n name: \"activate\",\n type: \"icon\",\n iconOrText: \"ticket-fill\",\n confirm: {\n confirmLabel: \"conferma\",\n title: \"confermi?\",\n content: \"\",\n },\n },\n {\n name: \"activate2\",\n type: \"icon\",\n iconOrText: \"ticket-fill\",\n confirm: {\n confirmLabel: \"conferma\",\n title: \"confermi?\",\n content: \"\",\n },\n },\n ],\n },\n];\n\nconst basicHeaders: Component[\"headers\"] = [\n {\n label: \"title\",\n key: \"title\",\n search: true,\n },\n {\n label: \"description\",\n key: \"description\",\n },\n {\n label: \"nested\",\n key: \"testnested.nested\",\n },\n {\n label: \"data\",\n key: \"time\",\n type: \"datetime\",\n format: \"DD MMMM YYYY\",\n },\n];\nconst basicHeadersWithTruncateAndCopy: Component[\"headers\"] = [\n {\n label: \"title\",\n key: \"title\",\n search: true,\n },\n {\n label: \"description\",\n key: \"description\",\n truncateAt: 3,\n copyTxt: true,\n },\n {\n label: \"nested\",\n key: \"testnested.nested\",\n },\n {\n label: \"data\",\n key: \"time\",\n type: \"datetime\",\n format: \"DD MMMM YYYY\",\n },\n];\nconst basicHeadersWithActions: Component[\"headers\"] = [\n {\n label: \"title\",\n key: \"title\",\n search: true,\n },\n {\n label: \"description\",\n key: \"description\",\n },\n {\n label: \"nested\",\n key: \"testnested.nested\",\n },\n {\n label: \"data\",\n key: \"time\",\n type: \"datetime\",\n format: \"DD MMMM YYYY\",\n },\n\n {\n label: \"modifiche\",\n key: \"mod\",\n type: \"actions\",\n nosort: true,\n },\n];\nconst headersWithMoreSearch: Component[\"headers\"] = [\n {\n label: \"title\",\n key: \"title\",\n search: true,\n },\n\n {\n label: \"clickable\",\n key: \"description\",\n search: true,\n click: true,\n },\n {\n label: \"nested\",\n key: \"testnested.nested\",\n },\n {\n label: \"data\",\n key: \"time\",\n type: \"datetime\",\n format: \"DD MMMM YYYY\",\n },\n {\n label: \"stato\",\n key: \"status\",\n type: \"enum\",\n select: [\"active\", \"closed\"],\n search: true,\n },\n];\nconst headersWithNestedLabel: Component[\"headers\"] = [\n {\n label: \"title\",\n key: \"title\",\n search: true,\n },\n {\n label: \"description\",\n key: \"description\",\n search: true,\n },\n {\n label: \"nested\",\n key: \"testnested.nested\",\n search: true,\n },\n {\n label: \"data\",\n key: \"time\",\n type: \"datetime\",\n format: \"DD MMMM YYYY\",\n },\n];\nconst headersWithAllSearches: Component[\"headers\"] = [\n {\n label: \"title\",\n key: \"title\",\n search: true,\n },\n {\n label: \"description\",\n key: \"description\",\n search: true,\n },\n {\n label: \"nested\",\n key: \"testnested.nested\",\n search: true,\n },\n {\n label: \"data\",\n key: \"time\",\n type: \"datetime\",\n format: \"DD MMMM YYYY\",\n search: true,\n },\n];\nconst headersWithDateOnly: Component[\"headers\"] = [\n {\n label: \"title\",\n key: \"title\",\n },\n {\n label: \"description\",\n key: \"description\",\n click: true,\n },\n {\n label: \"nested\",\n key: \"testnested.nested\",\n },\n {\n label: \"data\",\n key: \"time\",\n type: \"datetime\",\n format: \"DD MMMM YYYY\",\n search: true,\n },\n];\n\nconst actions: Component[\"actions\"] = [\n {\n name: \"testaction\",\n type: \"text\",\n iconOrText: \"string\",\n },\n {\n name: \"testaction2\",\n type: \"icon\",\n iconOrText: \"github\",\n },\n];\n\nconst selections = [\n {\n name: \"testaction\",\n type: \"text\",\n iconOrText: \"string\",\n },\n {\n name: \"testaction2\",\n type: \"icon\",\n iconOrText: \"github\",\n },\n];\nconst examples: { name: string; description?: string; data: Component }[] = [\n {\n name: \"BasicTableWithClick\",\n data: {\n headers: basicHeaders,\n rows,\n selectrow: \"yes\",\n },\n },\n {\n name: \"BasicTableWithMoreSearchAndSelect\",\n data: {\n headers: headersWithMoreSearch,\n selectactions: selections,\n rows,\n enableselect: \"yes\",\n },\n },\n {\n name: \"BasicTableWithSearchOnNestedField\",\n data: {\n headers: headersWithNestedLabel,\n rows,\n },\n },\n {\n name: \"BasicTableWithSearchOnAllFields\",\n data: {\n headers: headersWithAllSearches,\n rows,\n selectrow: \"yes\",\n },\n },\n {\n name: \"BasicTableWithDate\",\n data: {\n headers: headersWithDateOnly,\n rows,\n },\n },\n {\n name: \"BasicTableWithActions\",\n data: {\n headers: headersWithAllSearches,\n rows,\n actions,\n },\n },\n {\n name: \"BasicTableWithActionsAndSelect\",\n data: {\n headers: headersWithAllSearches,\n rows,\n actions,\n selectactions: selections,\n },\n },\n\n {\n name: \"BasicTableWithActionsConfirmAndForm\",\n data: {\n headers: basicHeadersWithActions,\n rows: rowsWithActions,\n actions,\n },\n },\n {\n name: \"BasicTableWithTruncateAndCopy\",\n data: {\n headers: basicHeadersWithTruncateAndCopy,\n rows,\n selectrow: \"yes\",\n },\n },\n];\nexport const componentSetup: ComponentSetup & {\n examples: { name: string; description?: string; data: Component }[];\n} = {\n definitions: null as any,\n description: \"\",\n storybookArgs,\n styleSetup,\n author: null as any,\n contributors: [],\n owner: null as any,\n htmlSlots,\n i18n: i18nLanguages,\n examples,\n screenshots: [],\n licenses: [\n { type: \"Apache-2.0\", path: \"LICENSE.md\", cost: 0, currency: \"EUR\" },\n ],\n readmePath: \"README.md\",\n name: \"hb-table\",\n category: \"table\",\n tags: [\"table\"],\n size: {},\n iifePath: \"main.iife.js\",\n repoName: \"@htmlbricks/hb-table\",\n version: null as any,\n};\n","export const dictionary = {\n\ten: {\n\t\taccept: \"I Agree\",\n\t\tdecline: \"I Decline\",\n\t\tlearnmore: \"Learn more\",\n\t\tbasicCookieLaw:\n\t\t\t\"Noi e terze parti selezionate utilizziamo cookie o tecnologie simili per finalità tecniche e, con il tuo consenso, anche per altre finalità come specificato nella cookie policy.\",\n\t\tcookieLawTitle: \"Cookie Informations\",\n\t},\n\tit: {\n\t\taccept: \"Accetto\",\n\t\tdecline: \"Rifiuto\",\n\t\tlearnmore: \"Approfondisci\",\n\t\tbasicCookieLaw:\n\t\t\t\"Noi e terze parti selezionate utilizziamo cookie o tecnologie simili per finalità tecniche e, con il tuo consenso, anche per altre finalità come specificato nella cookie policy.\",\n\t\tcookieLawTitle: \"Informativa sui cookie\",\n\t},\n};\n","<svelte:options customElement=\"hb-terms-doc-templates\" />\n\n<script lang=\"ts\">\n import pkg from \"../../../package.json\";\n\n import parseStyle from \"style-to-object\";\n import {\n addComponent,\n getChildStyleToPass,\n LanguageTranslator,\n } from \"../../utils/utils\";\n // import GDPR from \"@app/html/GDPR.svelte\";\n // import ItPolicy from \"@app/html/ItPolicy.svelte.bk\";\n import itPrivacyContent from \"./libs/privacyItContent\";\n import itCookieContent from \"./libs/cookieItContent\";\n import enCookieContent from \"./libs/cookieEnContent\";\n import { styleSetup as tableStyleSetup } from \"../table/extra/docs\";\n\n import type { Component, IDoc, ITPrivacy } from \"./types/webcomponent.type\";\n import { dictionary } from \"./libs/i18n\";\n function dispatch(name: string, detail: any) {\n $host().dispatchEvent(new CustomEvent(name, { detail }));\n }\n\n let { id = \"\", style, i18nlang, data }: Component = $props();\n\n let parsedStyle: { [x: string]: string } = $state({});\n let tableStyleToSet: string = $state(\"\");\n let translator: LanguageTranslator;\n\n let doc: IDoc | undefined = $state(undefined);\n\n $effect(() => {\n if (style) {\n parsedStyle = parseStyle(style) as any;\n tableStyleToSet = getChildStyleToPass(parsedStyle, tableStyleSetup?.vars);\n }\n\n if (!translator) {\n translator = new LanguageTranslator({ dictionary, lang: i18nlang });\n } else if (\n translator &&\n i18nlang &&\n translator.lang &&\n translator.lang !== i18nlang\n ) {\n translator = new LanguageTranslator({ dictionary, lang: i18nlang });\n }\n\n if (data && typeof data === \"string\") {\n try {\n const json: Component[\"data\"] = JSON.parse(data);\n switch (json.id) {\n case \"privacy-doc-italian\":\n doc = itPrivacyContent(json);\n break;\n case \"cookie-doc-italian\":\n doc = itCookieContent(json);\n break;\n case \"cookie-doc-english\":\n doc = enCookieContent(json);\n break;\n case \"cookie-doc\":\n doc = itCookieContent(json);\n break;\n }\n } catch (err) {\n console.error(\"parsing data\", err);\n }\n }\n });\n addComponent({ repoName: \"@htmlbricks/hb-table\", version: pkg.version });\n</script>\n\n{#if doc?.title && doc.chapters?.length}\n <h1 part=\"h1\">{doc.title}</h1>\n {#each doc.chapters.filter((f) => f.key) as chapter (chapter.key)}\n {#if chapter.paragraphs?.length}\n <h2 part=\"h2\">{chapter.index}. {chapter.title}</h2>\n {#each chapter.paragraphs.filter((f) => f.key) as paragraph (paragraph.key)}\n {#if paragraph.title}\n <h3>{paragraph.title}</h3>\n {/if}\n {#if paragraph.content}\n <p part=\"p\">\n {paragraph.content}\n </p>\n {/if}\n {#if paragraph.list?.length}\n <ul part=\"ul\">\n {#each paragraph.list.filter((f) => f.key) as listItem (listItem.key)}\n <li part=\"li\">{listItem.content}</li>\n {/each}\n </ul>\n {/if}\n {#if paragraph.table?.headers && paragraph.table.rows?.length}\n <hb-table\n disablepagination=\"yes\"\n size=\"1000\"\n style={tableStyleToSet}\n headers={JSON.stringify(paragraph.table.headers)}\n rows={JSON.stringify(paragraph.table.rows)}\n ></hb-table>\n {/if}\n {/each}\n {/if}\n {/each}\n{:else}\n invalid doc params\n{/if}\n\n<style lang=\"scss\">\n @import \"./styles/webcomponent.scss\";\n // @import \"./styles/bootstrap.scss\";\n</style>\n"],"names":["PUBLIC_VERSION","EACH_ITEM_REACTIVE","EACH_INDEX_REACTIVE","EACH_IS_CONTROLLED","EACH_IS_ANIMATED","EACH_ITEM_IMMUTABLE","TEMPLATE_FRAGMENT","TEMPLATE_USE_IMPORT_NODE","HYDRATION_START","HYDRATION_START_ELSE","HYDRATION_END","HYDRATION_ERROR","UNINITIALIZED","DEV","DERIVED","EFFECT","RENDER_EFFECT","BLOCK_EFFECT","BRANCH_EFFECT","ROOT_EFFECT","BOUNDARY_EFFECT","UNOWNED","DISCONNECTED","CLEAN","DIRTY","MAYBE_DIRTY","INERT","DESTROYED","EFFECT_RAN","EFFECT_TRANSPARENT","HEAD_EFFECT","EFFECT_HAS_DERIVED","STATE_SYMBOL","LEGACY_PROPS","LOADING_ATTR_SYMBOL","is_array","index_of","array_from","object_keys","define_property","get_descriptor","get_descriptors","object_prototype","array_prototype","get_prototype_of","run_all","arr","i","is_micro_task_queued","current_queued_micro_tasks","process_micro_tasks","tasks","queue_micro_task","fn","flush_tasks","equals","value","safe_not_equal","a","b","safe_equals","effect_in_teardown","rune","effect_in_unowned_derived","effect_orphan","effect_update_depth_exceeded","hydration_failed","state_descriptors_fixed","state_prototype_fixed","state_unsafe_local_read","state_unsafe_mutation","tracing_mode_flag","source","v","stack","signal","state","push_derived_source","mutable_source","initial_value","immutable","s","active_reaction","untracking","derived_sources","set_derived_sources","set","is_runes","e.state_unsafe_mutation","internal_set","increment_write_version","mark_reactions","active_effect","untracked_writes","set_untracked_writes","status","reactions","length","reaction","flags","set_signal_status","schedule_effect","derived","parent_derived","component_context","derived_safe_equal","destroy_derived_effects","effects","destroy_effect","get_derived_parent_effect","parent","execute_derived","prev_active_effect","set_active_effect","update_reaction","update_derived","skip_reaction","hydration_mismatch","location","hydrating","set_hydrating","hydrate_node","set_hydrate_node","node","w.hydration_mismatch","hydrate_next","get_next_sibling","reset","remove_nodes","depth","data","next","proxy","prev","prototype","sources","is_proxied_array","version","metadata","_","prop","descriptor","e.state_descriptors_fixed","target","ls","n","update_version","receiver","exists","_a","get","has","other_s","own_keys","key","e.state_prototype_fixed","d","$window","is_firefox","first_child_getter","next_sibling_getter","init_operations","element_prototype","node_prototype","create_text","get_first_child","child","is_text","text","first_child","fragment","first","sibling","count","next_sibling","last_sibling","type","clear_text_content","FLUSH_MICROTASK","FLUSH_SYNC","is_throwing_error","scheduler_mode","last_scheduled_effect","is_flushing_effect","is_destroying_effect","set_is_flushing_effect","set_is_destroying_effect","queued_root_effects","flush_count","dev_effect_stack","set_active_reaction","effect","new_deps","skipped_deps","write_version","read_version","check_dirtiness","dependencies","is_unowned","dependency","is_disconnected","is_unowned_connected","propagate_error","error","current","should_rethrow_error","handle_error","previous_effect","schedule_possible_effect_self_invalidation","root","previous_deps","previous_skipped_deps","previous_untracked_writes","previous_reaction","previous_skip_reaction","prev_derived_sources","previous_component_context","previous_untracking","set_component_context","result","deps","remove_reactions","remove_reaction","index","new_length","start_index","update_effect","destroy_block_effect_children","destroy_effect_children","execute_effect_teardown","teardown","dep","infinite_loop_guard","e.effect_update_depth_exceeded","flush_queued_root_effects","root_effects","previously_flushing_effect","collected_effects","process_effects","flush_queued_effects","unlink_effect","process_deferred","previous_queued_root_effects","current_effect","main_loop","is_branch","is_skippable_branch","previous_active_reaction","parent_sibling","flush_sync","previous_scheduler_mode","is_derived","e.state_unsafe_local_read","untrack","STATUS_MASK","validate_effect","e.effect_orphan","e.effect_in_unowned_derived","e.effect_in_teardown","push_effect","parent_effect","parent_last","create_effect","sync","push","is_root","e","inert","user_effect","defer","context","effect_root","component_root","options","fulfil","pause_effect","render_effect","template_effect","thunks","deriveds","block","branch","previously_destroying_effect","remove_dom","removed","end","transitions","transition","callback","pause_children","run_out_transitions","remaining","check","local","transparent","resume_effect","resume_children","props","runes","pop","component","context_stack_item","component_effects","component_effect","PASSIVE_EVENTS","is_passive_event","name","all_registered_events","root_event_handles","handle_event_propagation","event","handler_element","owner_document","event_name","path","current_target","path_idx","handled_at","at_idx","handler_idx","throw_error","other_errors","parent_element","delegated","create_fragment_from_html","html","elem","assign_nodes","start","template","content","is_fragment","use_import_node","has_start","clone","comment","frag","anchor","append","dom","set_text","str","mount","_mount","hydrate","was_hydrating","previous_hydrate_node","instance","e.hydration_failed","document_listeners","Component","events","intro","registered_events","event_handle","passive","unmount","anchor_node","ctx","mounted_components","if_block","elseif","consequent_effect","alternate_effect","condition","has_branch","set_branch","flag","update_branch","new_condition","mismatch","is_else","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","array","create_item","reconcile","is_animated","should_update","seen","to_animate","matched","stashed","child_anchor","update_item","_b","j","move","to_destroy","destroy_length","_c","_d","reactive","mutable","dest","next_node","append_styles","css","style","set_attribute","element","attribute","skip_warning","attributes","get_setters","set_custom_element_data","setters_cache","setters","descriptors","proto","element_proto","prop_value","fallback_value","fallback_dirty","fallback_used","get_fallback","getter","from_child","inner_current_value","current_value","parent_value","child_value","mutation","new_value","createClassComponent","Svelte4Component","__privateAdd","_events","_instance","add_source","__privateSet","__privateGet","cb","args","SvelteElement","$$componentCtor","$$slots","use_shadow_dom","__publicField","listener","unsub","create_slot","slot","existing_slots","get_custom_elements_slots","get_custom_element_value","attribute_value","attr","_oldValue","newValue","attribute_name","props_definition","transform","create_custom_element","slots","exports","extend","Class","setter","property","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","NEWLINE","FORWARD_SLASH","ASTERISK","EMPTY_STRING","TYPE_COMMENT","TYPE_DECLARATION","inlineStyleParser","lineno","column","updatePosition","lines","position","Position","whitespace","msg","err","match","re","m","comments","rules","c","pos","declaration","val","ret","trim","declarations","decls","decl","__importDefault","this","mod","cjs","StyleToObject","inline_style_parser_1","require$$0","iterator","styleObject","hasIterator","parseStyle","getChildStyleToPass","parsedStyle","vars","toreturn","f","k","addComponent","opts","componentName","iifePath","script","LanguageTranslator","lang","wordKey","dateISOString","timeOptions","browserLang","_e","dictionary","w","defLng","defaultLng","sortFinalDoc","doc","ci","chapters","chapter","pi","sortedParagraphs","paragraph","li","sortedList","lis","cookieHeaders","mapCookie","cookie","itPrivacyContent","config","linkedin","facebook","google","twitter","pinterest","instagram","socialText","socialParagraph","_h","_g","_f","_j","_i","stripe","paypal","paymentCompanies","itCookieContent","technicalFirst","technicalThird","analyticsFirst","analyticsThird","authenticationsFirst","authenticationsThird","advertising","thirds","enCookieContent","styleSetup","id","$.prop","$$props","i18nlang","$.state","$.proxy","tableStyleToSet","translator","$.user_effect","$.set","$.get","tableStyleSetup","json","pkg","$.each","node_1","node_3","$.template_effect","$.set_text","text_2","$$render","consequent","text_3","consequent_1","ul","listItem","text_4","consequent_2","$.set_custom_element_data","hb_table","consequent_3","text_1","consequent_4","consequent_5","alternate"],"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]}
|