nebula-cms 0.1.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/.claude/settings.local.json +42 -0
- package/.github/workflows/ci.yml +31 -0
- package/.mcp.json +12 -0
- package/.prettierignore +5 -0
- package/.prettierrc.cjs +22 -0
- package/AGENTS.md +183 -0
- package/LICENSE +201 -0
- package/README.md +128 -0
- package/package.json +74 -0
- package/playground/.claude/settings.local.json +5 -0
- package/playground/astro.config.mjs +7 -0
- package/playground/node_modules/.bin/astro +21 -0
- package/playground/node_modules/.bin/rollup +21 -0
- package/playground/node_modules/.bin/tsc +21 -0
- package/playground/node_modules/.bin/tsserver +21 -0
- package/playground/node_modules/.bin/vite +21 -0
- package/playground/node_modules/.vite/_svelte_metadata.json +1 -0
- package/playground/node_modules/.vite/deps/@astrojs_svelte_client__js.js +80 -0
- package/playground/node_modules/.vite/deps/@astrojs_svelte_client__js.js.map +7 -0
- package/playground/node_modules/.vite/deps/_metadata.json +184 -0
- package/playground/node_modules/.vite/deps/astro___aria-query.js +6776 -0
- package/playground/node_modules/.vite/deps/astro___aria-query.js.map +7 -0
- package/playground/node_modules/.vite/deps/astro___axobject-query.js +3754 -0
- package/playground/node_modules/.vite/deps/astro___axobject-query.js.map +7 -0
- package/playground/node_modules/.vite/deps/astro___html-escaper.js +34 -0
- package/playground/node_modules/.vite/deps/astro___html-escaper.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-AJXJMYAF.js +0 -0
- package/playground/node_modules/.vite/deps/chunk-AJXJMYAF.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-ALJIOON6.js +1005 -0
- package/playground/node_modules/.vite/deps/chunk-ALJIOON6.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-BUSYA2B4.js +8 -0
- package/playground/node_modules/.vite/deps/chunk-BUSYA2B4.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-CNYJBM5F.js +21 -0
- package/playground/node_modules/.vite/deps/chunk-CNYJBM5F.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-DBPNBGEI.js +223 -0
- package/playground/node_modules/.vite/deps/chunk-DBPNBGEI.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-G3C2FXJT.js +204 -0
- package/playground/node_modules/.vite/deps/chunk-G3C2FXJT.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-GKDKFWC5.js +27 -0
- package/playground/node_modules/.vite/deps/chunk-GKDKFWC5.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-HNCLEOC5.js +4376 -0
- package/playground/node_modules/.vite/deps/chunk-HNCLEOC5.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-JICYXBFU.js +688 -0
- package/playground/node_modules/.vite/deps/chunk-JICYXBFU.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-KCUTL6DD.js +5099 -0
- package/playground/node_modules/.vite/deps/chunk-KCUTL6DD.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-ZP4UNCSN.js +23 -0
- package/playground/node_modules/.vite/deps/chunk-ZP4UNCSN.js.map +7 -0
- package/playground/node_modules/.vite/deps/chunk-ZREFNRZZ.js +148 -0
- package/playground/node_modules/.vite/deps/chunk-ZREFNRZZ.js.map +7 -0
- package/playground/node_modules/.vite/deps/package.json +3 -0
- package/playground/node_modules/.vite/deps/smol-toml.js +843 -0
- package/playground/node_modules/.vite/deps/smol-toml.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte.js +55 -0
- package/playground/node_modules/.vite/deps/svelte.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte___clsx.js +9 -0
- package/playground/node_modules/.vite/deps/svelte___clsx.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_animate.js +57 -0
- package/playground/node_modules/.vite/deps/svelte_animate.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_attachments.js +15 -0
- package/playground/node_modules/.vite/deps/svelte_attachments.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_easing.js +67 -0
- package/playground/node_modules/.vite/deps/svelte_easing.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_events.js +11 -0
- package/playground/node_modules/.vite/deps/svelte_events.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_internal.js +5 -0
- package/playground/node_modules/.vite/deps/svelte_internal.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_internal_client.js +402 -0
- package/playground/node_modules/.vite/deps/svelte_internal_client.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_internal_disclose-version.js +10 -0
- package/playground/node_modules/.vite/deps/svelte_internal_disclose-version.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_internal_flags_async.js +8 -0
- package/playground/node_modules/.vite/deps/svelte_internal_flags_async.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_internal_flags_legacy.js +8 -0
- package/playground/node_modules/.vite/deps/svelte_internal_flags_legacy.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_internal_flags_tracing.js +8 -0
- package/playground/node_modules/.vite/deps/svelte_internal_flags_tracing.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_legacy.js +35 -0
- package/playground/node_modules/.vite/deps/svelte_legacy.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_motion.js +545 -0
- package/playground/node_modules/.vite/deps/svelte_motion.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_reactivity.js +29 -0
- package/playground/node_modules/.vite/deps/svelte_reactivity.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_reactivity_window.js +127 -0
- package/playground/node_modules/.vite/deps/svelte_reactivity_window.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_store.js +103 -0
- package/playground/node_modules/.vite/deps/svelte_store.js.map +7 -0
- package/playground/node_modules/.vite/deps/svelte_transition.js +208 -0
- package/playground/node_modules/.vite/deps/svelte_transition.js.map +7 -0
- package/playground/package.json +16 -0
- package/playground/pnpm-lock.yaml +3167 -0
- package/playground/src/content/authors/jane-doe.json +8 -0
- package/playground/src/content/config/build.toml +2 -0
- package/playground/src/content/courses/web-fundamentals.json +29 -0
- package/playground/src/content/docs/advanced.mdx +6 -0
- package/playground/src/content/docs/intro.md +6 -0
- package/playground/src/content/guides/getting-started.mdx +6 -0
- package/playground/src/content/posts/hello-world.md +7 -0
- package/playground/src/content/products/t-shirt.json +16 -0
- package/playground/src/content/recipes/pancakes.mdoc +8 -0
- package/playground/src/content/settings/site.yml +2 -0
- package/playground/src/content.config.ts +198 -0
- package/playground/src/env.d.ts +1 -0
- package/playground/src/pages/index.astro +11 -0
- package/playground/src/pages/nebula.astro +14 -0
- package/pnpm-workspace.yaml +2 -0
- package/scripts/subset-icons.mjs +178 -0
- package/src/astro/index.ts +295 -0
- package/src/client/Admin.svelte +283 -0
- package/src/client/components/BackendPicker.svelte +291 -0
- package/src/client/components/DraftChip.svelte +46 -0
- package/src/client/components/MetadataForm.svelte +56 -0
- package/src/client/components/ThemeToggle.svelte +18 -0
- package/src/client/components/dialogs/DeleteDraftDialog.svelte +51 -0
- package/src/client/components/dialogs/FilenameDialog.svelte +129 -0
- package/src/client/components/editor/EditorPane.svelte +227 -0
- package/src/client/components/editor/EditorTabs.svelte +81 -0
- package/src/client/components/editor/EditorToolbar.svelte +131 -0
- package/src/client/components/editor/FormatSelector.svelte +66 -0
- package/src/client/components/editor/Toolbar.svelte +17 -0
- package/src/client/components/fields/ArrayField.svelte +339 -0
- package/src/client/components/fields/ArrayItem.svelte +325 -0
- package/src/client/components/fields/BooleanField.svelte +114 -0
- package/src/client/components/fields/DateField.svelte +82 -0
- package/src/client/components/fields/EnumField.svelte +74 -0
- package/src/client/components/fields/FieldWrapper.svelte +96 -0
- package/src/client/components/fields/NumberField.svelte +99 -0
- package/src/client/components/fields/ObjectField.svelte +121 -0
- package/src/client/components/fields/SchemaField.svelte +107 -0
- package/src/client/components/fields/StringField.svelte +104 -0
- package/src/client/components/sidebar/AdminSidebar.svelte +339 -0
- package/src/client/components/sidebar/AdminSidebarSort.svelte +123 -0
- package/src/client/css/a11y.css +14 -0
- package/src/client/css/btn.css +113 -0
- package/src/client/css/dialog.css +29 -0
- package/src/client/css/field-input.css +39 -0
- package/src/client/css/reset.css +59 -0
- package/src/client/css/theme.css +77 -0
- package/src/client/index.ts +1 -0
- package/src/client/js/drafts/merge.svelte.ts +121 -0
- package/src/client/js/drafts/ops.svelte.ts +227 -0
- package/src/client/js/drafts/storage.ts +108 -0
- package/src/client/js/drafts/workers/diff.ts +40 -0
- package/src/client/js/editor/editor.svelte.ts +343 -0
- package/src/client/js/editor/languages.ts +98 -0
- package/src/client/js/editor/link-wrap.ts +45 -0
- package/src/client/js/editor/markdown-shortcuts.ts +261 -0
- package/src/client/js/handlers/admin.ts +246 -0
- package/src/client/js/state/dialogs.svelte.ts +35 -0
- package/src/client/js/state/router.svelte.ts +156 -0
- package/src/client/js/state/schema.svelte.ts +140 -0
- package/src/client/js/state/state.svelte.ts +334 -0
- package/src/client/js/state/theme.svelte.ts +173 -0
- package/src/client/js/storage/adapter.ts +102 -0
- package/src/client/js/storage/client.ts +150 -0
- package/src/client/js/storage/db.ts +36 -0
- package/src/client/js/storage/fsa.ts +110 -0
- package/src/client/js/storage/github.ts +297 -0
- package/src/client/js/storage/storage.ts +83 -0
- package/src/client/js/storage/workers/frontmatter.ts +320 -0
- package/src/client/js/storage/workers/storage.ts +177 -0
- package/src/client/js/storage/workers/toml-parser.ts +106 -0
- package/src/client/js/storage/workers/yaml-parser.ts +132 -0
- package/src/client/js/utils/file-types.ts +192 -0
- package/src/client/js/utils/format.ts +16 -0
- package/src/client/js/utils/frontmatter.ts +38 -0
- package/src/client/js/utils/schema-utils.ts +295 -0
- package/src/client/js/utils/slug.ts +18 -0
- package/src/client/js/utils/sort.ts +84 -0
- package/src/client/js/utils/stable-stringify.ts +27 -0
- package/src/client/js/utils/url-utils.ts +38 -0
- package/src/types.ts +25 -0
- package/src/virtual.d.ts +22 -0
- package/svelte.config.js +4 -0
- package/tests/astro/build.test.ts +63 -0
- package/tests/astro/index.test.ts +689 -0
- package/tests/client/components/Admin.test.ts +446 -0
- package/tests/client/components/BackendPicker.test.ts +239 -0
- package/tests/client/components/DraftChip.test.ts +53 -0
- package/tests/client/components/MetadataForm.test.ts +164 -0
- package/tests/client/components/dialogs/DeleteDraftDialog.test.ts +91 -0
- package/tests/client/components/dialogs/FilenameDialog.test.ts +209 -0
- package/tests/client/components/dialogs/dialog-stubs.ts +19 -0
- package/tests/client/components/editor/EditorPane.test.ts +100 -0
- package/tests/client/components/editor/EditorTabs.test.ts +253 -0
- package/tests/client/components/editor/EditorToolbar.test.ts +252 -0
- package/tests/client/components/editor/fixtures.ts +31 -0
- package/tests/client/components/fields/ArrayField.test.ts +197 -0
- package/tests/client/components/fields/BooleanField.test.ts +206 -0
- package/tests/client/components/fields/DateField.test.ts +210 -0
- package/tests/client/components/fields/EnumField.test.ts +246 -0
- package/tests/client/components/fields/NumberField.test.ts +240 -0
- package/tests/client/components/fields/ObjectField.test.ts +157 -0
- package/tests/client/components/fields/SchemaField.test.ts +190 -0
- package/tests/client/components/fields/StringField.test.ts +223 -0
- package/tests/client/components/sidebar/AdminSidebar.test.ts +285 -0
- package/tests/client/components/sidebar/AdminSidebarSort.test.ts +135 -0
- package/tests/client/components/sidebar/sort-mock.ts +23 -0
- package/tests/client/js/drafts/fixtures.ts +22 -0
- package/tests/client/js/drafts/merge.test.ts +282 -0
- package/tests/client/js/drafts/ops.test.ts +658 -0
- package/tests/client/js/drafts/storage.test.ts +200 -0
- package/tests/client/js/drafts/workers/diff.test.ts +165 -0
- package/tests/client/js/editor/editor.test.ts +616 -0
- package/tests/client/js/editor/link-wrap.test.ts +225 -0
- package/tests/client/js/editor/markdown-shortcuts.test.ts +370 -0
- package/tests/client/js/handlers/admin.test.ts +467 -0
- package/tests/client/js/state/router.test.ts +619 -0
- package/tests/client/js/state/schema.test.ts +266 -0
- package/tests/client/js/state/state.test.ts +328 -0
- package/tests/client/js/storage/adapter.test.ts +115 -0
- package/tests/client/js/storage/client.test.ts +250 -0
- package/tests/client/js/storage/db.test.ts +59 -0
- package/tests/client/js/storage/fsa.test.ts +284 -0
- package/tests/client/js/storage/github.test.ts +349 -0
- package/tests/client/js/storage/mock-port.ts +95 -0
- package/tests/client/js/storage/storage.test.ts +77 -0
- package/tests/client/js/storage/workers/frontmatter.test.ts +479 -0
- package/tests/client/js/storage/workers/storage.test.ts +299 -0
- package/tests/client/js/storage/workers/toml-parser.test.ts +169 -0
- package/tests/client/js/storage/workers/yaml-parser.test.ts +168 -0
- package/tests/client/js/utils/file-types.test.ts +268 -0
- package/tests/client/js/utils/frontmatter.test.ts +87 -0
- package/tests/client/js/utils/schema-utils.test.ts +318 -0
- package/tests/client/js/utils/slug.test.ts +58 -0
- package/tests/client/js/utils/sort.test.ts +276 -0
- package/tests/client/js/utils/stable-stringify.test.ts +68 -0
- package/tests/client/js/utils/url-utils.test.ts +70 -0
- package/tests/e2e/backend-connection.test.ts +301 -0
- package/tests/e2e/draft-lifecycle.test.ts +388 -0
- package/tests/e2e/editing.test.ts +355 -0
- package/tests/e2e/github-adapter.test.ts +330 -0
- package/tests/e2e/helpers/mock-adapter.ts +166 -0
- package/tests/e2e/helpers/test-app.ts +155 -0
- package/tests/e2e/navigation.test.ts +358 -0
- package/tests/e2e/publishing.test.ts +345 -0
- package/tests/e2e/unsaved-changes.test.ts +317 -0
- package/tests/setup.ts +2 -0
- package/tests/stubs/codemirror.ts +197 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +178 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/attachments/index.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/assign.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/css.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/elements.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/hmr.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/ownership.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/legacy.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/inspect.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/async.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/validation.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/branches.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/await.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/if.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/key.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/css-props.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/each.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/html.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/slot.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/shared/validate.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/snippet.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/svelte-component.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/timing.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/loop.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/transitions.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/svelte-element.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/blocks/svelte-head.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/css.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/actions.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/attachments.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/escaping.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/shared/attributes.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/class.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/style.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/select.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/attributes.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/customizable-select.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/document.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/input.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/media.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/navigator.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/props.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/size.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/this.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/universal.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/bindings/window.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/legacy/lifecycle.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/legacy/misc.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/reactivity/props.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/validate.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dom/elements/custom-element.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/dev/console-log.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/internal/client/hydratable.js", "../../../../node_modules/.pnpm/svelte@5.54.1/node_modules/svelte/src/index-client.js"],
|
|
4
|
+
"sourcesContent": ["/** @import { Action, ActionReturn } from '../action/public' */\n/** @import { Attachment } from './public' */\nimport { noop, render_effect } from 'svelte/internal/client';\nimport { ATTACHMENT_KEY } from '../constants.js';\nimport { untrack } from '../index-client.js';\nimport { teardown } from '../internal/client/reactivity/effects.js';\n\n/**\n * Creates an object key that will be recognised as an attachment when the object is spread onto an element,\n * as a programmatic alternative to using `{@attach ...}`. This can be useful for library authors, though\n * is generally not needed when building an app.\n *\n * ```svelte\n * <script>\n * \timport { createAttachmentKey } from 'svelte/attachments';\n *\n * \tconst props = {\n * \t\tclass: 'cool',\n * \t\tonclick: () => alert('clicked'),\n * \t\t[createAttachmentKey()]: (node) => {\n * \t\t\tnode.textContent = 'attached!';\n * \t\t}\n * \t};\n * </script>\n *\n * <button {...props}>click me</button>\n * ```\n * @since 5.29\n */\nexport function createAttachmentKey() {\n\treturn Symbol(ATTACHMENT_KEY);\n}\n\n/**\n * Converts an [action](https://svelte.dev/docs/svelte/use) into an [attachment](https://svelte.dev/docs/svelte/@attach) keeping the same behavior.\n * It's useful if you want to start using attachments on components but you have actions provided by a library.\n *\n * Note that the second argument, if provided, must be a function that _returns_ the argument to the\n * action function, not the argument itself.\n *\n * ```svelte\n * <!-- with an action -->\n * <div use:foo={bar}>...</div>\n *\n * <!-- with an attachment -->\n * <div {@attach fromAction(foo, () => bar)}>...</div>\n * ```\n * @template {EventTarget} E\n * @template {unknown} T\n * @overload\n * @param {Action<E, T> | ((element: E, arg: T) => void | ActionReturn<T>)} action The action function\n * @param {() => T} fn A function that returns the argument for the action\n * @returns {Attachment<E>}\n */\n/**\n * Converts an [action](https://svelte.dev/docs/svelte/use) into an [attachment](https://svelte.dev/docs/svelte/@attach) keeping the same behavior.\n * It's useful if you want to start using attachments on components but you have actions provided by a library.\n *\n * Note that the second argument, if provided, must be a function that _returns_ the argument to the\n * action function, not the argument itself.\n *\n * ```svelte\n * <!-- with an action -->\n * <div use:foo={bar}>...</div>\n *\n * <!-- with an attachment -->\n * <div {@attach fromAction(foo, () => bar)}>...</div>\n * ```\n * @template {EventTarget} E\n * @overload\n * @param {Action<E, void> | ((element: E) => void | ActionReturn<void>)} action The action function\n * @returns {Attachment<E>}\n */\n/**\n * Converts an [action](https://svelte.dev/docs/svelte/use) into an [attachment](https://svelte.dev/docs/svelte/@attach) keeping the same behavior.\n * It's useful if you want to start using attachments on components but you have actions provided by a library.\n *\n * Note that the second argument, if provided, must be a function that _returns_ the argument to the\n * action function, not the argument itself.\n *\n * ```svelte\n * <!-- with an action -->\n * <div use:foo={bar}>...</div>\n *\n * <!-- with an attachment -->\n * <div {@attach fromAction(foo, () => bar)}>...</div>\n * ```\n *\n * @template {EventTarget} E\n * @template {unknown} T\n * @param {Action<E, T> | ((element: E, arg: T) => void | ActionReturn<T>)} action The action function\n * @param {() => T} fn A function that returns the argument for the action\n * @returns {Attachment<E>}\n * @since 5.32\n */\nexport function fromAction(action, fn = /** @type {() => T} */ (noop)) {\n\treturn (element) => {\n\t\tconst { update, destroy } = untrack(() => action(element, fn()) ?? {});\n\n\t\tif (update) {\n\t\t\tvar ran = false;\n\t\t\trender_effect(() => {\n\t\t\t\tconst arg = fn();\n\t\t\t\tif (ran) update(arg);\n\t\t\t});\n\t\t\tran = true;\n\t\t}\n\n\t\tif (destroy) {\n\t\t\tteardown(destroy);\n\t\t}\n\t};\n}\n", "import { STATE_SYMBOL } from '#client/constants';\nimport { sanitize_location } from '../../../utils.js';\nimport { untrack } from '../runtime.js';\nimport * as w from '../warnings.js';\n\n/**\n *\n * @param {any} a\n * @param {any} b\n * @param {string} property\n * @param {string} location\n */\nfunction compare(a, b, property, location) {\n\tif (a !== b && typeof b === 'object' && STATE_SYMBOL in b) {\n\t\tw.assignment_value_stale(property, /** @type {string} */ (sanitize_location(location)));\n\t}\n\n\treturn a;\n}\n\n/**\n * @param {any} object\n * @param {string} property\n * @param {string} operator\n * @param {any} rhs\n * @param {string} location\n */\nexport function assign(object, property, operator, rhs, location) {\n\treturn compare(\n\t\toperator === '='\n\t\t\t? (object[property] = rhs)\n\t\t\t: operator === '&&='\n\t\t\t\t? (object[property] &&= rhs())\n\t\t\t\t: operator === '||='\n\t\t\t\t\t? (object[property] ||= rhs())\n\t\t\t\t\t: operator === '??='\n\t\t\t\t\t\t? (object[property] ??= rhs())\n\t\t\t\t\t\t: null,\n\t\tuntrack(() => object[property]),\n\t\tproperty,\n\t\tlocation\n\t);\n}\n\n/**\n * @param {any} object\n * @param {string} property\n * @param {string} operator\n * @param {any} rhs\n * @param {string} location\n */\nexport async function assign_async(object, property, operator, rhs, location) {\n\treturn compare(\n\t\toperator === '='\n\t\t\t? (object[property] = await rhs)\n\t\t\t: operator === '&&='\n\t\t\t\t? (object[property] &&= await rhs())\n\t\t\t\t: operator === '||='\n\t\t\t\t\t? (object[property] ||= await rhs())\n\t\t\t\t\t: operator === '??='\n\t\t\t\t\t\t? (object[property] ??= await rhs())\n\t\t\t\t\t\t: null,\n\t\tuntrack(() => object[property]),\n\t\tproperty,\n\t\tlocation\n\t);\n}\n", "/** @type {Map<String, Set<HTMLStyleElement>>} */\nvar all_styles = new Map();\n\n/**\n * @param {String} hash\n * @param {HTMLStyleElement} style\n */\nexport function register_style(hash, style) {\n\tvar styles = all_styles.get(hash);\n\n\tif (!styles) {\n\t\tstyles = new Set();\n\t\tall_styles.set(hash, styles);\n\t}\n\n\tstyles.add(style);\n}\n\n/**\n * @param {String} hash\n */\nexport function cleanup_styles(hash) {\n\tvar styles = all_styles.get(hash);\n\tif (!styles) return;\n\n\tfor (const style of styles) {\n\t\tstyle.remove();\n\t}\n\n\tall_styles.delete(hash);\n}\n", "/** @import { SourceLocation } from '#client' */\nimport { COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, ELEMENT_NODE } from '#client/constants';\nimport { HYDRATION_END, HYDRATION_START } from '../../../constants.js';\nimport { hydrating } from '../dom/hydration.js';\nimport { dev_stack } from '../context.js';\n\n/**\n * @param {any} fn\n * @param {string} filename\n * @param {SourceLocation[]} locations\n * @returns {any}\n */\nexport function add_locations(fn, filename, locations) {\n\treturn (/** @type {any[]} */ ...args) => {\n\t\tconst dom = fn(...args);\n\n\t\tvar node = hydrating ? dom : dom.nodeType === DOCUMENT_FRAGMENT_NODE ? dom.firstChild : dom;\n\t\tassign_locations(node, filename, locations);\n\n\t\treturn dom;\n\t};\n}\n\n/**\n * @param {Element} element\n * @param {string} filename\n * @param {SourceLocation} location\n */\nfunction assign_location(element, filename, location) {\n\t// @ts-expect-error\n\telement.__svelte_meta = {\n\t\tparent: dev_stack,\n\t\tloc: { file: filename, line: location[0], column: location[1] }\n\t};\n\n\tif (location[2]) {\n\t\tassign_locations(element.firstChild, filename, location[2]);\n\t}\n}\n\n/**\n * @param {Node | null} node\n * @param {string} filename\n * @param {SourceLocation[]} locations\n */\nfunction assign_locations(node, filename, locations) {\n\tvar i = 0;\n\tvar depth = 0;\n\n\twhile (node && i < locations.length) {\n\t\tif (hydrating && node.nodeType === COMMENT_NODE) {\n\t\t\tvar comment = /** @type {Comment} */ (node);\n\t\t\tif (comment.data[0] === HYDRATION_START) depth += 1;\n\t\t\telse if (comment.data[0] === HYDRATION_END) depth -= 1;\n\t\t}\n\n\t\tif (depth === 0 && node.nodeType === ELEMENT_NODE) {\n\t\t\tassign_location(/** @type {Element} */ (node), filename, locations[i++]);\n\t\t}\n\n\t\tnode = node.nextSibling;\n\t}\n}\n", "/** @import { Effect, TemplateNode } from '#client' */\nimport { FILENAME, HMR } from '../../../constants.js';\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport { hydrate_node, hydrating } from '../dom/hydration.js';\nimport { block, branch, destroy_effect } from '../reactivity/effects.js';\nimport { set, source } from '../reactivity/sources.js';\nimport { set_should_intro } from '../render.js';\nimport { get } from '../runtime.js';\nimport { assign_nodes } from '../dom/template.js';\nimport { create_comment } from '../dom/operations.js';\n\n/**\n * @template {(anchor: Comment, props: any) => any} Component\n * @param {Component} fn\n */\nexport function hmr(fn) {\n\tconst current = source(fn);\n\n\t/**\n\t * @param {TemplateNode} anchor\n\t * @param {any} props\n\t */\n\tfunction wrapper(anchor, props) {\n\t\tlet component = {};\n\t\tlet instance = {};\n\n\t\t/** @type {Effect} */\n\t\tlet effect;\n\n\t\tlet ran = false;\n\n\t\t// Surround the wrapped effects with comments and assign the nodes\n\t\t// on the wrapping effects so the parent can properly do DOM operations.\n\t\tlet start = create_comment();\n\t\tlet end = create_comment();\n\n\t\t// During hydration, inserting the start comment before the anchor could\n\t\t// corrupt the DOM tree that the hydration walker is navigating (e.g. when\n\t\t// a component is inside a CSS props wrapper gh-issue#17972). We defer the insertion until\n\t\t// after the component has hydrated.\n\t\tif (!hydrating) {\n\t\t\tanchor.before(start);\n\t\t}\n\n\t\tblock(() => {\n\t\t\tif (component === (component = get(current))) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (effect) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tfor (var k in instance) delete instance[k];\n\t\t\t\tdestroy_effect(effect);\n\t\t\t}\n\n\t\t\teffect = branch(() => {\n\t\t\t\t// when the component is invalidated, replace it without transitions\n\t\t\t\tif (ran) set_should_intro(false);\n\n\t\t\t\t// preserve getters/setters\n\t\t\t\tvar result =\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\tnew.target ? new component(anchor, props) : component(anchor, props);\n\t\t\t\t// a component is not guaranteed to return something and we can't invoke getOwnPropertyDescriptors on undefined\n\t\t\t\tif (result) {\n\t\t\t\t\tObject.defineProperties(instance, Object.getOwnPropertyDescriptors(result));\n\t\t\t\t}\n\n\t\t\t\tif (ran) set_should_intro(true);\n\t\t\t});\n\t\t}, EFFECT_TRANSPARENT);\n\n\t\tran = true;\n\n\t\tif (hydrating) {\n\t\t\t// Insert start comment now that hydration is done, so it doesn't\n\t\t\t// corrupt the hydration walk\n\t\t\tanchor.before(start);\n\t\t\tanchor = hydrate_node;\n\t\t}\n\n\t\tanchor.before(end);\n\n\t\tassign_nodes(start, end);\n\n\t\treturn instance;\n\t}\n\n\t// @ts-expect-error\n\twrapper[FILENAME] = fn[FILENAME];\n\n\t// @ts-ignore\n\twrapper[HMR] = {\n\t\tfn,\n\t\tcurrent,\n\t\tupdate: (/** @type {any} */ incoming) => {\n\t\t\t// This logic ensures that the first version of the component is the one\n\t\t\t// whose update function and therefore block effect is preserved across updates.\n\t\t\t// If we don't do this dance and instead just use `incoming` as the new component\n\t\t\t// and then update, we'll create an ever-growing stack of block effects.\n\n\t\t\t// Trigger the original block effect\n\t\t\tset(wrapper[HMR].current, incoming[HMR].fn);\n\n\t\t\t// Replace the incoming source with the original one\n\t\t\tincoming[HMR].current = wrapper[HMR].current;\n\t\t}\n\t};\n\n\treturn wrapper;\n}\n", "/** @typedef {{ file: string, line: number, column: number }} Location */\n\nimport { get_descriptor } from '../../shared/utils.js';\nimport { LEGACY_PROPS, STATE_SYMBOL } from '#client/constants';\nimport { FILENAME } from '../../../constants.js';\nimport { component_context } from '../context.js';\nimport * as w from '../warnings.js';\nimport { sanitize_location } from '../../../utils.js';\n\n/**\n * Sets up a validator that\n * - traverses the path of a prop to find out if it is allowed to be mutated\n * - checks that the binding chain is not interrupted\n * @param {Record<string, any>} props\n */\nexport function create_ownership_validator(props) {\n\tconst component = component_context?.function;\n\tconst parent = component_context?.p?.function;\n\n\treturn {\n\t\t/**\n\t\t * @param {string} prop\n\t\t * @param {any[]} path\n\t\t * @param {any} result\n\t\t * @param {number} line\n\t\t * @param {number} column\n\t\t */\n\t\tmutation: (prop, path, result, line, column) => {\n\t\t\tconst name = path[0];\n\t\t\tif (is_bound_or_unset(props, name) || !parent) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t/** @type {any} */\n\t\t\tlet value = props;\n\n\t\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\t\tvalue = value[path[i]];\n\t\t\t\tif (!value?.[STATE_SYMBOL]) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst location = sanitize_location(`${component[FILENAME]}:${line}:${column}`);\n\n\t\t\tw.ownership_invalid_mutation(name, location, prop, parent[FILENAME]);\n\n\t\t\treturn result;\n\t\t},\n\t\t/**\n\t\t * @param {any} key\n\t\t * @param {any} child_component\n\t\t * @param {() => any} value\n\t\t */\n\t\tbinding: (key, child_component, value) => {\n\t\t\tif (!is_bound_or_unset(props, key) && parent && value()?.[STATE_SYMBOL]) {\n\t\t\t\tw.ownership_invalid_binding(\n\t\t\t\t\tcomponent[FILENAME],\n\t\t\t\t\tkey,\n\t\t\t\t\tchild_component[FILENAME],\n\t\t\t\t\tparent[FILENAME]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n}\n\n/**\n * @param {Record<string, any>} props\n * @param {string} prop_name\n */\nfunction is_bound_or_unset(props, prop_name) {\n\t// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})`\n\t// or `createClassComponent(Component, props)`\n\tconst is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;\n\treturn (\n\t\t!!get_descriptor(props, prop_name)?.set ||\n\t\t(is_entry_props && prop_name in props) ||\n\t\t!(prop_name in props)\n\t);\n}\n", "import * as e from '../errors.js';\nimport { component_context } from '../context.js';\nimport { FILENAME } from '../../../constants.js';\n\n/** @param {Function & { [FILENAME]: string }} target */\nexport function check_target(target) {\n\tif (target) {\n\t\te.component_api_invalid_new(target[FILENAME] ?? 'a component', target.name);\n\t}\n}\n\nexport function legacy_api() {\n\tconst component = component_context?.function;\n\n\t/** @param {string} method */\n\tfunction error(method) {\n\t\te.component_api_changed(method, component[FILENAME]);\n\t}\n\n\treturn {\n\t\t$destroy: () => error('$destroy()'),\n\t\t$on: () => error('$on(...)'),\n\t\t$set: () => error('$set(...)')\n\t};\n}\n", "import { UNINITIALIZED } from '../../../constants.js';\nimport { snapshot } from '../../shared/clone.js';\nimport { eager_effect, render_effect, validate_effect } from '../reactivity/effects.js';\nimport { untrack } from '../runtime.js';\nimport { get_error } from '../../shared/dev.js';\n\n/**\n * @param {() => any[]} get_value\n * @param {Function} inspector\n * @param {boolean} show_stack\n */\nexport function inspect(get_value, inspector, show_stack = false) {\n\tvalidate_effect('$inspect');\n\n\tlet initial = true;\n\tlet error = /** @type {any} */ (UNINITIALIZED);\n\n\t// Inspect effects runs synchronously so that we can capture useful\n\t// stack traces. As a consequence, reading the value might result\n\t// in an error (an `$inspect(object.property)` will run before the\n\t// `{#if object}...{/if}` that contains it)\n\teager_effect(() => {\n\t\ttry {\n\t\t\tvar value = get_value();\n\t\t} catch (e) {\n\t\t\terror = e;\n\t\t\treturn;\n\t\t}\n\n\t\tvar snap = snapshot(value, true, true);\n\t\tuntrack(() => {\n\t\t\tif (show_stack) {\n\t\t\t\tinspector(...snap);\n\n\t\t\t\tif (!initial) {\n\t\t\t\t\tconst stack = get_error('$inspect(...)');\n\t\t\t\t\tif (stack) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.groupCollapsed('stack trace');\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.log(stack);\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.groupEnd();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinspector(initial ? 'init' : 'update', ...snap);\n\t\t\t}\n\t\t});\n\n\t\tinitial = false;\n\t});\n\n\t// If an error occurs, we store it (along with its stack trace).\n\t// If the render effect subsequently runs, we log the error,\n\t// but if it doesn't run it's because the `$inspect` was\n\t// destroyed, meaning we don't need to bother\n\trender_effect(() => {\n\t\ttry {\n\t\t\t// call `get_value` so that this runs alongside the inspect effect\n\t\t\tget_value();\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\n\t\tif (error !== UNINITIALIZED) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(error);\n\t\t\terror = UNINITIALIZED;\n\t\t}\n\t});\n}\n", "/** @import { Blocker, TemplateNode, Value } from '#client' */\nimport { flatten, increment_pending } from '../../reactivity/async.js';\nimport { get } from '../../runtime.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tset_hydrate_node,\n\tset_hydrating,\n\tskip_nodes\n} from '../hydration.js';\n\n/**\n * @param {TemplateNode} node\n * @param {Blocker[]} blockers\n * @param {Array<() => Promise<any>>} expressions\n * @param {(anchor: TemplateNode, ...deriveds: Value[]) => void} fn\n */\nexport function async(node, blockers = [], expressions = [], fn) {\n\tvar was_hydrating = hydrating;\n\tvar end = null;\n\n\tif (was_hydrating) {\n\t\thydrate_next();\n\t\tend = skip_nodes(false);\n\t}\n\n\tif (expressions.length === 0 && blockers.every((b) => b.settled)) {\n\t\tfn(node);\n\n\t\t// This is necessary because it is not guaranteed that the render function will\n\t\t// advance the hydration node to $.async's end marker: it may stop at an inner\n\t\t// block's end marker (in case of an inner if block for example), but it also may\n\t\t// stop at the correct $.async end marker (in case of component child) - hence\n\t\t// we can't just use hydrate_next()\n\t\t// TODO this feels indicative of a bug elsewhere; ideally we wouldn't need\n\t\t// to double-traverse in the already-resolved case\n\t\tif (was_hydrating) {\n\t\t\tset_hydrate_node(end);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tconst decrement_pending = increment_pending();\n\n\tif (was_hydrating) {\n\t\tvar previous_hydrate_node = hydrate_node;\n\t\tset_hydrate_node(end);\n\t}\n\n\tflatten(blockers, [], expressions, (values) => {\n\t\tif (was_hydrating) {\n\t\t\tset_hydrating(true);\n\t\t\tset_hydrate_node(previous_hydrate_node);\n\t\t}\n\n\t\ttry {\n\t\t\t// get values eagerly to avoid creating blocks if they reject\n\t\t\tfor (const d of values) get(d);\n\n\t\t\tfn(node, ...values);\n\t\t} finally {\n\t\t\tif (was_hydrating) {\n\t\t\t\tset_hydrating(false);\n\t\t\t}\n\n\t\t\tdecrement_pending();\n\t\t}\n\t});\n}\n", "import * as e from '../errors.js';\n/**\n * @param {Node} anchor\n * @param {...(()=>any)[]} args\n */\nexport function validate_snippet_args(anchor, ...args) {\n\tif (typeof anchor !== 'object' || !(anchor instanceof Node)) {\n\t\te.invalid_snippet_arguments();\n\t}\n\n\tfor (let arg of args) {\n\t\tif (typeof arg !== 'function') {\n\t\t\te.invalid_snippet_arguments();\n\t\t}\n\t}\n}\n", "/** @import { Effect, TemplateNode } from '#client' */\nimport { Batch, current_batch } from '../../reactivity/batch.js';\nimport {\n\tbranch,\n\tdestroy_effect,\n\tmove_effect,\n\tpause_effect,\n\tresume_effect\n} from '../../reactivity/effects.js';\nimport { hydrate_node, hydrating } from '../hydration.js';\nimport { create_text, should_defer_append } from '../operations.js';\n\n/**\n * @typedef {{ effect: Effect, fragment: DocumentFragment }} Branch\n */\n\n/**\n * @template Key\n */\nexport class BranchManager {\n\t/** @type {TemplateNode} */\n\tanchor;\n\n\t/** @type {Map<Batch, Key>} */\n\t#batches = new Map();\n\n\t/**\n\t * Map of keys to effects that are currently rendered in the DOM.\n\t * These effects are visible and actively part of the document tree.\n\t * Example:\n\t * ```\n\t * {#if condition}\n\t * \tfoo\n\t * {:else}\n\t * \tbar\n\t * {/if}\n\t * ```\n\t * Can result in the entries `true->Effect` and `false->Effect`\n\t * @type {Map<Key, Effect>}\n\t */\n\t#onscreen = new Map();\n\n\t/**\n\t * Similar to #onscreen with respect to the keys, but contains branches that are not yet\n\t * in the DOM, because their insertion is deferred.\n\t * @type {Map<Key, Branch>}\n\t */\n\t#offscreen = new Map();\n\n\t/**\n\t * Keys of effects that are currently outroing\n\t * @type {Set<Key>}\n\t */\n\t#outroing = new Set();\n\n\t/**\n\t * Whether to pause (i.e. outro) on change, or destroy immediately.\n\t * This is necessary for `<svelte:element>`\n\t */\n\t#transition = true;\n\n\t/**\n\t * @param {TemplateNode} anchor\n\t * @param {boolean} transition\n\t */\n\tconstructor(anchor, transition = true) {\n\t\tthis.anchor = anchor;\n\t\tthis.#transition = transition;\n\t}\n\n\t/**\n\t * @param {Batch} batch\n\t */\n\t#commit = (batch) => {\n\t\t// if this batch was made obsolete, bail\n\t\tif (!this.#batches.has(batch)) return;\n\n\t\tvar key = /** @type {Key} */ (this.#batches.get(batch));\n\n\t\tvar onscreen = this.#onscreen.get(key);\n\n\t\tif (onscreen) {\n\t\t\t// effect is already in the DOM — abort any current outro\n\t\t\tresume_effect(onscreen);\n\t\t\tthis.#outroing.delete(key);\n\t\t} else {\n\t\t\t// effect is currently offscreen. put it in the DOM\n\t\t\tvar offscreen = this.#offscreen.get(key);\n\n\t\t\tif (offscreen) {\n\t\t\t\tthis.#onscreen.set(key, offscreen.effect);\n\t\t\t\tthis.#offscreen.delete(key);\n\n\t\t\t\t// remove the anchor...\n\t\t\t\t/** @type {TemplateNode} */ (offscreen.fragment.lastChild).remove();\n\n\t\t\t\t// ...and append the fragment\n\t\t\t\tthis.anchor.before(offscreen.fragment);\n\t\t\t\tonscreen = offscreen.effect;\n\t\t\t}\n\t\t}\n\n\t\tfor (const [b, k] of this.#batches) {\n\t\t\tthis.#batches.delete(b);\n\n\t\t\tif (b === batch) {\n\t\t\t\t// keep values for newer batches\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst offscreen = this.#offscreen.get(k);\n\n\t\t\tif (offscreen) {\n\t\t\t\t// for older batches, destroy offscreen effects\n\t\t\t\t// as they will never be committed\n\t\t\t\tdestroy_effect(offscreen.effect);\n\t\t\t\tthis.#offscreen.delete(k);\n\t\t\t}\n\t\t}\n\n\t\t// outro/destroy all onscreen effects...\n\t\tfor (const [k, effect] of this.#onscreen) {\n\t\t\t// ...except the one that was just committed\n\t\t\t// or those that are already outroing (else the transition is aborted and the effect destroyed right away)\n\t\t\tif (k === key || this.#outroing.has(k)) continue;\n\n\t\t\tconst on_destroy = () => {\n\t\t\t\tconst keys = Array.from(this.#batches.values());\n\n\t\t\t\tif (keys.includes(k)) {\n\t\t\t\t\t// keep the effect offscreen, as another batch will need it\n\t\t\t\t\tvar fragment = document.createDocumentFragment();\n\t\t\t\t\tmove_effect(effect, fragment);\n\n\t\t\t\t\tfragment.append(create_text()); // TODO can we avoid this?\n\n\t\t\t\t\tthis.#offscreen.set(k, { effect, fragment });\n\t\t\t\t} else {\n\t\t\t\t\tdestroy_effect(effect);\n\t\t\t\t}\n\n\t\t\t\tthis.#outroing.delete(k);\n\t\t\t\tthis.#onscreen.delete(k);\n\t\t\t};\n\n\t\t\tif (this.#transition || !onscreen) {\n\t\t\t\tthis.#outroing.add(k);\n\t\t\t\tpause_effect(effect, on_destroy, false);\n\t\t\t} else {\n\t\t\t\ton_destroy();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * @param {Batch} batch\n\t */\n\t#discard = (batch) => {\n\t\tthis.#batches.delete(batch);\n\n\t\tconst keys = Array.from(this.#batches.values());\n\n\t\tfor (const [k, branch] of this.#offscreen) {\n\t\t\tif (!keys.includes(k)) {\n\t\t\t\tdestroy_effect(branch.effect);\n\t\t\t\tthis.#offscreen.delete(k);\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t *\n\t * @param {any} key\n\t * @param {null | ((target: TemplateNode) => void)} fn\n\t */\n\tensure(key, fn) {\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\t\tvar defer = should_defer_append();\n\n\t\tif (fn && !this.#onscreen.has(key) && !this.#offscreen.has(key)) {\n\t\t\tif (defer) {\n\t\t\t\tvar fragment = document.createDocumentFragment();\n\t\t\t\tvar target = create_text();\n\n\t\t\t\tfragment.append(target);\n\n\t\t\t\tthis.#offscreen.set(key, {\n\t\t\t\t\teffect: branch(() => fn(target)),\n\t\t\t\t\tfragment\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.#onscreen.set(\n\t\t\t\t\tkey,\n\t\t\t\t\tbranch(() => fn(this.anchor))\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.#batches.set(batch, key);\n\n\t\tif (defer) {\n\t\t\tfor (const [k, effect] of this.#onscreen) {\n\t\t\t\tif (k === key) {\n\t\t\t\t\tbatch.unskip_effect(effect);\n\t\t\t\t} else {\n\t\t\t\t\tbatch.skip_effect(effect);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const [k, branch] of this.#offscreen) {\n\t\t\t\tif (k === key) {\n\t\t\t\t\tbatch.unskip_effect(branch.effect);\n\t\t\t\t} else {\n\t\t\t\t\tbatch.skip_effect(branch.effect);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbatch.oncommit(this.#commit);\n\t\t\tbatch.ondiscard(this.#discard);\n\t\t} else {\n\t\t\tif (hydrating) {\n\t\t\t\tthis.anchor = hydrate_node;\n\t\t\t}\n\n\t\t\tthis.#commit(batch);\n\t\t}\n\t}\n}\n", "/** @import { Source, TemplateNode } from '#client' */\nimport { is_promise } from '../../../shared/utils.js';\nimport { block } from '../../reactivity/effects.js';\nimport { internal_set, mutable_source, source } from '../../reactivity/sources.js';\nimport {\n\thydrate_next,\n\thydrating,\n\tskip_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport { queue_micro_task } from '../task.js';\nimport { HYDRATION_START_ELSE, UNINITIALIZED } from '../../../../constants.js';\nimport { is_runes } from '../../context.js';\nimport { Batch, current_batch, flushSync, is_flushing_sync } from '../../reactivity/batch.js';\nimport { BranchManager } from './branches.js';\nimport { capture, unset_context } from '../../reactivity/async.js';\n\nconst PENDING = 0;\nconst THEN = 1;\nconst CATCH = 2;\n\n/** @typedef {typeof PENDING | typeof THEN | typeof CATCH} AwaitState */\n\n/**\n * @template V\n * @param {TemplateNode} node\n * @param {(() => any)} get_input\n * @param {null | ((anchor: Node) => void)} pending_fn\n * @param {null | ((anchor: Node, value: Source<V>) => void)} then_fn\n * @param {null | ((anchor: Node, error: unknown) => void)} catch_fn\n * @returns {void}\n */\nexport function await_block(node, get_input, pending_fn, then_fn, catch_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar runes = is_runes();\n\n\tvar v = /** @type {V} */ (UNINITIALIZED);\n\tvar value = runes ? source(v) : mutable_source(v, false, false);\n\tvar error = runes ? source(v) : mutable_source(v, false, false);\n\n\tvar branches = new BranchManager(node);\n\n\tblock(() => {\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\n\t\t// we null out `current_batch` because otherwise `save(...)` will incorrectly restore it —\n\t\t// the batch will already have been committed by the time it resolves\n\t\tbatch.deactivate();\n\t\tvar input = get_input();\n\t\tbatch.activate();\n\n\t\tvar destroyed = false;\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\t// @ts-ignore coercing `node` to a `Comment` causes TypeScript and Prettier to fight\n\t\tlet mismatch = hydrating && is_promise(input) === (node.data === HYDRATION_START_ELSE);\n\n\t\tif (mismatch) {\n\t\t\t// Hydration mismatch: remove everything inside the anchor and start fresh\n\t\t\tset_hydrate_node(skip_nodes());\n\t\t\tset_hydrating(false);\n\t\t}\n\n\t\tif (is_promise(input)) {\n\t\t\tvar restore = capture();\n\t\t\tvar resolved = false;\n\n\t\t\t/**\n\t\t\t * @param {() => void} fn\n\t\t\t */\n\t\t\tconst resolve = (fn) => {\n\t\t\t\tif (destroyed) return;\n\n\t\t\t\tresolved = true;\n\t\t\t\t// We don't want to restore the previous batch here; {#await} blocks don't follow the async logic\n\t\t\t\t// we have elsewhere, instead pending/resolve/fail states are each their own batch so to speak.\n\t\t\t\trestore(false);\n\t\t\t\t// Make sure we have a batch, since the branch manager expects one to exist\n\t\t\t\tBatch.ensure();\n\n\t\t\t\tif (hydrating) {\n\t\t\t\t\t// `restore()` could set `hydrating` to `true`, which we very much\n\t\t\t\t\t// don't want — we want to restore everything _except_ this\n\t\t\t\t\tset_hydrating(false);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tfn();\n\t\t\t\t} finally {\n\t\t\t\t\tunset_context(false);\n\n\t\t\t\t\t// without this, the DOM does not update until two ticks after the promise\n\t\t\t\t\t// resolves, which is unexpected behaviour (and somewhat irksome to test)\n\t\t\t\t\tif (!is_flushing_sync) flushSync();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tinput.then(\n\t\t\t\t(v) => {\n\t\t\t\t\tresolve(() => {\n\t\t\t\t\t\tinternal_set(value, v);\n\t\t\t\t\t\tbranches.ensure(THEN, then_fn && ((target) => then_fn(target, value)));\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t(e) => {\n\t\t\t\t\tresolve(() => {\n\t\t\t\t\t\tinternal_set(error, e);\n\t\t\t\t\t\tbranches.ensure(CATCH, catch_fn && ((target) => catch_fn(target, error)));\n\n\t\t\t\t\t\tif (!catch_fn) {\n\t\t\t\t\t\t\t// Rethrow the error if no catch block exists\n\t\t\t\t\t\t\tthrow error.v;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (hydrating) {\n\t\t\t\tbranches.ensure(PENDING, pending_fn);\n\t\t\t} else {\n\t\t\t\t// Wait a microtask before checking if we should show the pending state as\n\t\t\t\t// the promise might have resolved by then\n\t\t\t\tqueue_micro_task(() => {\n\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\tresolve(() => {\n\t\t\t\t\t\t\tbranches.ensure(PENDING, pending_fn);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tinternal_set(value, input);\n\t\t\tbranches.ensure(THEN, then_fn && ((target) => then_fn(target, value)));\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\treturn () => {\n\t\t\tdestroyed = true;\n\t\t};\n\t});\n}\n", "/** @import { TemplateNode } from '#client' */\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport {\n\thydrate_next,\n\thydrating,\n\tread_hydration_instruction,\n\tskip_nodes,\n\tset_hydrate_node,\n\tset_hydrating,\n\thydrate_node\n} from '../hydration.js';\nimport { block } from '../../reactivity/effects.js';\nimport { BranchManager } from './branches.js';\n\n/**\n * @param {TemplateNode} node\n * @param {(branch: (fn: (anchor: Node) => void, key?: number | false) => 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\t/** @type {TemplateNode | undefined} */\n\tvar marker;\n\tif (hydrating) {\n\t\tmarker = hydrate_node;\n\t\thydrate_next();\n\t}\n\n\tvar branches = new BranchManager(node);\n\tvar flags = elseif ? EFFECT_TRANSPARENT : 0;\n\n\t/**\n\t * @param {number | false} key\n\t * @param {null | ((anchor: Node) => void)} fn\n\t */\n\tfunction update_branch(key, fn) {\n\t\tif (hydrating) {\n\t\t\tvar data = read_hydration_instruction(/** @type {TemplateNode} */ (marker));\n\n\t\t\t// \"[n\" = branch n, \"[-1\" = else\n\t\t\tif (key !== parseInt(data.substring(1))) {\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\tvar anchor = skip_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tbranches.anchor = anchor;\n\n\t\t\t\tset_hydrating(false);\n\t\t\t\tbranches.ensure(key, fn);\n\t\t\t\tset_hydrating(true);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tbranches.ensure(key, fn);\n\t}\n\n\tblock(() => {\n\t\tvar has_branch = false;\n\n\t\tfn((fn, key = 0) => {\n\t\t\thas_branch = true;\n\t\t\tupdate_branch(key, fn);\n\t\t});\n\n\t\tif (!has_branch) {\n\t\t\tupdate_branch(-1, null);\n\t\t}\n\t}, flags);\n}\n", "/** @import { TemplateNode } from '#client' */\nimport { is_runes } from '../../context.js';\nimport { block } from '../../reactivity/effects.js';\nimport { hydrate_next, hydrating } from '../hydration.js';\nimport { BranchManager } from './branches.js';\n\nconst NAN = Symbol('NaN');\n\n/**\n * @template V\n * @param {TemplateNode} node\n * @param {() => V} get_key\n * @param {(anchor: Node) => TemplateNode | void} render_fn\n * @returns {void}\n */\nexport function key(node, get_key, render_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar branches = new BranchManager(node);\n\n\tvar legacy = !is_runes();\n\n\tblock(() => {\n\t\tvar key = get_key();\n\n\t\t// NaN !== NaN, hence we do this workaround to not trigger remounts unnecessarily\n\t\tif (key !== key) {\n\t\t\tkey = /** @type {any} */ (NAN);\n\t\t}\n\n\t\t// key blocks in Svelte <5 had stupid semantics\n\t\tif (legacy && key !== null && typeof key === 'object') {\n\t\t\tkey = /** @type {V} */ ({});\n\t\t}\n\n\t\tbranches.ensure(key, render_fn);\n\t});\n}\n", "import { render_effect } from '../../reactivity/effects.js';\nimport { hydrating, set_hydrate_node } from '../hydration.js';\nimport { get_first_child } from '../operations.js';\n\n/**\n * @param {HTMLDivElement | SVGGElement} element\n * @param {() => Record<string, string>} get_styles\n * @returns {void}\n */\nexport function css_props(element, get_styles) {\n\tif (hydrating) {\n\t\tset_hydrate_node(get_first_child(element));\n\t}\n\n\trender_effect(() => {\n\t\tvar styles = get_styles();\n\n\t\tfor (var key in styles) {\n\t\t\tvar value = styles[key];\n\n\t\t\tif (value) {\n\t\t\t\telement.style.setProperty(key, value);\n\t\t\t} else {\n\t\t\t\telement.style.removeProperty(key);\n\t\t\t}\n\t\t}\n\t});\n}\n", "/** @import { EachItem, EachOutroGroup, EachState, Effect, EffectNodes, MaybeSource, Source, TemplateNode, TransitionManager, Value } from '#client' */\n/** @import { Batch } from '../../reactivity/batch.js'; */\nimport {\n\tEACH_INDEX_REACTIVE,\n\tEACH_IS_ANIMATED,\n\tEACH_IS_CONTROLLED,\n\tEACH_ITEM_IMMUTABLE,\n\tEACH_ITEM_REACTIVE,\n\tHYDRATION_END,\n\tHYDRATION_START_ELSE\n} from '../../../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tread_hydration_instruction,\n\tskip_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\tshould_defer_append\n} from '../operations.js';\nimport {\n\tblock,\n\tbranch,\n\tdestroy_effect,\n\tmove_effect,\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 { BRANCH_EFFECT, COMMENT_NODE, DESTROYED, EFFECT_OFFSCREEN, INERT } from '#client/constants';\nimport { queue_micro_task } from '../task.js';\nimport { get } from '../../runtime.js';\nimport { DEV } from 'esm-env';\nimport { derived_safe_equal } from '../../reactivity/deriveds.js';\nimport { current_batch } from '../../reactivity/batch.js';\nimport * as e from '../../errors.js';\n\n// When making substantive changes to this file, validate them with the each block stress test:\n// https://svelte.dev/playground/1972b2cf46564476ad8c8c6405b23b7b\n// This test also exists in this repo, as `packages/svelte/tests/manual/each-stress-test`\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 {Effect[]} to_destroy\n * @param {null | Node} controlled_anchor\n */\nfunction pause_effects(state, to_destroy, controlled_anchor) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\tvar length = to_destroy.length;\n\n\t/** @type {EachOutroGroup} */\n\tvar group;\n\tvar remaining = to_destroy.length;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tlet effect = to_destroy[i];\n\n\t\tpause_effect(\n\t\t\teffect,\n\t\t\t() => {\n\t\t\t\tif (group) {\n\t\t\t\t\tgroup.pending.delete(effect);\n\t\t\t\t\tgroup.done.add(effect);\n\n\t\t\t\t\tif (group.pending.size === 0) {\n\t\t\t\t\t\tvar groups = /** @type {Set<EachOutroGroup>} */ (state.outrogroups);\n\n\t\t\t\t\t\tdestroy_effects(state, array_from(group.done));\n\t\t\t\t\t\tgroups.delete(group);\n\n\t\t\t\t\t\tif (groups.size === 0) {\n\t\t\t\t\t\t\tstate.outrogroups = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tremaining -= 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\tfalse\n\t\t);\n\t}\n\n\tif (remaining === 0) {\n\t\t// If we're in a controlled each block (i.e. the block is the only child of an\n\t\t// element), and we are removing all items, _and_ there are no out transitions,\n\t\t// we can use the fast path — emptying the element and replacing the anchor\n\t\tvar fast_path = transitions.length === 0 && controlled_anchor !== null;\n\n\t\tif (fast_path) {\n\t\t\tvar anchor = /** @type {Element} */ (controlled_anchor);\n\t\t\tvar parent_node = /** @type {Element} */ (anchor.parentNode);\n\n\t\t\tclear_text_content(parent_node);\n\t\t\tparent_node.append(anchor);\n\n\t\t\tstate.items.clear();\n\t\t}\n\n\t\tdestroy_effects(state, to_destroy, !fast_path);\n\t} else {\n\t\tgroup = {\n\t\t\tpending: new Set(to_destroy),\n\t\t\tdone: new Set()\n\t\t};\n\n\t\t(state.outrogroups ??= new Set()).add(group);\n\t}\n}\n\n/**\n * @param {EachState} state\n * @param {Effect[]} to_destroy\n * @param {boolean} remove_dom\n */\nfunction destroy_effects(state, to_destroy, remove_dom = true) {\n\t/** @type {Set<Effect> | undefined} */\n\tvar preserved_effects;\n\n\t// The loop-in-a-loop isn't ideal, but we should only hit this in relatively rare cases\n\tif (state.pending.size > 0) {\n\t\tpreserved_effects = new Set();\n\n\t\tfor (const keys of state.pending.values()) {\n\t\t\tfor (const key of keys) {\n\t\t\t\tpreserved_effects.add(/** @type {EachItem} */ (state.items.get(key)).e);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < to_destroy.length; i++) {\n\t\tvar e = to_destroy[i];\n\n\t\tif (preserved_effects?.has(e)) {\n\t\t\te.f |= EFFECT_OFFSCREEN;\n\n\t\t\tconst fragment = document.createDocumentFragment();\n\t\t\tmove_effect(e, fragment);\n\t\t} else {\n\t\t\tdestroy_effect(to_destroy[i], remove_dom);\n\t\t}\n\t}\n}\n\n/** @type {TemplateNode} */\nvar offscreen_anchor;\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 {Map<any, EachItem>} */\n\tvar items = new Map();\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(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\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\t/** @type {V[]} */\n\tvar array;\n\n\t/** @type {Map<Batch, Set<any>>} */\n\tvar pending = new Map();\n\n\tvar first_run = true;\n\n\t/**\n\t * @param {Batch} batch\n\t */\n\tfunction commit(batch) {\n\t\tif ((state.effect.f & DESTROYED) !== 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tstate.pending.delete(batch);\n\n\t\tstate.fallback = fallback;\n\t\treconcile(state, array, anchor, flags, get_key);\n\n\t\tif (fallback !== null) {\n\t\t\tif (array.length === 0) {\n\t\t\t\tif ((fallback.f & EFFECT_OFFSCREEN) === 0) {\n\t\t\t\t\tresume_effect(fallback);\n\t\t\t\t} else {\n\t\t\t\t\tfallback.f ^= EFFECT_OFFSCREEN;\n\t\t\t\t\tmove(fallback, null, anchor);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpause_effect(fallback, () => {\n\t\t\t\t\t// TODO only null out if no pending batch needs it,\n\t\t\t\t\t// otherwise re-add `fallback.fragment` and move the\n\t\t\t\t\t// effect into it\n\t\t\t\t\tfallback = null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {Batch} batch\n\t */\n\tfunction discard(batch) {\n\t\tstate.pending.delete(batch);\n\t}\n\n\tvar effect = block(() => {\n\t\tarray = /** @type {V[]} */ (get(each_array));\n\t\tvar length = array.length;\n\n\t\t/** `true` if there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\tlet mismatch = false;\n\n\t\tif (hydrating) {\n\t\t\tvar is_else = read_hydration_instruction(anchor) === HYDRATION_START_ELSE;\n\n\t\t\tif (is_else !== (length === 0)) {\n\t\t\t\t// hydration mismatch — remove the server-rendered DOM and start over\n\t\t\t\tanchor = skip_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\tvar keys = new Set();\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\t\tvar defer = should_defer_append();\n\n\t\tfor (var index = 0; index < length; index += 1) {\n\t\t\tif (\n\t\t\t\thydrating &&\n\t\t\t\thydrate_node.nodeType === COMMENT_NODE &&\n\t\t\t\t/** @type {Comment} */ (hydrate_node).data === HYDRATION_END\n\t\t\t) {\n\t\t\t\t// The server rendered fewer items than expected,\n\t\t\t\t// so break out and continue appending non-hydrated items\n\t\t\t\tanchor = /** @type {Comment} */ (hydrate_node);\n\t\t\t\tmismatch = true;\n\t\t\t\tset_hydrating(false);\n\t\t\t}\n\n\t\t\tvar value = array[index];\n\t\t\tvar key = get_key(value, index);\n\n\t\t\tif (DEV) {\n\t\t\t\t// Check that the key function is idempotent (returns the same value when called twice)\n\t\t\t\tvar key_again = get_key(value, index);\n\t\t\t\tif (key !== key_again) {\n\t\t\t\t\te.each_key_volatile(String(index), String(key), String(key_again));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar item = first_run ? null : items.get(key);\n\n\t\t\tif (item) {\n\t\t\t\t// update before reconciliation, to trigger any async updates\n\t\t\t\tif (item.v) internal_set(item.v, value);\n\t\t\t\tif (item.i) internal_set(item.i, index);\n\n\t\t\t\tif (defer) {\n\t\t\t\t\tbatch.unskip_effect(item.e);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\titem = create_item(\n\t\t\t\t\titems,\n\t\t\t\t\tfirst_run ? anchor : (offscreen_anchor ??= create_text()),\n\t\t\t\t\tvalue,\n\t\t\t\t\tkey,\n\t\t\t\t\tindex,\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\n\t\t\t\tif (!first_run) {\n\t\t\t\t\titem.e.f |= EFFECT_OFFSCREEN;\n\t\t\t\t}\n\n\t\t\t\titems.set(key, item);\n\t\t\t}\n\n\t\t\tkeys.add(key);\n\t\t}\n\n\t\tif (length === 0 && fallback_fn && !fallback) {\n\t\t\tif (first_run) {\n\t\t\t\tfallback = branch(() => fallback_fn(anchor));\n\t\t\t} else {\n\t\t\t\tfallback = branch(() => fallback_fn((offscreen_anchor ??= create_text())));\n\t\t\t\tfallback.f |= EFFECT_OFFSCREEN;\n\t\t\t}\n\t\t}\n\n\t\tif (length > keys.size) {\n\t\t\tif (DEV) {\n\t\t\t\tvalidate_each_keys(array, get_key);\n\t\t\t} else {\n\t\t\t\t// in prod, the additional information isn't printed, so don't bother computing it\n\t\t\t\te.each_key_duplicate('', '', '');\n\t\t\t}\n\t\t}\n\n\t\t// remove excess nodes\n\t\tif (hydrating && length > 0) {\n\t\t\tset_hydrate_node(skip_nodes());\n\t\t}\n\n\t\tif (!first_run) {\n\t\t\tpending.set(batch, keys);\n\n\t\t\tif (defer) {\n\t\t\t\tfor (const [key, item] of items) {\n\t\t\t\t\tif (!keys.has(key)) {\n\t\t\t\t\t\tbatch.skip_effect(item.e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbatch.oncommit(commit);\n\t\t\t\tbatch.ondiscard(discard);\n\t\t\t} else {\n\t\t\t\tcommit(batch);\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\t/** @type {EachState} */\n\tvar state = { effect, flags, items, pending, outrogroups: null, fallback };\n\n\tfirst_run = false;\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n\n/**\n * Skip past any non-branch effects (which could be created with `createSubscriber`, for example) to find the next branch effect\n * @param {Effect | null} effect\n * @returns {Effect | null}\n */\nfunction skip_to_branch(effect) {\n\twhile (effect !== null && (effect.f & BRANCH_EFFECT) === 0) {\n\t\teffect = effect.next;\n\t}\n\treturn effect;\n}\n\n/**\n * Add, remove, or reorder items output by an each block as its input changes\n * @template V\n * @param {EachState} state\n * @param {Array<V>} array\n * @param {Element | Comment | Text} anchor\n * @param {number} flags\n * @param {(value: V, index: number) => any} get_key\n * @returns {void}\n */\nfunction reconcile(state, array, anchor, flags, get_key) {\n\tvar is_animated = (flags & EACH_IS_ANIMATED) !== 0;\n\n\tvar length = array.length;\n\tvar items = state.items;\n\tvar current = skip_to_branch(state.effect.first);\n\n\t/** @type {undefined | Set<Effect>} */\n\tvar seen;\n\n\t/** @type {Effect | null} */\n\tvar prev = null;\n\n\t/** @type {undefined | Set<Effect>} */\n\tvar to_animate;\n\n\t/** @type {Effect[]} */\n\tvar matched = [];\n\n\t/** @type {Effect[]} */\n\tvar stashed = [];\n\n\t/** @type {V} */\n\tvar value;\n\n\t/** @type {any} */\n\tvar key;\n\n\t/** @type {Effect | undefined} */\n\tvar effect;\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\teffect = /** @type {EachItem} */ (items.get(key)).e;\n\n\t\t\t// offscreen == coming in now, no animation in that case,\n\t\t\t// else this would happen https://github.com/sveltejs/svelte/issues/17181\n\t\t\tif ((effect.f & EFFECT_OFFSCREEN) === 0) {\n\t\t\t\teffect.nodes?.a?.measure();\n\t\t\t\t(to_animate ??= new Set()).add(effect);\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\n\t\teffect = /** @type {EachItem} */ (items.get(key)).e;\n\n\t\tif (state.outrogroups !== null) {\n\t\t\tfor (const group of state.outrogroups) {\n\t\t\t\tgroup.pending.delete(effect);\n\t\t\t\tgroup.done.delete(effect);\n\t\t\t}\n\t\t}\n\n\t\tif ((effect.f & INERT) !== 0) {\n\t\t\tresume_effect(effect);\n\t\t\tif (is_animated) {\n\t\t\t\teffect.nodes?.a?.unfix();\n\t\t\t\t(to_animate ??= new Set()).delete(effect);\n\t\t\t}\n\t\t}\n\n\t\tif ((effect.f & EFFECT_OFFSCREEN) !== 0) {\n\t\t\teffect.f ^= EFFECT_OFFSCREEN;\n\n\t\t\tif (effect === current) {\n\t\t\t\tmove(effect, null, anchor);\n\t\t\t} else {\n\t\t\t\tvar next = prev ? prev.next : current;\n\n\t\t\t\tif (effect === state.effect.last) {\n\t\t\t\t\tstate.effect.last = effect.prev;\n\t\t\t\t}\n\n\t\t\t\tif (effect.prev) effect.prev.next = effect.next;\n\t\t\t\tif (effect.next) effect.next.prev = effect.prev;\n\t\t\t\tlink(state, prev, effect);\n\t\t\t\tlink(state, effect, next);\n\n\t\t\t\tmove(effect, next, anchor);\n\t\t\t\tprev = effect;\n\n\t\t\t\tmatched = [];\n\t\t\t\tstashed = [];\n\n\t\t\t\tcurrent = skip_to_branch(prev.next);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (effect !== current) {\n\t\t\tif (seen !== undefined && seen.has(effect)) {\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(effect);\n\t\t\t\t\tmove(effect, current, anchor);\n\n\t\t\t\t\tlink(state, effect.prev, effect.next);\n\t\t\t\t\tlink(state, effect, prev === null ? state.effect.first : prev.next);\n\t\t\t\t\tlink(state, prev, effect);\n\n\t\t\t\t\tprev = effect;\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 !== effect) {\n\t\t\t\t(seen ??= new Set()).add(current);\n\t\t\t\tstashed.push(current);\n\t\t\t\tcurrent = skip_to_branch(current.next);\n\t\t\t}\n\n\t\t\tif (current === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif ((effect.f & EFFECT_OFFSCREEN) === 0) {\n\t\t\tmatched.push(effect);\n\t\t}\n\n\t\tprev = effect;\n\t\tcurrent = skip_to_branch(effect.next);\n\t}\n\n\tif (state.outrogroups !== null) {\n\t\tfor (const group of state.outrogroups) {\n\t\t\tif (group.pending.size === 0) {\n\t\t\t\tdestroy_effects(state, array_from(group.done));\n\t\t\t\tstate.outrogroups?.delete(group);\n\t\t\t}\n\t\t}\n\n\t\tif (state.outrogroups.size === 0) {\n\t\t\tstate.outrogroups = null;\n\t\t}\n\t}\n\n\tif (current !== null || seen !== undefined) {\n\t\t/** @type {Effect[]} */\n\t\tvar to_destroy = [];\n\n\t\tif (seen !== undefined) {\n\t\t\tfor (effect of seen) {\n\t\t\t\tif ((effect.f & INERT) === 0) {\n\t\t\t\t\tto_destroy.push(effect);\n\t\t\t\t}\n\t\t\t}\n\t\t}\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.f & INERT) === 0 && current !== state.fallback) {\n\t\t\t\tto_destroy.push(current);\n\t\t\t}\n\n\t\t\tcurrent = skip_to_branch(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].nodes?.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].nodes?.a?.fix();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpause_effects(state, to_destroy, controlled_anchor);\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 (effect of to_animate) {\n\t\t\t\teffect.nodes?.a?.apply();\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * @template V\n * @param {Map<any, EachItem>} items\n * @param {Node} anchor\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(items, anchor, value, key, index, render_fn, flags, get_collection) {\n\tvar v =\n\t\t(flags & EACH_ITEM_REACTIVE) !== 0\n\t\t\t? (flags & EACH_ITEM_IMMUTABLE) === 0\n\t\t\t\t? mutable_source(value, false, false)\n\t\t\t\t: source(value)\n\t\t\t: null;\n\n\tvar i = (flags & EACH_INDEX_REACTIVE) !== 0 ? source(index) : null;\n\n\tif (DEV && v) {\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\tv.trace = () => {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\tget_collection()[i?.v ?? index];\n\t\t};\n\t}\n\n\treturn {\n\t\tv,\n\t\ti,\n\t\te: branch(() => {\n\t\t\trender_fn(anchor, v ?? value, i ?? index, get_collection);\n\n\t\t\treturn () => {\n\t\t\t\titems.delete(key);\n\t\t\t};\n\t\t})\n\t};\n}\n\n/**\n * @param {Effect} effect\n * @param {Effect | null} next\n * @param {Text | Element | Comment} anchor\n */\nfunction move(effect, next, anchor) {\n\tif (!effect.nodes) return;\n\n\tvar node = effect.nodes.start;\n\tvar end = effect.nodes.end;\n\n\tvar dest =\n\t\tnext && (next.f & EFFECT_OFFSCREEN) === 0\n\t\t\t? /** @type {EffectNodes} */ (next.nodes).start\n\t\t\t: anchor;\n\n\twhile (node !== null) {\n\t\tvar next_node = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\tdest.before(node);\n\n\t\tif (node === end) {\n\t\t\treturn;\n\t\t}\n\n\t\tnode = next_node;\n\t}\n}\n\n/**\n * @param {EachState} state\n * @param {Effect | null} prev\n * @param {Effect | null} next\n */\nfunction link(state, prev, next) {\n\tif (prev === null) {\n\t\tstate.effect.first = next;\n\t} else {\n\t\tprev.next = next;\n\t}\n\n\tif (next === null) {\n\t\tstate.effect.last = prev;\n\t} else {\n\t\tnext.prev = prev;\n\t}\n}\n\n/**\n * @param {Array<any>} array\n * @param {(item: any, index: number) => string} key_fn\n * @returns {void}\n */\nfunction validate_each_keys(array, key_fn) {\n\tconst keys = new Map();\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; i++) {\n\t\tconst key = key_fn(array[i], i);\n\n\t\tif (keys.has(key)) {\n\t\t\tconst a = String(keys.get(key));\n\t\t\tconst b = String(i);\n\n\t\t\t/** @type {string | null} */\n\t\t\tlet k = String(key);\n\t\t\tif (k.startsWith('[object ')) k = null;\n\n\t\t\te.each_key_duplicate(a, b, k);\n\t\t}\n\n\t\tkeys.set(key, i);\n\t}\n}\n", "/** @import { Effect, TemplateNode } from '#client' */\n/** @import {} from 'trusted-types' */\nimport {\n\tFILENAME,\n\tHYDRATION_ERROR,\n\tNAMESPACE_SVG,\n\tNAMESPACE_MATHML\n} from '../../../../constants.js';\nimport { remove_effect_dom, template_effect } from '../../reactivity/effects.js';\nimport { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from '../hydration.js';\n\nimport { assign_nodes } from '../template.js';\nimport * as w from '../../warnings.js';\nimport { hash, sanitize_location } from '../../../../utils.js';\nimport { DEV } from 'esm-env';\nimport { dev_current_component_function } from '../../context.js';\nimport { create_element, get_first_child, get_next_sibling } from '../operations.js';\nimport { active_effect } from '../../runtime.js';\nimport { COMMENT_NODE } from '#client/constants';\n\n/**\n * @param {Element} element\n * @param {string | null} server_hash\n * @param {string | TrustedHTML} value\n */\nfunction check_hash(element, server_hash, value) {\n\tif (!server_hash || server_hash === hash(String(value ?? ''))) return;\n\n\tlet location;\n\n\t// @ts-expect-error\n\tconst loc = element.__svelte_meta?.loc;\n\tif (loc) {\n\t\tlocation = `near ${loc.file}:${loc.line}:${loc.column}`;\n\t} else if (dev_current_component_function?.[FILENAME]) {\n\t\tlocation = `in ${dev_current_component_function[FILENAME]}`;\n\t}\n\n\tw.hydration_html_changed(sanitize_location(location));\n}\n\n/**\n * @param {Element | Text | Comment} node\n * @param {() => string | TrustedHTML} get_value\n * @param {boolean} [is_controlled]\n * @param {boolean} [svg]\n * @param {boolean} [mathml]\n * @param {boolean} [skip_warning]\n * @returns {void}\n */\nexport function html(\n\tnode,\n\tget_value,\n\tis_controlled = false,\n\tsvg = false,\n\tmathml = false,\n\tskip_warning = false\n) {\n\tvar anchor = node;\n\n\t/** @type {string | TrustedHTML} */\n\tvar value = '';\n\n\tif (is_controlled) {\n\t\tvar parent_node = /** @type {Element} */ (node);\n\n\t\tif (hydrating) {\n\t\t\tanchor = set_hydrate_node(get_first_child(parent_node));\n\t\t}\n\t}\n\n\ttemplate_effect(() => {\n\t\tvar effect = /** @type {Effect} */ (active_effect);\n\n\t\tif (value === (value = get_value() ?? '')) {\n\t\t\tif (hydrating) hydrate_next();\n\t\t\treturn;\n\t\t}\n\n\t\tif (is_controlled && !hydrating) {\n\t\t\t// When @html is the only child, use innerHTML directly.\n\t\t\t// This also handles contenteditable, where the user may delete the anchor comment.\n\t\t\teffect.nodes = null;\n\t\t\tparent_node.innerHTML = /** @type {string} */ (value);\n\n\t\t\tif (value !== '') {\n\t\t\t\tassign_nodes(\n\t\t\t\t\t/** @type {TemplateNode} */ (get_first_child(parent_node)),\n\t\t\t\t\t/** @type {TemplateNode} */ (parent_node.lastChild)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (effect.nodes !== null) {\n\t\t\tremove_effect_dom(effect.nodes.start, /** @type {TemplateNode} */ (effect.nodes.end));\n\t\t\teffect.nodes = null;\n\t\t}\n\n\t\tif (value === '') return;\n\n\t\tif (hydrating) {\n\t\t\t// We're deliberately not trying to repair mismatches between server and client,\n\t\t\t// as it's costly and error-prone (and it's an edge case to have a mismatch anyway)\n\t\t\tvar hash = /** @type {Comment} */ (hydrate_node).data;\n\n\t\t\t/** @type {TemplateNode | null} */\n\t\t\tvar next = hydrate_next();\n\t\t\tvar last = next;\n\n\t\t\twhile (\n\t\t\t\tnext !== null &&\n\t\t\t\t(next.nodeType !== COMMENT_NODE || /** @type {Comment} */ (next).data !== '')\n\t\t\t) {\n\t\t\t\tlast = next;\n\t\t\t\tnext = get_next_sibling(next);\n\t\t\t}\n\n\t\t\tif (next === null) {\n\t\t\t\tw.hydration_mismatch();\n\t\t\t\tthrow HYDRATION_ERROR;\n\t\t\t}\n\n\t\t\tif (DEV && !skip_warning) {\n\t\t\t\tcheck_hash(/** @type {Element} */ (next.parentNode), hash, value);\n\t\t\t}\n\n\t\t\tassign_nodes(hydrate_node, last);\n\t\t\tanchor = set_hydrate_node(next);\n\t\t\treturn;\n\t\t}\n\n\t\t// Don't use create_fragment_with_script_from_html here because that would mean script tags are executed.\n\t\t// @html is basically `.innerHTML = ...` and that doesn't execute scripts either due to security reasons.\n\t\t// Use a <template>, <svg>, or <math> wrapper depending on context. If value is a TrustedHTML object,\n\t\t// it will be assigned directly to innerHTML without coercion — this allows {@html policy.createHTML(...)} to work.\n\t\tvar ns = svg ? NAMESPACE_SVG : mathml ? NAMESPACE_MATHML : undefined;\n\t\tvar wrapper = /** @type {HTMLTemplateElement | SVGElement | MathMLElement} */ (\n\t\t\tcreate_element(svg ? 'svg' : mathml ? 'math' : 'template', ns)\n\t\t);\n\t\twrapper.innerHTML = /** @type {any} */ (value);\n\n\t\t/** @type {DocumentFragment | Element} */\n\t\tvar node = svg || mathml ? wrapper : /** @type {HTMLTemplateElement} */ (wrapper).content;\n\n\t\tassign_nodes(\n\t\t\t/** @type {TemplateNode} */ (get_first_child(node)),\n\t\t\t/** @type {TemplateNode} */ (node.lastChild)\n\t\t);\n\n\t\tif (svg || mathml) {\n\t\t\twhile (get_first_child(node)) {\n\t\t\t\tanchor.before(/** @type {TemplateNode} */ (get_first_child(node)));\n\t\t\t}\n\t\t} else {\n\t\t\tanchor.before(node);\n\t\t}\n\t});\n}\n", "import { hydrate_next, hydrating } from '../hydration.js';\n\n/**\n * @param {Comment} anchor\n * @param {Record<string, any>} $$props\n * @param {string} name\n * @param {Record<string, unknown>} slot_props\n * @param {null | ((anchor: Comment) => void)} fallback_fn\n */\nexport function slot(anchor, $$props, name, slot_props, fallback_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar slot_fn = $$props.$$slots?.[name];\n\t// Interop: Can use snippets to fill slots\n\tvar is_interop = false;\n\tif (slot_fn === true) {\n\t\tslot_fn = $$props[name === 'default' ? 'children' : name];\n\t\tis_interop = true;\n\t}\n\n\tif (slot_fn === undefined) {\n\t\tif (fallback_fn !== null) {\n\t\t\tfallback_fn(anchor);\n\t\t}\n\t} else {\n\t\tslot_fn(anchor, is_interop ? () => slot_props : slot_props);\n\t}\n}\n\n/**\n * @param {Record<string, any>} props\n * @returns {Record<string, boolean>}\n */\nexport function sanitize_slots(props) {\n\t/** @type {Record<string, boolean>} */\n\tconst sanitized = {};\n\tif (props.children) sanitized.default = true;\n\tfor (const key in props.$$slots) {\n\t\tsanitized[key] = true;\n\t}\n\treturn sanitized;\n}\n", "import { is_void } from '../../utils.js';\nimport * as w from './warnings.js';\nimport * as e from './errors.js';\n\nexport { invalid_default_snippet } from './errors.js';\n\n/**\n * @param {() => string} tag_fn\n * @returns {void}\n */\nexport function validate_void_dynamic_element(tag_fn) {\n\tconst tag = tag_fn();\n\tif (tag && is_void(tag)) {\n\t\tw.dynamic_void_element_content(tag);\n\t}\n}\n\n/** @param {() => unknown} tag_fn */\nexport function validate_dynamic_element_tag(tag_fn) {\n\tconst tag = tag_fn();\n\tconst is_string = typeof tag === 'string';\n\tif (tag && !is_string) {\n\t\te.svelte_element_invalid_this_value();\n\t}\n}\n\n/**\n * @param {any} store\n * @param {string} name\n */\nexport function validate_store(store, name) {\n\tif (store != null && typeof store.subscribe !== 'function') {\n\t\te.store_invalid_shape(name);\n\t}\n}\n\n/**\n * @template {(...args: any[]) => unknown} T\n * @param {T} fn\n */\nexport function prevent_snippet_stringification(fn) {\n\tfn.toString = () => {\n\t\te.snippet_without_render_tag();\n\t\treturn '';\n\t};\n\treturn fn;\n}\n", "/** @import { Snippet } from 'svelte' */\n/** @import { TemplateNode } from '#client' */\n/** @import { Getters } from '#shared' */\nimport { EFFECT_TRANSPARENT, ELEMENT_NODE } from '#client/constants';\nimport { block, teardown } from '../../reactivity/effects.js';\nimport {\n\tdev_current_component_function,\n\tset_dev_current_component_function\n} from '../../context.js';\nimport { hydrate_next, hydrate_node, hydrating } from '../hydration.js';\nimport { create_fragment_from_html } from '../reconciler.js';\nimport { assign_nodes } from '../template.js';\nimport * as w from '../../warnings.js';\nimport * as e from '../../errors.js';\nimport { DEV } from 'esm-env';\nimport { get_first_child, get_next_sibling } from '../operations.js';\nimport { prevent_snippet_stringification } from '../../../shared/validate.js';\nimport { BranchManager } from './branches.js';\n\n/**\n * @template {(node: TemplateNode, ...args: any[]) => void} SnippetFn\n * @param {TemplateNode} node\n * @param {() => SnippetFn | null | undefined} get_snippet\n * @param {(() => any)[]} args\n * @returns {void}\n */\nexport function snippet(node, get_snippet, ...args) {\n\tvar branches = new BranchManager(node);\n\n\tblock(() => {\n\t\tconst snippet = get_snippet() ?? null;\n\n\t\tif (DEV && snippet == null) {\n\t\t\te.invalid_snippet();\n\t\t}\n\n\t\tbranches.ensure(snippet, snippet && ((anchor) => snippet(anchor, ...args)));\n\t}, EFFECT_TRANSPARENT);\n}\n\n/**\n * In development, wrap the snippet function so that it passes validation, and so that the\n * correct component context is set for ownership checks\n * @param {any} component\n * @param {(node: TemplateNode, ...args: any[]) => void} fn\n */\nexport function wrap_snippet(component, fn) {\n\tconst snippet = (/** @type {TemplateNode} */ node, /** @type {any[]} */ ...args) => {\n\t\tvar previous_component_function = dev_current_component_function;\n\t\tset_dev_current_component_function(component);\n\n\t\ttry {\n\t\t\treturn fn(node, ...args);\n\t\t} finally {\n\t\t\tset_dev_current_component_function(previous_component_function);\n\t\t}\n\t};\n\n\tprevent_snippet_stringification(snippet);\n\n\treturn snippet;\n}\n\n/**\n * Create a snippet programmatically\n * @template {unknown[]} Params\n * @param {(...params: Getters<Params>) => {\n * render: () => string\n * setup?: (element: Element) => void | (() => void)\n * }} fn\n * @returns {Snippet<Params>}\n */\nexport function createRawSnippet(fn) {\n\t// @ts-expect-error the types are a lie\n\treturn (/** @type {TemplateNode} */ anchor, /** @type {Getters<Params>} */ ...params) => {\n\t\tvar snippet = fn(...params);\n\n\t\t/** @type {Element} */\n\t\tvar element;\n\n\t\tif (hydrating) {\n\t\t\telement = /** @type {Element} */ (hydrate_node);\n\t\t\thydrate_next();\n\t\t} else {\n\t\t\tvar html = snippet.render().trim();\n\t\t\tvar fragment = create_fragment_from_html(html);\n\t\t\telement = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (DEV && (get_next_sibling(element) !== null || element.nodeType !== ELEMENT_NODE)) {\n\t\t\t\tw.invalid_raw_snippet_render();\n\t\t\t}\n\n\t\t\tanchor.before(element);\n\t\t}\n\n\t\tconst result = snippet.setup?.(element);\n\t\tassign_nodes(element, element);\n\n\t\tif (typeof result === 'function') {\n\t\t\tteardown(result);\n\t\t}\n\t};\n}\n", "/** @import { TemplateNode, Dom } from '#client' */\nimport { EFFECT_TRANSPARENT } from '#client/constants';\nimport { block } from '../../reactivity/effects.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tread_hydration_instruction,\n\tset_hydrate_node,\n\tset_hydrating,\n\tskip_nodes\n} from '../hydration.js';\nimport { BranchManager } from './branches.js';\nimport { HYDRATION_START, HYDRATION_START_ELSE } from '../../../../constants.js';\n\n/**\n * @template P\n * @template {(props: P) => void} C\n * @param {TemplateNode} node\n * @param {() => C} get_component\n * @param {(anchor: TemplateNode, component: C) => Dom | void} render_fn\n * @returns {void}\n */\nexport function component(node, get_component, render_fn) {\n\t/** @type {TemplateNode | undefined} */\n\tvar hydration_start_node;\n\n\tif (hydrating) {\n\t\thydration_start_node = hydrate_node;\n\t\thydrate_next();\n\t}\n\n\tvar branches = new BranchManager(node);\n\n\tblock(() => {\n\t\tvar component = get_component() ?? null;\n\n\t\tif (hydrating) {\n\t\t\tvar data = read_hydration_instruction(/** @type {TemplateNode} */ (hydration_start_node));\n\n\t\t\tvar server_had_component = data === HYDRATION_START;\n\t\t\tvar client_has_component = component !== null;\n\n\t\t\tif (server_had_component !== client_has_component) {\n\t\t\t\t// Hydration mismatch: skip the server-rendered nodes and render fresh\n\t\t\t\tvar anchor = skip_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tbranches.anchor = anchor;\n\n\t\t\t\tset_hydrating(false);\n\t\t\t\tbranches.ensure(component, component && ((target) => render_fn(target, component)));\n\t\t\t\tset_hydrating(true);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tbranches.ensure(component, component && ((target) => render_fn(target, component)));\n\t}, EFFECT_TRANSPARENT);\n}\n", "/** @import { Raf } from '#client' */\nimport { noop } from '../shared/utils.js';\n\nimport { BROWSER } from 'esm-env';\n\nconst now = BROWSER ? () => performance.now() : () => Date.now();\n\n/** @type {Raf} */\nexport const raf = {\n\t// don't access requestAnimationFrame eagerly outside method\n\t// this allows basic testing of user code without JSDOM\n\t// bunder will eval and remove ternary when the user's app is built\n\ttick: /** @param {any} _ */ (_) => (BROWSER ? requestAnimationFrame : noop)(_),\n\tnow: () => now(),\n\ttasks: new Set()\n};\n", "/** @import { TaskCallback, Task, TaskEntry } from '#client' */\nimport { raf } from './timing.js';\n\n// TODO move this into timing.js where it probably belongs\n\n/**\n * @returns {void}\n */\nfunction run_tasks() {\n\t// use `raf.now()` instead of the `requestAnimationFrame` callback argument, because\n\t// otherwise things can get wonky https://github.com/sveltejs/svelte/pull/14541\n\tconst now = raf.now();\n\n\traf.tasks.forEach((task) => {\n\t\tif (!task.c(now)) {\n\t\t\traf.tasks.delete(task);\n\t\t\ttask.f();\n\t\t}\n\t});\n\n\tif (raf.tasks.size !== 0) {\n\t\traf.tick(run_tasks);\n\t}\n}\n\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n * @param {TaskCallback} callback\n * @returns {Task}\n */\nexport function loop(callback) {\n\t/** @type {TaskEntry} */\n\tlet task;\n\n\tif (raf.tasks.size === 0) {\n\t\traf.tick(run_tasks);\n\t}\n\n\treturn {\n\t\tpromise: new Promise((fulfill) => {\n\t\t\traf.tasks.add((task = { c: callback, f: fulfill }));\n\t\t}),\n\t\tabort() {\n\t\t\traf.tasks.delete(task);\n\t\t}\n\t};\n}\n", "/** @import { AnimateFn, Animation, AnimationConfig, EachItem, Effect, EffectNodes, TransitionFn, TransitionManager } from '#client' */\nimport { noop, is_function } from '../../../shared/utils.js';\nimport { effect } from '../../reactivity/effects.js';\nimport { active_effect, untrack } from '../../runtime.js';\nimport { loop } from '../../loop.js';\nimport { should_intro } from '../../render.js';\nimport { TRANSITION_GLOBAL, TRANSITION_IN, TRANSITION_OUT } from '../../../../constants.js';\nimport { BLOCK_EFFECT, REACTION_RAN, EFFECT_TRANSPARENT } from '#client/constants';\nimport { queue_micro_task } from '../task.js';\nimport { without_reactive_context } from './bindings/shared.js';\n\n/**\n * @param {Element} element\n * @param {'introstart' | 'introend' | 'outrostart' | 'outroend'} type\n * @returns {void}\n */\nfunction dispatch_event(element, type) {\n\twithout_reactive_context(() => {\n\t\telement.dispatchEvent(new CustomEvent(type));\n\t});\n}\n\n/**\n * Converts a property to the camel-case format expected by Element.animate(), KeyframeEffect(), and KeyframeEffect.setKeyframes().\n * @param {string} style\n * @returns {string}\n */\nfunction css_property_to_camelcase(style) {\n\t// in compliance with spec\n\tif (style === 'float') return 'cssFloat';\n\tif (style === 'offset') return 'cssOffset';\n\n\t// do not rename custom @properties\n\tif (style.startsWith('--')) return style;\n\n\tconst parts = style.split('-');\n\tif (parts.length === 1) return parts[0];\n\treturn (\n\t\tparts[0] +\n\t\tparts\n\t\t\t.slice(1)\n\t\t\t.map(/** @param {any} word */ (word) => word[0].toUpperCase() + word.slice(1))\n\t\t\t.join('')\n\t);\n}\n\n/**\n * @param {string} css\n * @returns {Keyframe}\n */\nfunction css_to_keyframe(css) {\n\t/** @type {Keyframe} */\n\tconst keyframe = {};\n\tconst parts = css.split(';');\n\tfor (const part of parts) {\n\t\tconst [property, value] = part.split(':');\n\t\tif (!property || value === undefined) break;\n\n\t\tconst formatted_property = css_property_to_camelcase(property.trim());\n\t\tkeyframe[formatted_property] = value.trim();\n\t}\n\treturn keyframe;\n}\n\n/** @param {number} t */\nconst linear = (t) => t;\n\n/** @type {Effect | null} */\nlet animation_effect_override = null;\n\n/** @param {Effect | null} v */\nexport function set_animation_effect_override(v) {\n\tanimation_effect_override = v;\n}\n\n/**\n * Called inside keyed `{#each ...}` blocks (as `$.animation(...)`). This creates an animation manager\n * and attaches it to the block, so that moves can be animated following reconciliation.\n * @template P\n * @param {Element} element\n * @param {() => AnimateFn<P | undefined>} get_fn\n * @param {(() => P) | null} get_params\n */\nexport function animation(element, get_fn, get_params) {\n\tvar effect = animation_effect_override ?? /** @type {Effect} */ (active_effect);\n\tvar nodes = /** @type {EffectNodes} */ (effect.nodes);\n\n\t/** @type {DOMRect} */\n\tvar from;\n\n\t/** @type {DOMRect} */\n\tvar to;\n\n\t/** @type {Animation | undefined} */\n\tvar animation;\n\n\t/** @type {null | { position: string, width: string, height: string, transform: string }} */\n\tvar original_styles = null;\n\n\tnodes.a ??= {\n\t\telement,\n\t\tmeasure() {\n\t\t\tfrom = this.element.getBoundingClientRect();\n\t\t},\n\t\tapply() {\n\t\t\tanimation?.abort();\n\n\t\t\tto = this.element.getBoundingClientRect();\n\n\t\t\tif (\n\t\t\t\tfrom.left !== to.left ||\n\t\t\t\tfrom.right !== to.right ||\n\t\t\t\tfrom.top !== to.top ||\n\t\t\t\tfrom.bottom !== to.bottom\n\t\t\t) {\n\t\t\t\tconst options = get_fn()(this.element, { from, to }, get_params?.());\n\n\t\t\t\tanimation = animate(this.element, options, undefined, 1, () => {\n\t\t\t\t\tanimation?.abort();\n\t\t\t\t\tanimation = undefined;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tfix() {\n\t\t\t// If an animation is already running, transforming the element is likely to fail,\n\t\t\t// because the styles applied by the animation take precedence. In the case of crossfade,\n\t\t\t// that means the `translate(...)` of the crossfade transition overrules the `translate(...)`\n\t\t\t// we would apply below, leading to the element jumping somewhere to the top left.\n\t\t\tif (element.getAnimations().length) return;\n\n\t\t\t// It's important to destructure these to get fixed values - the object itself has getters,\n\t\t\t// and changing the style to 'absolute' can for example influence the width.\n\t\t\tvar { position, width, height } = getComputedStyle(element);\n\n\t\t\tif (position !== 'absolute' && position !== 'fixed') {\n\t\t\t\tvar style = /** @type {HTMLElement | SVGElement} */ (element).style;\n\n\t\t\t\toriginal_styles = {\n\t\t\t\t\tposition: style.position,\n\t\t\t\t\twidth: style.width,\n\t\t\t\t\theight: style.height,\n\t\t\t\t\ttransform: style.transform\n\t\t\t\t};\n\n\t\t\t\tstyle.position = 'absolute';\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.height = height;\n\t\t\t\tvar to = element.getBoundingClientRect();\n\n\t\t\t\tif (from.left !== to.left || from.top !== to.top) {\n\t\t\t\t\tvar transform = `translate(${from.left - to.left}px, ${from.top - to.top}px)`;\n\t\t\t\t\tstyle.transform = style.transform ? `${style.transform} ${transform}` : transform;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tunfix() {\n\t\t\tif (original_styles) {\n\t\t\t\tvar style = /** @type {HTMLElement | SVGElement} */ (element).style;\n\n\t\t\t\tstyle.position = original_styles.position;\n\t\t\t\tstyle.width = original_styles.width;\n\t\t\t\tstyle.height = original_styles.height;\n\t\t\t\tstyle.transform = original_styles.transform;\n\t\t\t}\n\t\t}\n\t};\n\n\t// in the case of a `<svelte:element>`, it's possible for `$.animation(...)` to be called\n\t// when an animation manager already exists, if the tag changes. in that case, we need to\n\t// swap out the element rather than creating a new manager, in case it happened at the same\n\t// moment as a reconciliation\n\tnodes.a.element = element;\n}\n\n/**\n * Called inside block effects as `$.transition(...)`. This creates a transition manager and\n * attaches it to the current effect — later, inside `pause_effect` and `resume_effect`, we\n * use this to create `intro` and `outro` transitions.\n * @template P\n * @param {number} flags\n * @param {HTMLElement} element\n * @param {() => TransitionFn<P | undefined>} get_fn\n * @param {(() => P) | null} get_params\n * @returns {void}\n */\nexport function transition(flags, element, get_fn, get_params) {\n\tvar is_intro = (flags & TRANSITION_IN) !== 0;\n\tvar is_outro = (flags & TRANSITION_OUT) !== 0;\n\tvar is_both = is_intro && is_outro;\n\tvar is_global = (flags & TRANSITION_GLOBAL) !== 0;\n\n\t/** @type {'in' | 'out' | 'both'} */\n\tvar direction = is_both ? 'both' : is_intro ? 'in' : 'out';\n\n\t/** @type {AnimationConfig | ((opts: { direction: 'in' | 'out' }) => AnimationConfig) | undefined} */\n\tvar current_options;\n\n\tvar inert = element.inert;\n\n\t/**\n\t * The default overflow style, stashed so we can revert changes during the transition\n\t * that are necessary to work around a Safari <18 bug\n\t * TODO 6.0 remove this, if older versions of Safari have died out enough\n\t */\n\tvar overflow = element.style.overflow;\n\n\t/** @type {Animation | undefined} */\n\tvar intro;\n\n\t/** @type {Animation | undefined} */\n\tvar outro;\n\n\tfunction get_options() {\n\t\treturn without_reactive_context(() => {\n\t\t\t// If a transition is still ongoing, we use the existing options rather than generating\n\t\t\t// new ones. This ensures that reversible transitions reverse smoothly, rather than\n\t\t\t// jumping to a new spot because (for example) a different `duration` was used\n\t\t\treturn (current_options ??= get_fn()(element, get_params?.() ?? /** @type {P} */ ({}), {\n\t\t\t\tdirection\n\t\t\t}));\n\t\t});\n\t}\n\n\t/** @type {TransitionManager} */\n\tvar transition = {\n\t\tis_global,\n\t\tin() {\n\t\t\telement.inert = inert;\n\n\t\t\tif (!is_intro) {\n\t\t\t\toutro?.abort();\n\t\t\t\toutro?.reset?.();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!is_outro) {\n\t\t\t\t// if we intro then outro then intro again, we want to abort the first intro,\n\t\t\t\t// if it's not a bidirectional transition\n\t\t\t\tintro?.abort();\n\t\t\t}\n\n\t\t\tintro = animate(element, get_options(), outro, 1, () => {\n\t\t\t\tdispatch_event(element, 'introend');\n\n\t\t\t\t// Ensure we cancel the animation to prevent leaking\n\t\t\t\tintro?.abort();\n\t\t\t\tintro = current_options = undefined;\n\n\t\t\t\telement.style.overflow = overflow;\n\t\t\t});\n\t\t},\n\t\tout(fn) {\n\t\t\tif (!is_outro) {\n\t\t\t\tfn?.();\n\t\t\t\tcurrent_options = undefined;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement.inert = true;\n\n\t\t\toutro = animate(element, get_options(), intro, 0, () => {\n\t\t\t\tdispatch_event(element, 'outroend');\n\t\t\t\tfn?.();\n\t\t\t});\n\t\t},\n\t\tstop: () => {\n\t\t\tintro?.abort();\n\t\t\toutro?.abort();\n\t\t}\n\t};\n\n\tvar e = /** @type {Effect & { nodes: EffectNodes }} */ (active_effect);\n\n\t(e.nodes.t ??= []).push(transition);\n\n\t// if this is a local transition, we only want to run it if the parent (branch) effect's\n\t// parent (block) effect is where the state change happened. we can determine that by\n\t// looking at whether the block effect is currently initializing\n\tif (is_intro && should_intro) {\n\t\tvar run = is_global;\n\n\t\tif (!run) {\n\t\t\tvar block = /** @type {Effect | null} */ (e.parent);\n\n\t\t\t// skip over transparent blocks (e.g. snippets, else-if blocks)\n\t\t\twhile (block && (block.f & EFFECT_TRANSPARENT) !== 0) {\n\t\t\t\twhile ((block = block.parent)) {\n\t\t\t\t\tif ((block.f & BLOCK_EFFECT) !== 0) break;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trun = !block || (block.f & REACTION_RAN) !== 0;\n\t\t}\n\n\t\tif (run) {\n\t\t\teffect(() => {\n\t\t\t\tuntrack(() => transition.in());\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * Animates an element, according to the provided configuration\n * @param {Element} element\n * @param {AnimationConfig | ((opts: { direction: 'in' | 'out' }) => AnimationConfig)} options\n * @param {Animation | undefined} counterpart The corresponding intro/outro to this outro/intro\n * @param {number} t2 The target `t` value — `1` for intro, `0` for outro\n * @param {(() => void)} on_finish Called after successfully completing the animation\n * @returns {Animation}\n */\nfunction animate(element, options, counterpart, t2, on_finish) {\n\tvar is_intro = t2 === 1;\n\n\tif (is_function(options)) {\n\t\t// In the case of a deferred transition (such as `crossfade`), `option` will be\n\t\t// a function rather than an `AnimationConfig`. We need to call this function\n\t\t// once the DOM has been updated...\n\t\t/** @type {Animation} */\n\t\tvar a;\n\t\tvar aborted = false;\n\n\t\tqueue_micro_task(() => {\n\t\t\tif (aborted) return;\n\t\t\tvar o = options({ direction: is_intro ? 'in' : 'out' });\n\t\t\ta = animate(element, o, counterpart, t2, on_finish);\n\t\t});\n\n\t\t// ...but we want to do so without using `async`/`await` everywhere, so\n\t\t// we return a facade that allows everything to remain synchronous\n\t\treturn {\n\t\t\tabort: () => {\n\t\t\t\taborted = true;\n\t\t\t\ta?.abort();\n\t\t\t},\n\t\t\tdeactivate: () => a.deactivate(),\n\t\t\treset: () => a.reset(),\n\t\t\tt: () => a.t()\n\t\t};\n\t}\n\n\tcounterpart?.deactivate();\n\n\tif (!options?.duration && !options?.delay) {\n\t\tdispatch_event(element, is_intro ? 'introstart' : 'outrostart');\n\t\ton_finish();\n\n\t\treturn {\n\t\t\tabort: noop,\n\t\t\tdeactivate: noop,\n\t\t\treset: noop,\n\t\t\tt: () => t2\n\t\t};\n\t}\n\n\tconst { delay = 0, css, tick, easing = linear } = options;\n\n\tvar keyframes = [];\n\n\tif (is_intro && counterpart === undefined) {\n\t\tif (tick) {\n\t\t\ttick(0, 1); // TODO put in nested effect, to avoid interleaved reads/writes?\n\t\t}\n\n\t\tif (css) {\n\t\t\tvar styles = css_to_keyframe(css(0, 1));\n\t\t\tkeyframes.push(styles, styles);\n\t\t}\n\t}\n\n\tvar get_t = () => 1 - t2;\n\n\t// create a dummy animation that lasts as long as the delay (but with whatever devtools\n\t// multiplier is in effect). in the common case that it is `0`, we keep it anyway so that\n\t// the CSS keyframes aren't created until the DOM is updated\n\t//\n\t// fill forwards to prevent the element from rendering without styles applied\n\t// see https://github.com/sveltejs/svelte/issues/14732\n\tvar animation = element.animate(keyframes, { duration: delay, fill: 'forwards' });\n\n\tanimation.onfinish = () => {\n\t\t// remove dummy animation from the stack to prevent conflict with main animation\n\t\tanimation.cancel();\n\n\t\tdispatch_event(element, is_intro ? 'introstart' : 'outrostart');\n\n\t\t// for bidirectional transitions, we start from the current position,\n\t\t// rather than doing a full intro/outro\n\t\tvar t1 = counterpart?.t() ?? 1 - t2;\n\t\tcounterpart?.abort();\n\n\t\tvar delta = t2 - t1;\n\t\tvar duration = /** @type {number} */ (options.duration) * Math.abs(delta);\n\t\tvar keyframes = [];\n\n\t\tif (duration > 0) {\n\t\t\t/**\n\t\t\t * Whether or not the CSS includes `overflow: hidden`, in which case we need to\n\t\t\t * add it as an inline style to work around a Safari <18 bug\n\t\t\t * TODO 6.0 remove this, if possible\n\t\t\t */\n\t\t\tvar needs_overflow_hidden = false;\n\n\t\t\tif (css) {\n\t\t\t\tvar n = Math.ceil(duration / (1000 / 60)); // `n` must be an integer, or we risk missing the `t2` value\n\n\t\t\t\tfor (var i = 0; i <= n; i += 1) {\n\t\t\t\t\tvar t = t1 + delta * easing(i / n);\n\t\t\t\t\tvar styles = css_to_keyframe(css(t, 1 - t));\n\t\t\t\t\tkeyframes.push(styles);\n\n\t\t\t\t\tneeds_overflow_hidden ||= styles.overflow === 'hidden';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (needs_overflow_hidden) {\n\t\t\t\t/** @type {HTMLElement} */ (element).style.overflow = 'hidden';\n\t\t\t}\n\n\t\t\tget_t = () => {\n\t\t\t\tvar time = /** @type {number} */ (\n\t\t\t\t\t/** @type {globalThis.Animation} */ (animation).currentTime\n\t\t\t\t);\n\n\t\t\t\treturn t1 + delta * easing(time / duration);\n\t\t\t};\n\n\t\t\tif (tick) {\n\t\t\t\tloop(() => {\n\t\t\t\t\tif (animation.playState !== 'running') return false;\n\n\t\t\t\t\tvar t = get_t();\n\t\t\t\t\ttick(t, 1 - t);\n\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tanimation = element.animate(keyframes, { duration, fill: 'forwards' });\n\n\t\tanimation.onfinish = () => {\n\t\t\tget_t = () => t2;\n\t\t\ttick?.(t2, 1 - t2);\n\t\t\ton_finish();\n\t\t};\n\t};\n\n\treturn {\n\t\tabort: () => {\n\t\t\tif (animation) {\n\t\t\t\tanimation.cancel();\n\t\t\t\t// This prevents memory leaks in Chromium\n\t\t\t\tanimation.effect = null;\n\t\t\t\t// This prevents onfinish to be launched after cancel(),\n\t\t\t\t// which can happen in some rare cases\n\t\t\t\t// see https://github.com/sveltejs/svelte/issues/13681\n\t\t\t\tanimation.onfinish = noop;\n\t\t\t}\n\t\t},\n\t\tdeactivate: () => {\n\t\t\ton_finish = noop;\n\t\t},\n\t\treset: () => {\n\t\t\tif (t2 === 0) {\n\t\t\t\ttick?.(1, 0);\n\t\t\t}\n\t\t},\n\t\tt: () => get_t()\n\t};\n}\n", "/** @import { Effect, EffectNodes, TemplateNode } from '#client' */\nimport { FILENAME, NAMESPACE_SVG } from '../../../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport { create_element, create_text, get_first_child } from '../operations.js';\nimport { block, teardown } from '../../reactivity/effects.js';\nimport { set_should_intro } from '../../render.js';\nimport { active_effect } from '../../runtime.js';\nimport { component_context, dev_stack } from '../../context.js';\nimport { DEV } from 'esm-env';\nimport { EFFECT_TRANSPARENT, ELEMENT_NODE } from '#client/constants';\nimport { assign_nodes } from '../template.js';\nimport { is_raw_text_element } from '../../../../utils.js';\nimport { BranchManager } from './branches.js';\nimport { set_animation_effect_override } from '../elements/transitions.js';\n\n/**\n * @param {Comment | Element} node\n * @param {() => string} get_tag\n * @param {boolean} is_svg\n * @param {undefined | ((element: Element, anchor: Node | null) => void)} render_fn,\n * @param {undefined | (() => string)} get_namespace\n * @param {undefined | [number, number]} location\n * @returns {void}\n */\nexport function element(node, get_tag, is_svg, render_fn, get_namespace, location) {\n\tlet was_hydrating = hydrating;\n\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar filename = DEV && location && component_context?.function[FILENAME];\n\n\t/** @type {null | Element} */\n\tvar element = null;\n\n\tif (hydrating && hydrate_node.nodeType === ELEMENT_NODE) {\n\t\telement = /** @type {Element} */ (hydrate_node);\n\t\thydrate_next();\n\t}\n\n\tvar anchor = /** @type {TemplateNode} */ (hydrating ? hydrate_node : node);\n\n\t/**\n\t * We track this so we can set it when changing the element, allowing any\n\t * `animate:` directive to bind itself to the correct block\n\t */\n\tvar parent_effect = /** @type {Effect} */ (active_effect);\n\n\tvar branches = new BranchManager(anchor, false);\n\n\tblock(() => {\n\t\tconst next_tag = get_tag() || null;\n\t\tvar ns = get_namespace\n\t\t\t? get_namespace()\n\t\t\t: is_svg || next_tag === 'svg'\n\t\t\t\t? NAMESPACE_SVG\n\t\t\t\t: undefined;\n\n\t\tif (next_tag === null) {\n\t\t\tbranches.ensure(null, null);\n\t\t\tset_should_intro(true);\n\t\t\treturn;\n\t\t}\n\n\t\tbranches.ensure(next_tag, (anchor) => {\n\t\t\tif (next_tag) {\n\t\t\t\telement = hydrating ? /** @type {Element} */ (element) : create_element(next_tag, ns);\n\n\t\t\t\tif (DEV && location) {\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\telement.__svelte_meta = {\n\t\t\t\t\t\tparent: dev_stack,\n\t\t\t\t\t\tloc: {\n\t\t\t\t\t\t\tfile: filename,\n\t\t\t\t\t\t\tline: location[0],\n\t\t\t\t\t\t\tcolumn: location[1]\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tassign_nodes(element, element);\n\n\t\t\t\tif (render_fn) {\n\t\t\t\t\tif (hydrating && is_raw_text_element(next_tag)) {\n\t\t\t\t\t\t// prevent hydration glitches\n\t\t\t\t\t\telement.append(document.createComment(''));\n\t\t\t\t\t}\n\n\t\t\t\t\t// If hydrating, use the existing ssr comment as the anchor so that the\n\t\t\t\t\t// inner open and close methods can pick up the existing nodes correctly\n\t\t\t\t\tvar child_anchor = hydrating\n\t\t\t\t\t\t? get_first_child(element)\n\t\t\t\t\t\t: element.appendChild(create_text());\n\n\t\t\t\t\tif (hydrating) {\n\t\t\t\t\t\tif (child_anchor === null) {\n\t\t\t\t\t\t\tset_hydrating(false);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tset_hydrate_node(child_anchor);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tset_animation_effect_override(parent_effect);\n\n\t\t\t\t\t// `child_anchor` is undefined if this is a void element, but we still\n\t\t\t\t\t// need to call `render_fn` in order to run actions etc. If the element\n\t\t\t\t\t// contains children, it's a user error (which is warned on elsewhere)\n\t\t\t\t\t// and the DOM will be silently discarded\n\t\t\t\t\trender_fn(element, child_anchor);\n\n\t\t\t\t\tset_animation_effect_override(null);\n\t\t\t\t}\n\n\t\t\t\t// we do this after calling `render_fn` so that child effects don't override `nodes.end`\n\t\t\t\t/** @type {Effect & { nodes: EffectNodes }} */ (active_effect).nodes.end = element;\n\n\t\t\t\tanchor.before(element);\n\t\t\t}\n\n\t\t\tif (hydrating) {\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t}\n\t\t});\n\n\t\t// revert to the default state after the effect has been created\n\t\tset_should_intro(true);\n\n\t\treturn () => {\n\t\t\tif (next_tag) {\n\t\t\t\t// if we're in this callback because we're re-running the effect,\n\t\t\t\t// disable intros (unless no element is currently displayed)\n\t\t\t\tset_should_intro(false);\n\t\t\t}\n\t\t};\n\t}, EFFECT_TRANSPARENT);\n\n\tteardown(() => {\n\t\tset_should_intro(true);\n\t});\n\n\tif (was_hydrating) {\n\t\tset_hydrating(true);\n\t\tset_hydrate_node(anchor);\n\t}\n}\n", "/** @import { TemplateNode } from '#client' */\nimport { hydrate_node, hydrating, set_hydrate_node, set_hydrating } from '../hydration.js';\nimport { create_text, get_first_child, get_next_sibling } from '../operations.js';\nimport { block } from '../../reactivity/effects.js';\nimport { COMMENT_NODE, EFFECT_PRESERVED, HEAD_EFFECT } from '#client/constants';\n\n/**\n * @param {string} hash\n * @param {(anchor: Node) => void} render_fn\n * @returns {void}\n */\nexport function head(hash, render_fn) {\n\t// The head function may be called after the first hydration pass and ssr comment nodes may still be present,\n\t// therefore we need to skip that when we detect that we're not in hydration mode.\n\tlet previous_hydrate_node = null;\n\tlet was_hydrating = hydrating;\n\n\t/** @type {Comment | Text} */\n\tvar anchor;\n\n\tif (hydrating) {\n\t\tprevious_hydrate_node = hydrate_node;\n\n\t\tvar head_anchor = get_first_child(document.head);\n\n\t\t// There might be multiple head blocks in our app, and they could have been\n\t\t// rendered in an arbitrary order — find one corresponding to this component\n\t\twhile (\n\t\t\thead_anchor !== null &&\n\t\t\t(head_anchor.nodeType !== COMMENT_NODE || /** @type {Comment} */ (head_anchor).data !== hash)\n\t\t) {\n\t\t\thead_anchor = get_next_sibling(head_anchor);\n\t\t}\n\n\t\t// If we can't find an opening hydration marker, skip hydration (this can happen\n\t\t// if a framework rendered body but not head content)\n\t\tif (head_anchor === null) {\n\t\t\tset_hydrating(false);\n\t\t} else {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_next_sibling(head_anchor));\n\t\t\thead_anchor.remove(); // in case this component is repeated\n\n\t\t\tset_hydrate_node(start);\n\t\t}\n\t}\n\n\tif (!hydrating) {\n\t\tanchor = document.head.appendChild(create_text());\n\t}\n\n\ttry {\n\t\t// normally a branch is the child of a block and would have the EFFECT_PRESERVED flag,\n\t\t// but since head blocks don't necessarily only have direct branch children we add it on the block itself\n\t\tblock(() => render_fn(anchor), HEAD_EFFECT | EFFECT_PRESERVED);\n\t} finally {\n\t\tif (was_hydrating) {\n\t\t\tset_hydrating(true);\n\t\t\tset_hydrate_node(/** @type {TemplateNode} */ (previous_hydrate_node));\n\t\t}\n\t}\n}\n", "import { DEV } from 'esm-env';\nimport { register_style } from '../dev/css.js';\nimport { effect } from '../reactivity/effects.js';\nimport { create_element } from './operations.js';\n\n/**\n * @param {Node} anchor\n * @param {{ hash: string, code: string }} css\n */\nexport function append_styles(anchor, css) {\n\t// Use `queue_micro_task` to ensure `anchor` is in the DOM, otherwise getRootNode() will yield wrong results\n\teffect(() => {\n\t\tvar root = anchor.getRootNode();\n\n\t\tvar target = /** @type {ShadowRoot} */ (root).host\n\t\t\t? /** @type {ShadowRoot} */ (root)\n\t\t\t: /** @type {Document} */ (root).head ?? /** @type {Document} */ (root.ownerDocument).head;\n\n\t\t// Always querying the DOM is roughly the same perf as additionally checking for presence in a map first assuming\n\t\t// that you'll get cache hits half of the time, so we just always query the dom for simplicity and code savings.\n\t\tif (!target.querySelector('#' + css.hash)) {\n\t\t\tconst style = create_element('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 { ActionPayload } from '#client' */\nimport { effect, render_effect } from '../../reactivity/effects.js';\nimport { safe_not_equal } from '../../reactivity/equality.js';\nimport { deep_read_state, untrack } from '../../runtime.js';\n\n/**\n * @template P\n * @param {Element} dom\n * @param {(dom: Element, value?: P) => ActionPayload<P>} action\n * @param {() => P} [get_value]\n * @returns {void}\n */\nexport function action(dom, action, get_value) {\n\teffect(() => {\n\t\tvar payload = untrack(() => action(dom, get_value?.()) || {});\n\n\t\tif (get_value && payload?.update) {\n\t\t\tvar inited = false;\n\t\t\t/** @type {P} */\n\t\t\tvar prev = /** @type {any} */ ({}); // initialize with something so it's never equal on first run\n\n\t\t\trender_effect(() => {\n\t\t\t\tvar value = get_value();\n\n\t\t\t\t// Action's update method is coarse-grained, i.e. when anything in the passed value changes, update.\n\t\t\t\t// This works in legacy mode because of mutable_source being updated as a whole, but when using $state\n\t\t\t\t// together with actions and mutation, it wouldn't notice the change without a deep read.\n\t\t\t\tdeep_read_state(value);\n\n\t\t\t\tif (inited && safe_not_equal(prev, value)) {\n\t\t\t\t\tprev = value;\n\t\t\t\t\t/** @type {Function} */ (payload.update)(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinited = true;\n\t\t}\n\n\t\tif (payload?.destroy) {\n\t\t\treturn () => /** @type {Function} */ (payload.destroy)();\n\t\t}\n\t});\n}\n", "/** @import { Effect } from '#client' */\nimport { branch, effect, destroy_effect, managed } from '../../reactivity/effects.js';\n\n// TODO in 6.0 or 7.0, when we remove legacy mode, we can simplify this by\n// getting rid of the block/branch stuff and just letting the effect rip.\n// see https://github.com/sveltejs/svelte/pull/15962\n\n/**\n * @param {Element} node\n * @param {() => (node: Element) => void} get_fn\n */\nexport function attach(node, get_fn) {\n\t/** @type {false | undefined | ((node: Element) => void)} */\n\tvar fn = undefined;\n\n\t/** @type {Effect | null} */\n\tvar e;\n\n\tmanaged(() => {\n\t\tif (fn !== (fn = get_fn())) {\n\t\t\tif (e) {\n\t\t\t\tdestroy_effect(e);\n\t\t\t\te = null;\n\t\t\t}\n\n\t\t\tif (fn) {\n\t\t\t\te = branch(() => {\n\t\t\t\t\teffect(() => /** @type {(node: Element) => void} */ (fn)(node));\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n", "const ATTR_REGEX = /[&\"<]/g;\nconst CONTENT_REGEX = /[&<]/g;\n\n/**\n * @template V\n * @param {V} value\n * @param {boolean} [is_attr]\n */\nexport function escape_html(value, is_attr) {\n\tconst str = String(value ?? '');\n\n\tconst pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;\n\tpattern.lastIndex = 0;\n\n\tlet escaped = '';\n\tlet last = 0;\n\n\twhile (pattern.test(str)) {\n\t\tconst i = pattern.lastIndex - 1;\n\t\tconst ch = str[i];\n\t\tescaped += str.substring(last, i) + (ch === '&' ? '&' : ch === '\"' ? '"' : '<');\n\t\tlast = i + 1;\n\t}\n\n\treturn escaped + str.substring(last);\n}\n", "import { escape_html } from '../../escaping.js';\nimport { clsx as _clsx } from 'clsx';\nimport { has_own_property } from './utils.js';\n\n/**\n * `<div translate={false}>` should be rendered as `<div translate=\"no\">` and _not_\n * `<div translate=\"false\">`, which is equivalent to `<div translate=\"yes\">`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record<string, Map<any, string>>}\n */\nconst replacements = {\n\ttranslate: new Map([\n\t\t[true, 'yes'],\n\t\t[false, 'no']\n\t])\n};\n\n/**\n * @template V\n * @param {string} name\n * @param {V} value\n * @param {boolean} [is_boolean]\n * @returns {string}\n */\nexport function attr(name, value, is_boolean = false) {\n\t// attribute hidden for values other than \"until-found\" behaves like a boolean attribute\n\tif (name === 'hidden' && value !== 'until-found') {\n\t\tis_boolean = true;\n\t}\n\tif (value == null || (!value && is_boolean)) return '';\n\tconst normalized =\n\t\t(has_own_property.call(replacements, name) && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? `=\"\"` : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n\nconst whitespace = [...' \\t\\n\\r\\f\\u00a0\\u000b\\ufeff'];\n\n/**\n * @param {any} value\n * @param {string | null} [hash]\n * @param {Record<string, boolean>} [directives]\n * @returns {string | null}\n */\nexport function to_class(value, hash, directives) {\n\tvar classname = value == null ? '' : '' + value;\n\n\tif (hash) {\n\t\tclassname = classname ? classname + ' ' + hash : hash;\n\t}\n\n\tif (directives) {\n\t\tfor (var key of Object.keys(directives)) {\n\t\t\tif (directives[key]) {\n\t\t\t\tclassname = classname ? classname + ' ' + key : key;\n\t\t\t} else if (classname.length) {\n\t\t\t\tvar len = key.length;\n\t\t\t\tvar a = 0;\n\n\t\t\t\twhile ((a = classname.indexOf(key, a)) >= 0) {\n\t\t\t\t\tvar b = a + len;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(a === 0 || whitespace.includes(classname[a - 1])) &&\n\t\t\t\t\t\t(b === classname.length || whitespace.includes(classname[b]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassname = (a === 0 ? '' : classname.substring(0, a)) + classname.substring(b + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn classname === '' ? null : classname;\n}\n\n/**\n *\n * @param {Record<string,any>} styles\n * @param {boolean} important\n */\nfunction append_styles(styles, important = false) {\n\tvar separator = important ? ' !important;' : ';';\n\tvar css = '';\n\n\tfor (var key of Object.keys(styles)) {\n\t\tvar value = styles[key];\n\t\tif (value != null && value !== '') {\n\t\t\tcss += ' ' + key + ': ' + value + separator;\n\t\t}\n\t}\n\n\treturn css;\n}\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction to_css_name(name) {\n\tif (name[0] !== '-' || name[1] !== '-') {\n\t\treturn name.toLowerCase();\n\t}\n\treturn name;\n}\n\n/**\n * @param {any} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [styles]\n * @returns {string | null}\n */\nexport function to_style(value, styles) {\n\tif (styles) {\n\t\tvar new_style = '';\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar normal_styles;\n\n\t\t/** @type {Record<string,any> | undefined} */\n\t\tvar important_styles;\n\n\t\tif (Array.isArray(styles)) {\n\t\t\tnormal_styles = styles[0];\n\t\t\timportant_styles = styles[1];\n\t\t} else {\n\t\t\tnormal_styles = styles;\n\t\t}\n\n\t\tif (value) {\n\t\t\tvalue = String(value)\n\t\t\t\t.replaceAll(/\\s*\\/\\*.*?\\*\\/\\s*/g, '')\n\t\t\t\t.trim();\n\n\t\t\t/** @type {boolean | '\"' | \"'\"} */\n\t\t\tvar in_str = false;\n\t\t\tvar in_apo = 0;\n\t\t\tvar in_comment = false;\n\n\t\t\tvar reserved_names = [];\n\n\t\t\tif (normal_styles) {\n\t\t\t\treserved_names.push(...Object.keys(normal_styles).map(to_css_name));\n\t\t\t}\n\t\t\tif (important_styles) {\n\t\t\t\treserved_names.push(...Object.keys(important_styles).map(to_css_name));\n\t\t\t}\n\n\t\t\tvar start_index = 0;\n\t\t\tvar name_index = -1;\n\n\t\t\tconst len = value.length;\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar c = value[i];\n\n\t\t\t\tif (in_comment) {\n\t\t\t\t\tif (c === '/' && value[i - 1] === '*') {\n\t\t\t\t\t\tin_comment = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (in_str) {\n\t\t\t\t\tif (in_str === c) {\n\t\t\t\t\t\tin_str = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (c === '/' && value[i + 1] === '*') {\n\t\t\t\t\tin_comment = true;\n\t\t\t\t} else if (c === '\"' || c === \"'\") {\n\t\t\t\t\tin_str = c;\n\t\t\t\t} else if (c === '(') {\n\t\t\t\t\tin_apo++;\n\t\t\t\t} else if (c === ')') {\n\t\t\t\t\tin_apo--;\n\t\t\t\t}\n\n\t\t\t\tif (!in_comment && in_str === false && in_apo === 0) {\n\t\t\t\t\tif (c === ':' && name_index === -1) {\n\t\t\t\t\t\tname_index = i;\n\t\t\t\t\t} else if (c === ';' || i === len - 1) {\n\t\t\t\t\t\tif (name_index !== -1) {\n\t\t\t\t\t\t\tvar name = to_css_name(value.substring(start_index, name_index).trim());\n\n\t\t\t\t\t\t\tif (!reserved_names.includes(name)) {\n\t\t\t\t\t\t\t\tif (c !== ';') {\n\t\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar property = value.substring(start_index, i).trim();\n\t\t\t\t\t\t\t\tnew_style += ' ' + property + ';';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart_index = i + 1;\n\t\t\t\t\t\tname_index = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (normal_styles) {\n\t\t\tnew_style += append_styles(normal_styles);\n\t\t}\n\n\t\tif (important_styles) {\n\t\t\tnew_style += append_styles(important_styles, true);\n\t\t}\n\n\t\tnew_style = new_style.trim();\n\t\treturn new_style === '' ? null : new_style;\n\t}\n\n\treturn value == null ? null : String(value);\n}\n", "import { to_class } from '../../../shared/attributes.js';\nimport { hydrating } from '../hydration.js';\n\n/**\n * @param {Element} dom\n * @param {boolean | number} is_html\n * @param {string | null} value\n * @param {string} [hash]\n * @param {Record<string, any>} [prev_classes]\n * @param {Record<string, any>} [next_classes]\n * @returns {Record<string, boolean> | undefined}\n */\nexport function set_class(dom, is_html, value, hash, prev_classes, next_classes) {\n\t// @ts-expect-error need to add __className to patched prototype\n\tvar prev = dom.__className;\n\n\tif (\n\t\thydrating ||\n\t\tprev !== value ||\n\t\tprev === undefined // for edge case of `class={undefined}`\n\t) {\n\t\tvar next_class_name = to_class(value, hash, next_classes);\n\n\t\tif (!hydrating || next_class_name !== dom.getAttribute('class')) {\n\t\t\t// Removing the attribute when the value is only an empty string causes\n\t\t\t// performance issues vs simply making the className an empty string. So\n\t\t\t// we should only remove the class if the value is nullish\n\t\t\t// and there no hash/directives :\n\t\t\tif (next_class_name == null) {\n\t\t\t\tdom.removeAttribute('class');\n\t\t\t} else if (is_html) {\n\t\t\t\tdom.className = next_class_name;\n\t\t\t} else {\n\t\t\t\tdom.setAttribute('class', next_class_name);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = value;\n\t} else if (next_classes && prev_classes !== next_classes) {\n\t\tfor (var key in next_classes) {\n\t\t\tvar is_present = !!next_classes[key];\n\n\t\t\tif (prev_classes == null || is_present !== !!prev_classes[key]) {\n\t\t\t\tdom.classList.toggle(key, is_present);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn next_classes;\n}\n", "import { to_style } from '../../../shared/attributes.js';\nimport { hydrating } from '../hydration.js';\n\n/**\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {Record<string, any>} prev\n * @param {Record<string, any>} next\n * @param {string} [priority]\n */\nfunction update_styles(dom, prev = {}, next, priority) {\n\tfor (var key in next) {\n\t\tvar value = next[key];\n\n\t\tif (prev[key] !== value) {\n\t\t\tif (next[key] == null) {\n\t\t\t\tdom.style.removeProperty(key);\n\t\t\t} else {\n\t\t\t\tdom.style.setProperty(key, value, priority);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} dom\n * @param {string | null} value\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [prev_styles]\n * @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [next_styles]\n */\nexport function set_style(dom, value, prev_styles, next_styles) {\n\t// @ts-expect-error\n\tvar prev = dom.__style;\n\n\tif (hydrating || prev !== value) {\n\t\tvar next_style_attr = to_style(value, next_styles);\n\n\t\tif (!hydrating || next_style_attr !== dom.getAttribute('style')) {\n\t\t\tif (next_style_attr == null) {\n\t\t\t\tdom.removeAttribute('style');\n\t\t\t} else {\n\t\t\t\tdom.style.cssText = next_style_attr;\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error\n\t\tdom.__style = value;\n\t} else if (next_styles) {\n\t\tif (Array.isArray(next_styles)) {\n\t\t\tupdate_styles(dom, prev_styles?.[0], next_styles[0]);\n\t\t\tupdate_styles(dom, prev_styles?.[1], next_styles[1], 'important');\n\t\t} else {\n\t\t\tupdate_styles(dom, prev_styles, next_styles);\n\t\t}\n\t}\n\n\treturn next_styles;\n}\n", "import { effect, teardown } from '../../../reactivity/effects.js';\nimport { listen_to_event_and_reset_event } from './shared.js';\nimport { is } from '../../../proxy.js';\nimport { is_array } from '../../../../shared/utils.js';\nimport * as w from '../../../warnings.js';\nimport { Batch, current_batch, previous_batch } from '../../../reactivity/batch.js';\nimport { async_mode_flag } from '../../../../flags/index.js';\n\n/**\n * Selects the correct option(s) (depending on whether this is a multiple select)\n * @template V\n * @param {HTMLSelectElement} select\n * @param {V} value\n * @param {boolean} mounting\n */\nexport function select_option(select, value, mounting = false) {\n\tif (select.multiple) {\n\t\t// If value is null or undefined, keep the selection as is\n\t\tif (value == undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If not an array, warn and keep the selection as is\n\t\tif (!is_array(value)) {\n\t\t\treturn w.select_multiple_invalid_value();\n\t\t}\n\n\t\t// Otherwise, update the selection\n\t\tfor (var option of select.options) {\n\t\t\toption.selected = value.includes(get_option_value(option));\n\t\t}\n\n\t\treturn;\n\t}\n\n\tfor (option of select.options) {\n\t\tvar option_value = get_option_value(option);\n\t\tif (is(option_value, value)) {\n\t\t\toption.selected = true;\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (!mounting || value !== undefined) {\n\t\tselect.selectedIndex = -1; // no option should be selected\n\t}\n}\n\n/**\n * Selects the correct option(s) if `value` is given,\n * and then sets up a mutation observer to sync the\n * current selection to the dom when it changes. Such\n * changes could for example occur when options are\n * inside an `#each` block.\n * @param {HTMLSelectElement} select\n */\nexport function init_select(select) {\n\tvar observer = new MutationObserver(() => {\n\t\t// @ts-ignore\n\t\tselect_option(select, select.__value);\n\t\t// Deliberately don't update the potential binding value,\n\t\t// the model should be preserved unless explicitly changed\n\t});\n\n\tobserver.observe(select, {\n\t\t// Listen to option element changes\n\t\tchildList: true,\n\t\tsubtree: true, // because of <optgroup>\n\t\t// Listen to option element value attribute changes\n\t\t// (doesn't get notified of select value changes,\n\t\t// because that property is not reflected as an attribute)\n\t\tattributes: true,\n\t\tattributeFilter: ['value']\n\t});\n\n\tteardown(() => {\n\t\tobserver.disconnect();\n\t});\n}\n\n/**\n * @param {HTMLSelectElement} select\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_select_value(select, get, set = get) {\n\tvar batches = new WeakSet();\n\tvar mounting = true;\n\n\tlisten_to_event_and_reset_event(select, 'change', (is_reset) => {\n\t\tvar query = is_reset ? '[selected]' : ':checked';\n\t\t/** @type {unknown} */\n\t\tvar value;\n\n\t\tif (select.multiple) {\n\t\t\tvalue = [].map.call(select.querySelectorAll(query), get_option_value);\n\t\t} else {\n\t\t\t/** @type {HTMLOptionElement | null} */\n\t\t\tvar selected_option =\n\t\t\t\tselect.querySelector(query) ??\n\t\t\t\t// will fall back to first non-disabled option if no option is selected\n\t\t\t\tselect.querySelector('option:not([disabled])');\n\t\t\tvalue = selected_option && get_option_value(selected_option);\n\t\t}\n\n\t\tset(value);\n\n\t\t// @ts-ignore\n\t\tselect.__value = value;\n\n\t\tif (current_batch !== null) {\n\t\t\tbatches.add(current_batch);\n\t\t}\n\t});\n\n\t// Needs to be an effect, not a render_effect, so that in case of each loops the logic runs after the each block has updated\n\teffect(() => {\n\t\tvar value = get();\n\n\t\tif (select === document.activeElement) {\n\t\t\t// In sync mode render effects are executed during tree traversal -> needs current_batch\n\t\t\t// In async mode render effects are flushed once batch resolved, at which point current_batch is null -> needs previous_batch\n\t\t\tvar batch = /** @type {Batch} */ (async_mode_flag ? previous_batch : current_batch);\n\n\t\t\t// Don't update the <select> if it is focused. We can get here if, for example,\n\t\t\t// an update is deferred because of async work depending on the select:\n\t\t\t//\n\t\t\t// <select bind:value={selected}>...</select>\n\t\t\t// <p>{await find(selected)}</p>\n\t\t\tif (batches.has(batch)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tselect_option(select, value, mounting);\n\n\t\t// Mounting and value undefined -> take selection from dom\n\t\tif (mounting && value === undefined) {\n\t\t\t/** @type {HTMLOptionElement | null} */\n\t\t\tvar selected_option = select.querySelector(':checked');\n\t\t\tif (selected_option !== null) {\n\t\t\t\tvalue = get_option_value(selected_option);\n\t\t\t\tset(value);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-ignore\n\t\tselect.__value = value;\n\t\tmounting = false;\n\t});\n\n\tinit_select(select);\n}\n\n/** @param {HTMLOptionElement} option */\nfunction get_option_value(option) {\n\t// __value only exists if the <option> has a value attribute\n\tif ('__value' in option) {\n\t\treturn option.__value;\n\t} else {\n\t\treturn option.value;\n\t}\n}\n", "/** @import { Blocker, Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { hydrating, set_hydrating } from '../hydration.js';\nimport { get_descriptors, get_prototype_of } from '../../../shared/utils.js';\nimport { create_event, delegate, delegated, event, event_symbol } from './events.js';\nimport { add_form_reset_listener, autofocus } from './misc.js';\nimport * as w from '../../warnings.js';\nimport { IS_XHTML, LOADING_ATTR_SYMBOL } from '#client/constants';\nimport { queue_micro_task } from '../task.js';\nimport { is_capture_event, can_delegate_event, normalize_attribute } from '../../../../utils.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tget,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { attach } from './attachments.js';\nimport { clsx } from '../../../shared/attributes.js';\nimport { set_class } from './class.js';\nimport { set_style } from './style.js';\nimport { ATTACHMENT_KEY, NAMESPACE_HTML, UNINITIALIZED } from '../../../../constants.js';\nimport { branch, destroy_effect, effect, managed } from '../../reactivity/effects.js';\nimport { init_select, select_option } from './bindings/select.js';\nimport { flatten } from '../../reactivity/async.js';\n\nexport const CLASS = Symbol('class');\nexport const STYLE = Symbol('style');\n\nconst IS_CUSTOM_ELEMENT = Symbol('is custom element');\nconst IS_HTML = Symbol('is html');\n\nconst LINK_TAG = IS_XHTML ? 'link' : 'LINK';\nconst INPUT_TAG = IS_XHTML ? 'input' : 'INPUT';\nconst OPTION_TAG = IS_XHTML ? 'option' : 'OPTION';\nconst SELECT_TAG = IS_XHTML ? 'select' : 'SELECT';\nconst PROGRESS_TAG = IS_XHTML ? 'progress' : 'PROGRESS';\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_micro_task(remove_defaults);\n\tadd_form_reset_listener();\n}\n\n/**\n * @param {Element} element\n * @param {any} value\n */\nexport function set_value(element, value) {\n\tvar attributes = get_attributes(element);\n\n\tif (\n\t\tattributes.value ===\n\t\t\t(attributes.value =\n\t\t\t\t// treat null and undefined the same for the initial value\n\t\t\t\tvalue ?? undefined) ||\n\t\t// @ts-expect-error\n\t\t// `progress` elements always need their value set when it's `0`\n\t\t(element.value === value && (value !== 0 || element.nodeName !== PROGRESS_TAG))\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.value = value ?? '';\n}\n\n/**\n * @param {Element} element\n * @param {boolean} checked\n */\nexport function set_checked(element, checked) {\n\tvar attributes = get_attributes(element);\n\n\tif (\n\t\tattributes.checked ===\n\t\t(attributes.checked =\n\t\t\t// treat null and undefined the same for the initial value\n\t\t\tchecked ?? undefined)\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.checked = checked;\n}\n\n/**\n * Sets the `selected` attribute on an `option` element.\n * Not set through the property because that doesn't reflect to the DOM,\n * which means it wouldn't be taken into account when a form is reset.\n * @param {HTMLOptionElement} element\n * @param {boolean} selected\n */\nexport function set_selected(element, selected) {\n\tif (selected) {\n\t\t// The selected option could've changed via user selection, and\n\t\t// setting the value without this check would set it back.\n\t\tif (!element.hasAttribute('selected')) {\n\t\t\telement.setAttribute('selected', '');\n\t\t}\n\t} else {\n\t\telement.removeAttribute('selected');\n\t}\n}\n\n/**\n * Applies the default checked property without influencing the current checked property.\n * @param {HTMLInputElement} element\n * @param {boolean} checked\n */\nexport function set_default_checked(element, checked) {\n\tconst existing_value = element.checked;\n\telement.defaultChecked = checked;\n\telement.checked = existing_value;\n}\n\n/**\n * Applies the default value property without influencing the current value property.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * @param {string} value\n */\nexport function set_default_value(element, value) {\n\tconst existing_value = element.value;\n\telement.defaultValue = value;\n\telement.value = existing_value;\n}\n\n/**\n * @param {Element} element\n * @param {string} attribute\n * @param {string | null} value\n * @param {boolean} [skip_warning]\n */\nexport function set_attribute(element, attribute, value, skip_warning) {\n\tvar attributes = get_attributes(element);\n\n\tif (hydrating) {\n\t\tattributes[attribute] = element.getAttribute(attribute);\n\n\t\tif (\n\t\t\tattribute === 'src' ||\n\t\t\tattribute === 'srcset' ||\n\t\t\t(attribute === 'href' && element.nodeName === LINK_TAG)\n\t\t) {\n\t\t\tif (!skip_warning) {\n\t\t\t\tcheck_src_in_dev_hydration(element, attribute, value ?? '');\n\t\t\t}\n\n\t\t\t// If we reset these attributes, they would result in another network request, which we want to avoid.\n\t\t\t// We assume they are the same between client and server as checking if they are equal is expensive\n\t\t\t// (we can't just compare the strings as they can be different between client and server but result in the\n\t\t\t// same url, so we would need to create hidden anchor elements to compare them)\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (attributes[attribute] === (attributes[attribute] = value)) return;\n\n\tif (attribute === 'loading') {\n\t\t// @ts-expect-error\n\t\telement[LOADING_ATTR_SYMBOL] = value;\n\t}\n\n\tif (value == null) {\n\t\telement.removeAttribute(attribute);\n\t} else if (typeof value !== 'string' && get_setters(element).includes(attribute)) {\n\t\t// @ts-ignore\n\t\telement[attribute] = value;\n\t} else {\n\t\telement.setAttribute(attribute, value);\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {string} value\n */\nexport function set_xlink_attribute(dom, attribute, value) {\n\tdom.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @param {string} prop\n * @param {any} value\n */\nexport function set_custom_element_data(node, prop, value) {\n\t// We need to ensure that setting custom element props, which can\n\t// invoke lifecycle methods on other custom elements, does not also\n\t// associate those lifecycle methods with the current active reaction\n\t// or effect\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet was_hydrating = hydrating;\n\tif (hydrating) {\n\t\tset_hydrating(false);\n\t}\n\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\n\ttry {\n\t\tif (\n\t\t\t// `style` should use `set_attribute` rather than the setter\n\t\t\tprop !== 'style' &&\n\t\t\t// Don't compute setters for custom elements while they aren't registered yet,\n\t\t\t// because during their upgrade/instantiation they might add more setters.\n\t\t\t// Instead, fall back to a simple \"an object, then set as property\" heuristic.\n\t\t\t(setters_cache.has(node.getAttribute('is') || 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.getAttribute('is') || node.nodeName.toLowerCase())\n\t\t\t\t? get_setters(node).includes(prop)\n\t\t\t\t: value && typeof value === 'object')\n\t\t) {\n\t\t\t// @ts-expect-error\n\t\t\tnode[prop] = value;\n\t\t} else {\n\t\t\t// We did getters etc checks already, stringify before passing to set_attribute\n\t\t\t// to ensure it doesn't invoke the same logic again, and potentially populating\n\t\t\t// the setters cache too early.\n\t\t\tset_attribute(node, prop, value == null ? value : String(value));\n\t\t}\n\t} finally {\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t\tif (was_hydrating) {\n\t\t\tset_hydrating(true);\n\t\t}\n\t}\n}\n\n/**\n * Spreads attributes onto a DOM element, taking into account the currently set attributes\n * @param {Element & ElementCSSInlineStyle} element\n * @param {Record<string | symbol, any> | undefined} prev\n * @param {Record<string | symbol, any>} next New attributes - this function mutates this object\n * @param {string} [css_hash]\n * @param {boolean} [should_remove_defaults]\n * @param {boolean} [skip_warning]\n * @returns {Record<string, any>}\n */\nfunction set_attributes(\n\telement,\n\tprev,\n\tnext,\n\tcss_hash,\n\tshould_remove_defaults = false,\n\tskip_warning = false\n) {\n\tif (hydrating && should_remove_defaults && element.nodeName === INPUT_TAG) {\n\t\tvar input = /** @type {HTMLInputElement} */ (element);\n\t\tvar attribute = input.type === 'checkbox' ? 'defaultChecked' : 'defaultValue';\n\n\t\tif (!(attribute in next)) {\n\t\t\tremove_input_defaults(input);\n\t\t}\n\t}\n\n\tvar attributes = get_attributes(element);\n\n\tvar is_custom_element = attributes[IS_CUSTOM_ELEMENT];\n\tvar preserve_attribute_case = !attributes[IS_HTML];\n\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet is_hydrating_custom_element = hydrating && is_custom_element;\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(false);\n\t}\n\n\tvar current = prev || {};\n\tvar is_option_element = element.nodeName === OPTION_TAG;\n\n\tfor (var key in prev) {\n\t\tif (!(key in next)) {\n\t\t\tnext[key] = null;\n\t\t}\n\t}\n\n\tif (next.class) {\n\t\tnext.class = clsx(next.class);\n\t} else if (css_hash || next[CLASS]) {\n\t\tnext.class = null; /* force call to set_class() */\n\t}\n\n\tif (next[STYLE]) {\n\t\tnext.style ??= null; /* force call to set_style() */\n\t}\n\n\tvar setters = get_setters(element);\n\n\t// since key is captured we use const\n\tfor (const key in next) {\n\t\t// let instead of var because referenced in a closure\n\t\tlet value = next[key];\n\n\t\t// Up here because we want to do this for the initial value, too, even if it's undefined,\n\t\t// and this wouldn't be reached in case of undefined because of the equality check below\n\t\tif (is_option_element && key === 'value' && value == null) {\n\t\t\t// The <option> element is a special case because removing the value attribute means\n\t\t\t// the value is set to the text content of the option element, and setting the value\n\t\t\t// to null or undefined means the value is set to the string \"null\" or \"undefined\".\n\t\t\t// To align with how we handle this case in non-spread-scenarios, this logic is needed.\n\t\t\t// There's a super-edge-case bug here that is left in in favor of smaller code size:\n\t\t\t// Because of the \"set missing props to null\" logic above, we can't differentiate\n\t\t\t// between a missing value and an explicitly set value of null or undefined. That means\n\t\t\t// that once set, the value attribute of an <option> element can't be removed. This is\n\t\t\t// a very rare edge case, and removing the attribute altogether isn't possible either\n\t\t\t// for the <option value={undefined}> case, so we're not losing any functionality here.\n\t\t\t// @ts-ignore\n\t\t\telement.value = element.__value = '';\n\t\t\tcurrent[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key === 'class') {\n\t\t\tvar is_html = element.namespaceURI === 'http://www.w3.org/1999/xhtml';\n\t\t\tset_class(element, is_html, value, css_hash, prev?.[CLASS], next[CLASS]);\n\t\t\tcurrent[key] = value;\n\t\t\tcurrent[CLASS] = next[CLASS];\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (key === 'style') {\n\t\t\tset_style(element, value, prev?.[STYLE], next[STYLE]);\n\t\t\tcurrent[key] = value;\n\t\t\tcurrent[STYLE] = next[STYLE];\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar prev_value = current[key];\n\n\t\t// Skip if value is unchanged, unless it's `undefined` and the element still has the attribute\n\t\tif (value === prev_value && !(value === undefined && element.hasAttribute(key))) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tcurrent[key] = value;\n\n\t\tvar prefix = key[0] + key[1]; // this is faster than key.slice(0, 2)\n\t\tif (prefix === '$$') continue;\n\n\t\tif (prefix === 'on') {\n\t\t\t/** @type {{ capture?: true }} */\n\t\t\tconst opts = {};\n\t\t\tconst event_handle_key = '$$' + key;\n\t\t\tlet event_name = key.slice(2);\n\t\t\tvar is_delegated = can_delegate_event(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 (!is_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 (is_delegated) {\n\t\t\t\tdelegated(event_name, element, value);\n\t\t\t\tdelegate([event_name]);\n\t\t\t} else if (value != null) {\n\t\t\t\t/**\n\t\t\t\t * @this {any}\n\t\t\t\t * @param {Event} evt\n\t\t\t\t */\n\t\t\t\tfunction handle(evt) {\n\t\t\t\t\tcurrent[key].call(this, evt);\n\t\t\t\t}\n\n\t\t\t\tcurrent[event_handle_key] = create_event(event_name, element, handle, opts);\n\t\t\t}\n\t\t} else if (key === 'style') {\n\t\t\t// avoid using the setter\n\t\t\tset_attribute(element, key, value);\n\t\t} else if (key === 'autofocus') {\n\t\t\tautofocus(/** @type {HTMLElement} */ (element), Boolean(value));\n\t\t} else if (!is_custom_element && (key === '__value' || (key === 'value' && value != null))) {\n\t\t\t// @ts-ignore We're not running this for custom elements because __value is actually\n\t\t\t// how Lit stores the current value on the element, and messing with that would break things.\n\t\t\telement.value = element.__value = value;\n\t\t} else if (key === 'selected' && is_option_element) {\n\t\t\tset_selected(/** @type {HTMLOptionElement} */ (element), value);\n\t\t} else {\n\t\t\tvar name = key;\n\t\t\tif (!preserve_attribute_case) {\n\t\t\t\tname = normalize_attribute(name);\n\t\t\t}\n\n\t\t\tvar is_default = name === 'defaultValue' || name === 'defaultChecked';\n\n\t\t\tif (value == null && !is_custom_element && !is_default) {\n\t\t\t\tattributes[key] = null;\n\n\t\t\t\tif (name === 'value' || name === 'checked') {\n\t\t\t\t\t// removing value/checked also removes defaultValue/defaultChecked — preserve\n\t\t\t\t\tlet input = /** @type {HTMLInputElement} */ (element);\n\t\t\t\t\tconst use_default = prev === undefined;\n\t\t\t\t\tif (name === 'value') {\n\t\t\t\t\t\tlet previous = input.defaultValue;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultValue = previous;\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinput.value = input.__value = use_default ? previous : null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet previous = input.defaultChecked;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultChecked = previous;\n\t\t\t\t\t\tinput.checked = use_default ? previous : false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.removeAttribute(key);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tis_default ||\n\t\t\t\t(setters.includes(name) && (is_custom_element || typeof value !== 'string'))\n\t\t\t) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[name] = value;\n\t\t\t\t// remove it from attributes's cache\n\t\t\t\tif (name in attributes) attributes[name] = UNINITIALIZED;\n\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\tset_attribute(element, name, value, skip_warning);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(true);\n\t}\n\n\treturn current;\n}\n\n/**\n * @param {Element & ElementCSSInlineStyle} element\n * @param {(...expressions: any) => Record<string | symbol, any>} fn\n * @param {Array<() => any>} sync\n * @param {Array<() => Promise<any>>} async\n * @param {Blocker[]} blockers\n * @param {string} [css_hash]\n * @param {boolean} [should_remove_defaults]\n * @param {boolean} [skip_warning]\n */\nexport function attribute_effect(\n\telement,\n\tfn,\n\tsync = [],\n\tasync = [],\n\tblockers = [],\n\tcss_hash,\n\tshould_remove_defaults = false,\n\tskip_warning = false\n) {\n\tflatten(blockers, sync, async, (values) => {\n\t\t/** @type {Record<string | symbol, any> | undefined} */\n\t\tvar prev = undefined;\n\n\t\t/** @type {Record<symbol, Effect>} */\n\t\tvar effects = {};\n\n\t\tvar is_select = element.nodeName === SELECT_TAG;\n\t\tvar inited = false;\n\n\t\tmanaged(() => {\n\t\t\tvar next = fn(...values.map(get));\n\t\t\t/** @type {Record<string | symbol, any>} */\n\t\t\tvar current = set_attributes(\n\t\t\t\telement,\n\t\t\t\tprev,\n\t\t\t\tnext,\n\t\t\t\tcss_hash,\n\t\t\t\tshould_remove_defaults,\n\t\t\t\tskip_warning\n\t\t\t);\n\n\t\t\tif (inited && is_select && 'value' in next) {\n\t\t\t\tselect_option(/** @type {HTMLSelectElement} */ (element), next.value);\n\t\t\t}\n\n\t\t\tfor (let symbol of Object.getOwnPropertySymbols(effects)) {\n\t\t\t\tif (!next[symbol]) destroy_effect(effects[symbol]);\n\t\t\t}\n\n\t\t\tfor (let symbol of Object.getOwnPropertySymbols(next)) {\n\t\t\t\tvar n = next[symbol];\n\n\t\t\t\tif (symbol.description === ATTACHMENT_KEY && (!prev || n !== prev[symbol])) {\n\t\t\t\t\tif (effects[symbol]) destroy_effect(effects[symbol]);\n\t\t\t\t\teffects[symbol] = branch(() => attach(element, () => n));\n\t\t\t\t}\n\n\t\t\t\tcurrent[symbol] = n;\n\t\t\t}\n\n\t\t\tprev = current;\n\t\t});\n\n\t\tif (is_select) {\n\t\t\tvar select = /** @type {HTMLSelectElement} */ (element);\n\n\t\t\teffect(() => {\n\t\t\t\tselect_option(select, /** @type {Record<string | symbol, any>} */ (prev).value, true);\n\t\t\t\tinit_select(select);\n\t\t\t});\n\t\t}\n\n\t\tinited = true;\n\t});\n}\n\n/**\n *\n * @param {Element} element\n */\nfunction get_attributes(element) {\n\treturn /** @type {Record<string | symbol, unknown>} **/ (\n\t\t// @ts-expect-error\n\t\telement.__attributes ??= {\n\t\t\t[IS_CUSTOM_ELEMENT]: element.nodeName.includes('-'),\n\t\t\t[IS_HTML]: element.namespaceURI === NAMESPACE_HTML\n\t\t}\n\t);\n}\n\n/** @type {Map<string, string[]>} */\nvar setters_cache = new Map();\n\n/** @param {Element} element */\nfunction get_setters(element) {\n\tvar cache_key = element.getAttribute('is') || element.nodeName;\n\tvar setters = setters_cache.get(cache_key);\n\tif (setters) return setters;\n\tsetters_cache.set(cache_key, (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 { hydrating, reset, set_hydrate_node, set_hydrating } from '../hydration.js';\nimport { create_comment, create_element } from '../operations.js';\nimport { create_trusted_html } from '../reconciler.js';\nimport { attach } from './attachments.js';\n\n/** @type {boolean | null} */\nlet supported = null;\n\n/**\n * Checks if the browser supports rich HTML content inside `<option>` elements.\n * Modern browsers preserve HTML elements inside options, while older browsers\n * strip them during parsing, leaving only text content.\n * @returns {boolean}\n */\nfunction is_supported() {\n\tif (supported === null) {\n\t\tvar select = create_element('select');\n\t\tselect.innerHTML = create_trusted_html('<option><span>t</span></option>');\n\t\tsupported = /** @type {Element} */ (select.firstChild)?.firstChild?.nodeType === 1;\n\t}\n\n\treturn supported;\n}\n\n/**\n *\n * @param {HTMLElement} element\n * @param {(new_element: HTMLElement) => void} update_element\n */\nexport function selectedcontent(element, update_element) {\n\t// if it's not supported no need for special logic\n\tif (!is_supported()) return;\n\n\t// we use the attach function directly just to make sure is executed when is mounted to the dom\n\tattach(element, () => () => {\n\t\tconst select = element.closest('select');\n\t\tif (!select) return;\n\n\t\tconst observer = new MutationObserver((entries) => {\n\t\t\tvar selected = false;\n\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (entry.target === element) {\n\t\t\t\t\t// the `<selectedcontent>` already changed, no need to replace it\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// if the changes doesn't include the selected `<option>` we don't need to do anything\n\t\t\t\tselected ||= !!entry.target.parentElement?.closest('option')?.selected;\n\t\t\t}\n\n\t\t\tif (selected) {\n\t\t\t\t// replace the `<selectedcontent>` with a clone\n\t\t\t\telement.replaceWith((element = /** @type {HTMLElement} */ (element.cloneNode(true))));\n\t\t\t\tupdate_element(element);\n\t\t\t}\n\t\t});\n\n\t\tobserver.observe(select, {\n\t\t\tchildList: true,\n\t\t\tcharacterData: true,\n\t\t\tsubtree: true\n\t\t});\n\n\t\treturn () => {\n\t\t\tobserver.disconnect();\n\t\t};\n\t});\n}\n\n/**\n * Handles rich HTML content inside `<option>`, `<optgroup>`, or `<select>` elements with browser-specific branching.\n * Modern browsers preserve HTML inside options, while older browsers strip it to text only.\n *\n * @param {HTMLOptionElement | HTMLOptGroupElement | HTMLSelectElement} element The element to process\n * @param {() => void} rich_fn Function to process rich HTML content (modern browsers)\n */\nexport function customizable_select(element, rich_fn) {\n\tvar was_hydrating = hydrating;\n\n\tif (!is_supported()) {\n\t\tset_hydrating(false);\n\t\telement.textContent = '';\n\t\telement.append(create_comment(''));\n\t}\n\n\ttry {\n\t\trich_fn();\n\t} finally {\n\t\tif (was_hydrating) {\n\t\t\tif (hydrating) {\n\t\t\t\treset(element);\n\t\t\t} else {\n\t\t\t\tset_hydrating(true);\n\t\t\t\tset_hydrate_node(element);\n\t\t\t}\n\t\t}\n\t}\n}\n", "import { listen } from './shared.js';\n\n/**\n * @param {(activeElement: Element | null) => void} update\n * @returns {void}\n */\nexport function bind_active_element(update) {\n\tlisten(document, ['focusin', 'focusout'], (event) => {\n\t\tif (event && event.type === 'focusout' && /** @type {FocusEvent} */ (event).relatedTarget) {\n\t\t\t// The tests still pass if we remove this, because of JSDOM limitations, but it is necessary\n\t\t\t// to avoid temporarily resetting to `document.body`\n\t\t\treturn;\n\t\t}\n\n\t\tupdate(document.activeElement);\n\t});\n}\n", "/** @import { Batch } from '../../../reactivity/batch.js' */\nimport { DEV } from 'esm-env';\nimport { render_effect, teardown } from '../../../reactivity/effects.js';\nimport { listen_to_event_and_reset_event } from './shared.js';\nimport * as e from '../../../errors.js';\nimport { is } from '../../../proxy.js';\nimport { queue_micro_task } from '../../task.js';\nimport { hydrating } from '../../hydration.js';\nimport { tick, untrack } from '../../../runtime.js';\nimport { is_runes } from '../../../context.js';\nimport { current_batch, previous_batch } from '../../../reactivity/batch.js';\nimport { async_mode_flag } from '../../../../flags/index.js';\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_value(input, get, set = get) {\n\tvar batches = new WeakSet();\n\n\tlisten_to_event_and_reset_event(input, 'input', async (is_reset) => {\n\t\tif (DEV && input.type === 'checkbox') {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.bind_invalid_checkbox_value();\n\t\t}\n\n\t\t/** @type {any} */\n\t\tvar value = is_reset ? input.defaultValue : input.value;\n\t\tvalue = is_numberlike_input(input) ? to_number(value) : value;\n\t\tset(value);\n\n\t\tif (current_batch !== null) {\n\t\t\tbatches.add(current_batch);\n\t\t}\n\n\t\t// Because `{#each ...}` blocks work by updating sources inside the flush,\n\t\t// we need to wait a tick before checking to see if we should forcibly\n\t\t// update the input and reset the selection state\n\t\tawait tick();\n\n\t\t// Respect any validation in accessors\n\t\tif (value !== (value = get())) {\n\t\t\tvar start = input.selectionStart;\n\t\t\tvar end = input.selectionEnd;\n\t\t\tvar length = input.value.length;\n\n\t\t\t// the value is coerced on assignment\n\t\t\tinput.value = value ?? '';\n\n\t\t\t// Restore selection\n\t\t\tif (end !== null) {\n\t\t\t\tvar new_length = input.value.length;\n\t\t\t\t// If cursor was at end and new input is longer, move cursor to new end\n\t\t\t\tif (start === end && end === length && new_length > length) {\n\t\t\t\t\tinput.selectionStart = new_length;\n\t\t\t\t\tinput.selectionEnd = new_length;\n\t\t\t\t} else {\n\t\t\t\t\tinput.selectionStart = start;\n\t\t\t\t\tinput.selectionEnd = Math.min(end, new_length);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the updated value from the input instead.\n\t\t(hydrating && input.defaultValue !== input.value) ||\n\t\t// If defaultValue is set, then value == defaultValue\n\t\t// TODO Svelte 6: remove input.value check and set to empty string?\n\t\t(untrack(get) == null && input.value)\n\t) {\n\t\tset(is_numberlike_input(input) ? to_number(input.value) : input.value);\n\n\t\tif (current_batch !== null) {\n\t\t\tbatches.add(current_batch);\n\t\t}\n\t}\n\n\trender_effect(() => {\n\t\tif (DEV && input.type === 'checkbox') {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.bind_invalid_checkbox_value();\n\t\t}\n\n\t\tvar value = get();\n\n\t\tif (input === document.activeElement) {\n\t\t\t// In sync mode render effects are executed during tree traversal -> needs current_batch\n\t\t\t// In async mode render effects are flushed once batch resolved, at which point current_batch is null -> needs previous_batch\n\t\t\tvar batch = /** @type {Batch} */ (async_mode_flag ? previous_batch : current_batch);\n\n\t\t\t// Never rewrite the contents of a focused input. We can get here if, for example,\n\t\t\t// an update is deferred because of async work depending on the input:\n\t\t\t//\n\t\t\t// <input bind:value={query}>\n\t\t\t// <p>{await find(query)}</p>\n\t\t\tif (batches.has(batch)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (is_numberlike_input(input) && value === to_number(input.value)) {\n\t\t\t// handles 0 vs 00 case (see https://github.com/sveltejs/svelte/issues/9959)\n\t\t\treturn;\n\t\t}\n\n\t\tif (input.type === 'date' && !value && !input.value) {\n\t\t\t// Handles the case where a temporarily invalid date is set (while typing, for example with a leading 0 for the day)\n\t\t\t// and prevents this state from clearing the other parts of the date input (see https://github.com/sveltejs/svelte/issues/7897)\n\t\t\treturn;\n\t\t}\n\n\t\t// don't set the value of the input if it's the same to allow\n\t\t// minlength to work properly\n\t\tif (value !== input.value) {\n\t\t\t// @ts-expect-error the value is coerced on assignment\n\t\t\tinput.value = value ?? '';\n\t\t}\n\t});\n}\n\n/** @type {Set<HTMLInputElement[]>} */\nconst pending = new Set();\n\n/**\n * @param {HTMLInputElement[]} inputs\n * @param {null | [number]} group_index\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_group(inputs, group_index, input, get, set = get) {\n\tvar is_checkbox = input.getAttribute('type') === 'checkbox';\n\tvar binding_group = inputs;\n\n\t// needs to be let or related code isn't treeshaken out if it's always false\n\tlet hydration_mismatch = false;\n\n\tif (group_index !== null) {\n\t\tfor (var index of group_index) {\n\t\t\t// @ts-expect-error\n\t\t\tbinding_group = binding_group[index] ??= [];\n\t\t}\n\t}\n\n\tbinding_group.push(input);\n\n\tlisten_to_event_and_reset_event(\n\t\tinput,\n\t\t'change',\n\t\t() => {\n\t\t\t// @ts-ignore\n\t\t\tvar value = input.__value;\n\n\t\t\tif (is_checkbox) {\n\t\t\t\tvalue = get_binding_group_value(binding_group, value, input.checked);\n\t\t\t}\n\n\t\t\tset(value);\n\t\t},\n\t\t// TODO better default value handling\n\t\t() => set(is_checkbox ? [] : null)\n\t);\n\n\trender_effect(() => {\n\t\tvar value = get();\n\n\t\t// If we are hydrating and the value has since changed, then use the update value\n\t\t// from the input instead.\n\t\tif (hydrating && input.defaultChecked !== input.checked) {\n\t\t\thydration_mismatch = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (is_checkbox) {\n\t\t\tvalue = value || [];\n\t\t\t// @ts-ignore\n\t\t\tinput.checked = value.includes(input.__value);\n\t\t} else {\n\t\t\t// @ts-ignore\n\t\t\tinput.checked = is(input.__value, value);\n\t\t}\n\t});\n\n\tteardown(() => {\n\t\tvar index = binding_group.indexOf(input);\n\n\t\tif (index !== -1) {\n\t\t\tbinding_group.splice(index, 1);\n\t\t}\n\t});\n\n\tif (!pending.has(binding_group)) {\n\t\tpending.add(binding_group);\n\n\t\tqueue_micro_task(() => {\n\t\t\t// necessary to maintain binding group order in all insertion scenarios\n\t\t\tbinding_group.sort((a, b) => (a.compareDocumentPosition(b) === 4 ? -1 : 1));\n\t\t\tpending.delete(binding_group);\n\t\t});\n\t}\n\n\tqueue_micro_task(() => {\n\t\tif (hydration_mismatch) {\n\t\t\tvar value;\n\n\t\t\tif (is_checkbox) {\n\t\t\t\tvalue = get_binding_group_value(binding_group, value, input.checked);\n\t\t\t} else {\n\t\t\t\tvar hydration_input = binding_group.find((input) => input.checked);\n\t\t\t\t// @ts-ignore\n\t\t\t\tvalue = hydration_input?.__value;\n\t\t\t}\n\n\t\t\tset(value);\n\t\t}\n\t});\n}\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_checked(input, get, set = get) {\n\tlisten_to_event_and_reset_event(input, 'change', (is_reset) => {\n\t\tvar value = is_reset ? input.defaultChecked : input.checked;\n\t\tset(value);\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the update value from the input instead.\n\t\t(hydrating && input.defaultChecked !== input.checked) ||\n\t\t// If defaultChecked is set, then checked == defaultChecked\n\t\tuntrack(get) == null\n\t) {\n\t\tset(input.checked);\n\t}\n\n\trender_effect(() => {\n\t\tvar value = get();\n\t\tinput.checked = Boolean(value);\n\t});\n}\n\n/**\n * @template V\n * @param {Array<HTMLInputElement>} group\n * @param {V} __value\n * @param {boolean} checked\n * @returns {V[]}\n */\nfunction get_binding_group_value(group, __value, checked) {\n\t/** @type {Set<V>} */\n\tvar value = new Set();\n\n\tfor (var i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) {\n\t\t\t// @ts-ignore\n\t\t\tvalue.add(group[i].__value);\n\t\t}\n\t}\n\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement} input\n */\nfunction is_numberlike_input(input) {\n\tvar type = input.type;\n\treturn type === 'number' || type === 'range';\n}\n\n/**\n * @param {string} value\n */\nfunction to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => FileList | null} get\n * @param {(value: FileList | null) => void} set\n */\nexport function bind_files(input, get, set = get) {\n\tlisten_to_event_and_reset_event(input, 'change', () => {\n\t\tset(input.files);\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the updated value from the input instead.\n\t\thydrating &&\n\t\tinput.files\n\t) {\n\t\tset(input.files);\n\t}\n\n\trender_effect(() => {\n\t\tinput.files = get();\n\t});\n}\n", "import { render_effect, effect, teardown } from '../../../reactivity/effects.js';\nimport { listen } from './shared.js';\n\n/** @param {TimeRanges} ranges */\nfunction time_ranges_to_array(ranges) {\n\tvar array = [];\n\n\tfor (var i = 0; i < ranges.length; i += 1) {\n\t\tarray.push({ start: ranges.start(i), end: ranges.end(i) });\n\t}\n\n\treturn array;\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {() => number | undefined} get\n * @param {(value: number) => void} set\n * @returns {void}\n */\nexport function bind_current_time(media, get, set = get) {\n\t/** @type {number} */\n\tvar raf_id;\n\t/** @type {number} */\n\tvar value;\n\n\t// Ideally, listening to timeupdate would be enough, but it fires too infrequently for the currentTime\n\t// binding, which is why we use a raf loop, too. We additionally still listen to timeupdate because\n\t// the user could be scrubbing through the video using the native controls when the media is paused.\n\tvar callback = () => {\n\t\tcancelAnimationFrame(raf_id);\n\n\t\tif (!media.paused) {\n\t\t\traf_id = requestAnimationFrame(callback);\n\t\t}\n\n\t\tvar next_value = media.currentTime;\n\t\tif (value !== next_value) {\n\t\t\tset((value = next_value));\n\t\t}\n\t};\n\n\traf_id = requestAnimationFrame(callback);\n\tmedia.addEventListener('timeupdate', callback);\n\n\trender_effect(() => {\n\t\tvar next_value = Number(get());\n\n\t\tif (value !== next_value && !isNaN(/** @type {any} */ (next_value))) {\n\t\t\tmedia.currentTime = value = next_value;\n\t\t}\n\t});\n\n\tteardown(() => {\n\t\tcancelAnimationFrame(raf_id);\n\t\tmedia.removeEventListener('timeupdate', callback);\n\t});\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {(array: Array<{ start: number; end: number }>) => void} set\n */\nexport function bind_buffered(media, set) {\n\t/** @type {{ start: number; end: number; }[]} */\n\tvar current;\n\n\t// `buffered` can update without emitting any event, so we check it on various events.\n\t// By specs, `buffered` always returns a new object, so we have to compare deeply.\n\tlisten(media, ['loadedmetadata', 'progress', 'timeupdate', 'seeking'], () => {\n\t\tvar ranges = media.buffered;\n\n\t\tif (\n\t\t\t!current ||\n\t\t\tcurrent.length !== ranges.length ||\n\t\t\tcurrent.some((range, i) => ranges.start(i) !== range.start || ranges.end(i) !== range.end)\n\t\t) {\n\t\t\tcurrent = time_ranges_to_array(ranges);\n\t\t\tset(current);\n\t\t}\n\t});\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {(array: Array<{ start: number; end: number }>) => void} set\n */\nexport function bind_seekable(media, set) {\n\tlisten(media, ['loadedmetadata'], () => set(time_ranges_to_array(media.seekable)));\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {(array: Array<{ start: number; end: number }>) => void} set\n */\nexport function bind_played(media, set) {\n\tlisten(media, ['timeupdate'], () => set(time_ranges_to_array(media.played)));\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {(seeking: boolean) => void} set\n */\nexport function bind_seeking(media, set) {\n\tlisten(media, ['seeking', 'seeked'], () => set(media.seeking));\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {(seeking: boolean) => void} set\n */\nexport function bind_ended(media, set) {\n\tlisten(media, ['timeupdate', 'ended'], () => set(media.ended));\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {(ready_state: number) => void} set\n */\nexport function bind_ready_state(media, set) {\n\tlisten(\n\t\tmedia,\n\t\t['loadedmetadata', 'loadeddata', 'canplay', 'canplaythrough', 'playing', 'waiting', 'emptied'],\n\t\t() => set(media.readyState)\n\t);\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {() => number | undefined} get\n * @param {(playback_rate: number) => void} set\n */\nexport function bind_playback_rate(media, get, set = get) {\n\t// Needs to happen after element is inserted into the dom (which is guaranteed by using effect),\n\t// else playback will be set back to 1 by the browser\n\teffect(() => {\n\t\tvar value = Number(get());\n\n\t\tif (value !== media.playbackRate && !isNaN(value)) {\n\t\t\tmedia.playbackRate = value;\n\t\t}\n\t});\n\n\t// Start listening to ratechange events after the element is inserted into the dom,\n\t// else playback will be set to 1 by the browser\n\teffect(() => {\n\t\tlisten(media, ['ratechange'], () => {\n\t\t\tset(media.playbackRate);\n\t\t});\n\t});\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {() => boolean | undefined} get\n * @param {(paused: boolean) => void} set\n */\nexport function bind_paused(media, get, set = get) {\n\tvar paused = get();\n\n\tvar update = () => {\n\t\tif (paused !== media.paused) {\n\t\t\tset((paused = media.paused));\n\t\t}\n\t};\n\n\t// If someone switches the src while media is playing, the player will pause.\n\t// Listen to the canplay event to get notified of this situation.\n\tlisten(media, ['play', 'pause', 'canplay'], update, paused == null);\n\n\t// Needs to be an effect to ensure media element is mounted: else, if paused is `false` (i.e. should play right away)\n\t// a \"The play() request was interrupted by a new load request\" error would be thrown because the resource isn't loaded yet.\n\teffect(() => {\n\t\tif ((paused = !!get()) !== media.paused) {\n\t\t\tif (paused) {\n\t\t\t\tmedia.pause();\n\t\t\t} else {\n\t\t\t\tmedia.play().catch((error) => {\n\t\t\t\t\tset((paused = true));\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {() => number | undefined} get\n * @param {(volume: number) => void} set\n */\nexport function bind_volume(media, get, set = get) {\n\tvar callback = () => {\n\t\tset(media.volume);\n\t};\n\n\tif (get() == null) {\n\t\tcallback();\n\t}\n\n\tlisten(media, ['volumechange'], callback, false);\n\n\trender_effect(() => {\n\t\tvar value = Number(get());\n\n\t\tif (value !== media.volume && !isNaN(value)) {\n\t\t\tmedia.volume = value;\n\t\t}\n\t});\n}\n\n/**\n * @param {HTMLVideoElement | HTMLAudioElement} media\n * @param {() => boolean | undefined} get\n * @param {(muted: boolean) => void} set\n */\nexport function bind_muted(media, get, set = get) {\n\tvar callback = () => {\n\t\tset(media.muted);\n\t};\n\n\tif (get() == null) {\n\t\tcallback();\n\t}\n\n\tlisten(media, ['volumechange'], callback, false);\n\n\trender_effect(() => {\n\t\tvar value = !!get();\n\n\t\tif (media.muted !== value) media.muted = value;\n\t});\n}\n", "import { listen } from './shared.js';\n\n/**\n * @param {(online: boolean) => void} update\n * @returns {void}\n */\nexport function bind_online(update) {\n\tlisten(window, ['online', 'offline'], () => {\n\t\tupdate(navigator.onLine);\n\t});\n}\n", "import { teardown } from '../../../reactivity/effects.js';\nimport { get_descriptor } from '../../../../shared/utils.js';\n\n/**\n * Makes an `export`ed (non-prop) variable available on the `$$props` object\n * so that consumers can do `bind:x` on the component.\n * @template V\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {V} value\n * @returns {void}\n */\nexport function bind_prop(props, prop, value) {\n\tvar desc = get_descriptor(props, prop);\n\n\tif (desc && desc.set) {\n\t\tprops[prop] = value;\n\t\tteardown(() => {\n\t\t\tprops[prop] = null;\n\t\t});\n\t}\n}\n", "import { effect, teardown } from '../../../reactivity/effects.js';\nimport { untrack } from '../../../runtime.js';\n\n/**\n * We create one listener for all elements\n * @see {@link https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ Explanation}\n */\nclass ResizeObserverSingleton {\n\t/** */\n\t#listeners = new WeakMap();\n\n\t/** @type {ResizeObserver | undefined} */\n\t#observer;\n\n\t/** @type {ResizeObserverOptions} */\n\t#options;\n\n\t/** @static */\n\tstatic entries = new WeakMap();\n\n\t/** @param {ResizeObserverOptions} options */\n\tconstructor(options) {\n\t\tthis.#options = options;\n\t}\n\n\t/**\n\t * @param {Element} element\n\t * @param {(entry: ResizeObserverEntry) => any} listener\n\t */\n\tobserve(element, listener) {\n\t\tvar listeners = this.#listeners.get(element) || new Set();\n\t\tlisteners.add(listener);\n\n\t\tthis.#listeners.set(element, listeners);\n\t\tthis.#getObserver().observe(element, this.#options);\n\n\t\treturn () => {\n\t\t\tvar listeners = this.#listeners.get(element);\n\t\t\tlisteners.delete(listener);\n\n\t\t\tif (listeners.size === 0) {\n\t\t\t\tthis.#listeners.delete(element);\n\t\t\t\t/** @type {ResizeObserver} */ (this.#observer).unobserve(element);\n\t\t\t}\n\t\t};\n\t}\n\n\t#getObserver() {\n\t\treturn (\n\t\t\tthis.#observer ??\n\t\t\t(this.#observer = new ResizeObserver(\n\t\t\t\t/** @param {any} entries */ (entries) => {\n\t\t\t\t\tfor (var entry of entries) {\n\t\t\t\t\t\tResizeObserverSingleton.entries.set(entry.target, entry);\n\t\t\t\t\t\tfor (var listener of this.#listeners.get(entry.target) || []) {\n\t\t\t\t\t\t\tlistener(entry);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t))\n\t\t);\n\t}\n}\n\nvar resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'content-box'\n});\n\nvar resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'border-box'\n});\n\nvar resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton({\n\tbox: 'device-pixel-content-box'\n});\n\n/**\n * @param {Element} element\n * @param {'contentRect' | 'contentBoxSize' | 'borderBoxSize' | 'devicePixelContentBoxSize'} type\n * @param {(entry: keyof ResizeObserverEntry) => void} set\n */\nexport function bind_resize_observer(element, type, set) {\n\tvar observer =\n\t\ttype === 'contentRect' || type === 'contentBoxSize'\n\t\t\t? resize_observer_content_box\n\t\t\t: type === 'borderBoxSize'\n\t\t\t\t? resize_observer_border_box\n\t\t\t\t: resize_observer_device_pixel_content_box;\n\n\tvar unsub = observer.observe(element, /** @param {any} entry */ (entry) => set(entry[type]));\n\tteardown(unsub);\n}\n\n/**\n * @param {HTMLElement} element\n * @param {'clientWidth' | 'clientHeight' | 'offsetWidth' | 'offsetHeight'} type\n * @param {(size: number) => void} set\n */\nexport function bind_element_size(element, type, set) {\n\tvar unsub = resize_observer_border_box.observe(element, () => set(element[type]));\n\n\teffect(() => {\n\t\t// The update could contain reads which should be ignored\n\t\tuntrack(() => set(element[type]));\n\t\treturn unsub;\n\t});\n}\n", "/** @import { ComponentContext, Effect } from '#client' */\nimport { DESTROYING, STATE_SYMBOL } from '#client/constants';\nimport { component_context } from '../../../context.js';\nimport { effect, render_effect } from '../../../reactivity/effects.js';\nimport { active_effect, untrack } from '../../../runtime.js';\n\n/**\n * @param {any} bound_value\n * @param {Element} element_or_component\n * @returns {boolean}\n */\nfunction is_bound_this(bound_value, element_or_component) {\n\treturn (\n\t\tbound_value === element_or_component || bound_value?.[STATE_SYMBOL] === element_or_component\n\t);\n}\n\n/**\n * @param {any} element_or_component\n * @param {(value: unknown, ...parts: unknown[]) => void} update\n * @param {(...parts: unknown[]) => unknown} get_value\n * @param {() => unknown[]} [get_parts] Set if the this binding is used inside an each block,\n * \t\t\t\t\t\t\t\t\t\treturns all the parts of the each block context that are used in the expression\n * @returns {void}\n */\nexport function bind_this(element_or_component = {}, update, get_value, get_parts) {\n\tvar component_effect = /** @type {ComponentContext} */ (component_context).r;\n\tvar parent = /** @type {Effect} */ (active_effect);\n\n\teffect(() => {\n\t\t/** @type {unknown[]} */\n\t\tvar old_parts;\n\n\t\t/** @type {unknown[]} */\n\t\tvar parts;\n\n\t\trender_effect(() => {\n\t\t\told_parts = parts;\n\t\t\t// We only track changes to the parts, not the value itself to avoid unnecessary reruns.\n\t\t\tparts = get_parts?.() || [];\n\n\t\t\tuntrack(() => {\n\t\t\t\tif (element_or_component !== get_value(...parts)) {\n\t\t\t\t\tupdate(element_or_component, ...parts);\n\t\t\t\t\t// If this is an effect rerun (cause: each block context changes), then nullify the binding at\n\t\t\t\t\t// the previous position if it isn't already taken over by a different effect.\n\t\t\t\t\tif (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) {\n\t\t\t\t\t\tupdate(null, ...old_parts);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\t// When the bind:this effect is destroyed, we go up the effect parent chain until we find the last parent effect that is destroyed,\n\t\t\t// or the effect containing the component bind:this is in (whichever comes first). That way we can time the nulling of the binding\n\t\t\t// as close to user/developer expectation as possible.\n\t\t\t// TODO Svelte 6: Decide if we want to keep this logic or just always null the binding in the component effect's teardown\n\t\t\t// (which would be simpler, but less intuitive in some cases, and breaks the `ondestroy-before-cleanup` test)\n\t\t\tlet p = parent;\n\t\t\twhile (p !== component_effect && p.parent !== null && p.parent.f & DESTROYING) {\n\t\t\t\tp = p.parent;\n\t\t\t}\n\t\t\tconst teardown = () => {\n\t\t\t\tif (parts && is_bound_this(get_value(...parts), element_or_component)) {\n\t\t\t\t\tupdate(null, ...parts);\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst original_teardown = p.teardown;\n\t\t\tp.teardown = () => {\n\t\t\t\tteardown();\n\t\t\t\toriginal_teardown?.();\n\t\t\t};\n\t\t};\n\t});\n\n\treturn element_or_component;\n}\n", "import { render_effect, teardown } from '../../../reactivity/effects.js';\nimport { listen } from './shared.js';\n\n/**\n * @param {'innerHTML' | 'textContent' | 'innerText'} property\n * @param {HTMLElement} element\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_content_editable(property, element, get, set = get) {\n\telement.addEventListener('input', () => {\n\t\t// @ts-ignore\n\t\tset(element[property]);\n\t});\n\n\trender_effect(() => {\n\t\tvar value = get();\n\n\t\tif (element[property] !== value) {\n\t\t\tif (value == null) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tvar non_null_value = element[property];\n\t\t\t\tset(non_null_value);\n\t\t\t} else {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[property] = value + '';\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * @param {string} property\n * @param {string} event_name\n * @param {Element} element\n * @param {(value: unknown) => void} set\n * @param {() => unknown} [get]\n * @returns {void}\n */\nexport function bind_property(property, event_name, element, set, get) {\n\tvar handler = () => {\n\t\t// @ts-ignore\n\t\tset(element[property]);\n\t};\n\n\telement.addEventListener(event_name, handler);\n\n\tif (get) {\n\t\trender_effect(() => {\n\t\t\t// @ts-ignore\n\t\t\telement[property] = get();\n\t\t});\n\t} else {\n\t\thandler();\n\t}\n\n\t// @ts-ignore\n\tif (element === document.body || element === window || element === document) {\n\t\tteardown(() => {\n\t\t\telement.removeEventListener(event_name, handler);\n\t\t});\n\t}\n}\n\n/**\n * @param {HTMLElement} element\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_focused(element, set) {\n\tlisten(element, ['focus', 'blur'], () => {\n\t\tset(element === document.activeElement);\n\t});\n}\n", "import { effect, render_effect, teardown } from '../../../reactivity/effects.js';\nimport { listen, without_reactive_context } from './shared.js';\n\n/**\n * @param {'x' | 'y'} type\n * @param {() => number} get\n * @param {(value: number) => void} set\n * @returns {void}\n */\nexport function bind_window_scroll(type, get, set = get) {\n\tvar is_scrolling_x = type === 'x';\n\n\tvar target_handler = () =>\n\t\twithout_reactive_context(() => {\n\t\t\tscrolling = true;\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(clear, 100); // TODO use scrollend event if supported (or when supported everywhere?)\n\n\t\t\tset(window[is_scrolling_x ? 'scrollX' : 'scrollY']);\n\t\t});\n\n\taddEventListener('scroll', target_handler, {\n\t\tpassive: true\n\t});\n\n\tvar scrolling = false;\n\n\t/** @type {ReturnType<typeof setTimeout>} */\n\tvar timeout;\n\tvar clear = () => {\n\t\tscrolling = false;\n\t};\n\tvar first = true;\n\n\trender_effect(() => {\n\t\tvar latest_value = get();\n\t\t// Don't scroll to the initial value for accessibility reasons\n\t\tif (first) {\n\t\t\tfirst = false;\n\t\t} else if (!scrolling && latest_value != null) {\n\t\t\tscrolling = true;\n\t\t\tclearTimeout(timeout);\n\t\t\tif (is_scrolling_x) {\n\t\t\t\tscrollTo(latest_value, window.scrollY);\n\t\t\t} else {\n\t\t\t\tscrollTo(window.scrollX, latest_value);\n\t\t\t}\n\t\t\ttimeout = setTimeout(clear, 100);\n\t\t}\n\t});\n\n\t// Browsers don't fire the scroll event for the initial scroll position when scroll style isn't set to smooth\n\teffect(target_handler);\n\n\tteardown(() => {\n\t\tremoveEventListener('scroll', target_handler);\n\t});\n}\n\n/**\n * @param {'innerWidth' | 'innerHeight' | 'outerWidth' | 'outerHeight'} type\n * @param {(size: number) => void} set\n */\nexport function bind_window_size(type, set) {\n\tlisten(window, ['resize'], () => without_reactive_context(() => set(window[type])));\n}\n", "/** @import { ComponentContextLegacy } from '#client' */\nimport { run, run_all } from '../../../shared/utils.js';\nimport { component_context } from '../../context.js';\nimport { derived } from '../../reactivity/deriveds.js';\nimport { user_pre_effect, user_effect } from '../../reactivity/effects.js';\nimport { deep_read_state, get, untrack } from '../../runtime.js';\n\n/**\n * Legacy-mode only: Call `onMount` callbacks and set up `beforeUpdate`/`afterUpdate` effects\n * @param {boolean} [immutable]\n */\nexport function init(immutable = false) {\n\tconst context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\tconst callbacks = context.l.u;\n\tif (!callbacks) return;\n\n\tlet props = () => deep_read_state(context.s);\n\n\tif (immutable) {\n\t\tlet version = 0;\n\t\tlet prev = /** @type {Record<string, any>} */ ({});\n\n\t\t// In legacy immutable mode, before/afterUpdate only fire if the object identity of a prop changes\n\t\tconst d = derived(() => {\n\t\t\tlet changed = false;\n\t\t\tconst props = context.s;\n\t\t\tfor (const key in props) {\n\t\t\t\tif (props[key] !== prev[key]) {\n\t\t\t\t\tprev[key] = props[key];\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (changed) version++;\n\t\t\treturn version;\n\t\t});\n\n\t\tprops = () => get(d);\n\t}\n\n\t// beforeUpdate\n\tif (callbacks.b.length) {\n\t\tuser_pre_effect(() => {\n\t\t\tobserve_all(context, props);\n\t\t\trun_all(callbacks.b);\n\t\t});\n\t}\n\n\t// onMount (must run before afterUpdate)\n\tuser_effect(() => {\n\t\tconst fns = untrack(() => callbacks.m.map(run));\n\t\treturn () => {\n\t\t\tfor (const fn of fns) {\n\t\t\t\tif (typeof fn === 'function') {\n\t\t\t\t\tfn();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n\n\t// afterUpdate\n\tif (callbacks.a.length) {\n\t\tuser_effect(() => {\n\t\t\tobserve_all(context, props);\n\t\t\trun_all(callbacks.a);\n\t\t});\n\t}\n}\n\n/**\n * Invoke the getter of all signals associated with a component\n * so they can be registered to the effect this function is called in.\n * @param {ComponentContextLegacy} context\n * @param {(() => void)} props\n */\nfunction observe_all(context, props) {\n\tif (context.l.s) {\n\t\tfor (const signal of context.l.s) get(signal);\n\t}\n\n\tprops();\n}\n", "import { set, source } from '../../reactivity/sources.js';\nimport { get } from '../../runtime.js';\nimport { is_array } from '../../../shared/utils.js';\n\n/**\n * Under some circumstances, imports may be reactive in legacy mode. In that case,\n * they should be using `reactive_import` as part of the transformation\n * @param {() => any} fn\n */\nexport function reactive_import(fn) {\n\tvar s = source(0);\n\n\treturn function () {\n\t\tif (arguments.length === 1) {\n\t\t\tset(s, get(s) + 1);\n\t\t\treturn arguments[0];\n\t\t} else {\n\t\t\tget(s);\n\t\t\treturn fn();\n\t\t}\n\t};\n}\n\n/**\n * @this {any}\n * @param {Record<string, unknown>} $$props\n * @param {Event} event\n * @returns {void}\n */\nexport function bubble_event($$props, event) {\n\tvar events = /** @type {Record<string, Function[] | Function>} */ ($$props.$$events)?.[\n\t\tevent.type\n\t];\n\n\tvar callbacks = is_array(events) ? events.slice() : events == null ? [] : [events];\n\n\tfor (var fn of callbacks) {\n\t\t// Preserve \"this\" context\n\t\tfn.call(this, event);\n\t}\n}\n\n/**\n * Used to simulate `$on` on a component instance when `compatibility.componentApi === 4`\n * @param {Record<string, any>} $$props\n * @param {string} event_name\n * @param {Function} event_callback\n */\nexport function add_legacy_event_listener($$props, event_name, event_callback) {\n\t$$props.$$events ||= {};\n\t$$props.$$events[event_name] ||= [];\n\t$$props.$$events[event_name].push(event_callback);\n}\n\n/**\n * Used to simulate `$set` on a component instance when `compatibility.componentApi === 4`.\n * Needs component accessors so that it can call the setter of the prop. Therefore doesn't\n * work for updating props in `$$props` or `$$restProps`.\n * @this {Record<string, any>}\n * @param {Record<string, any>} $$new_props\n */\nexport function update_legacy_props($$new_props) {\n\tfor (var key in $$new_props) {\n\t\tif (key in this) {\n\t\t\tthis[key] = $$new_props[key];\n\t\t}\n\t}\n}\n", "/** @import { Effect, Source } from './types.js' */\nimport { DEV } from 'esm-env';\nimport {\n\tPROPS_IS_BINDABLE,\n\tPROPS_IS_IMMUTABLE,\n\tPROPS_IS_LAZY_INITIAL,\n\tPROPS_IS_RUNES,\n\tPROPS_IS_UPDATED\n} from '../../../constants.js';\nimport { get_descriptor, is_function } from '../../shared/utils.js';\nimport { set, source, update } from './sources.js';\nimport { derived, derived_safe_equal } from './deriveds.js';\nimport {\n\tactive_effect,\n\tget,\n\tis_destroying_effect,\n\tset_active_effect,\n\tuntrack\n} from '../runtime.js';\nimport * as e from '../errors.js';\nimport { DESTROYED, LEGACY_PROPS, STATE_SYMBOL } from '#client/constants';\nimport { proxy } from '../proxy.js';\nimport { capture_store_binding } from './store.js';\nimport { legacy_mode_flag } from '../../flags/index.js';\nimport { effect, render_effect } from './effects.js';\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_prop(fn, d = 1) {\n\tconst value = fn();\n\tfn(value + d);\n\treturn value;\n}\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_prop(fn, d = 1) {\n\tconst value = fn() + d;\n\tfn(value);\n\treturn value;\n}\n\n/**\n * The proxy handler for rest props (i.e. `const { x, ...rest } = $props()`).\n * Is passed the full `$$props` object and excludes the named props.\n * @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, name?: string }>}}\n */\nconst rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\treturn target.props[key];\n\t},\n\tset(target, key) {\n\t\tif (DEV) {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.props_rest_readonly(`${target.name}.${String(key)}`);\n\t\t}\n\n\t\treturn false;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));\n\t}\n};\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} exclude\n * @param {string} [name]\n * @returns {Record<string, unknown>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function rest_props(props, exclude, name) {\n\treturn new Proxy(\n\t\tDEV ? { props, exclude, name, other: {}, to_proxy: [] } : { props, exclude },\n\t\trest_props_handler\n\t);\n}\n\n/**\n * The proxy handler for legacy $$restProps and $$props\n * @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, special: Record<string | symbol, (v?: unknown) => unknown>, version: Source<number>, parent_effect: Effect }>}}\n */\nconst legacy_rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tget(target.version);\n\t\treturn key in target.special ? target.special[key]() : target.props[key];\n\t},\n\tset(target, key, value) {\n\t\tif (!(key in target.special)) {\n\t\t\tvar previous_effect = active_effect;\n\n\t\t\ttry {\n\t\t\t\tset_active_effect(target.parent_effect);\n\n\t\t\t\t// Handle props that can temporarily get out of sync with the parent\n\t\t\t\t/** @type {Record<string, (v?: unknown) => unknown>} */\n\t\t\t\ttarget.special[key] = prop(\n\t\t\t\t\t{\n\t\t\t\t\t\tget [key]() {\n\t\t\t\t\t\t\treturn target.props[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t/** @type {string} */ (key),\n\t\t\t\t\tPROPS_IS_UPDATED\n\t\t\t\t);\n\t\t\t} finally {\n\t\t\t\tset_active_effect(previous_effect);\n\t\t\t}\n\t\t}\n\n\t\ttarget.special[key](value);\n\t\tupdate(target.version); // $$props is coarse-grained: when $$props.x is updated, usages of $$props.y etc are also rerun\n\t\treturn true;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\tdeleteProperty(target, key) {\n\t\t// Svelte 4 allowed for deletions on $$restProps\n\t\tif (target.exclude.includes(key)) return true;\n\t\ttarget.exclude.push(key);\n\t\tupdate(target.version);\n\t\treturn true;\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));\n\t}\n};\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} exclude\n * @returns {Record<string, unknown>}\n */\nexport function legacy_rest_props(props, exclude) {\n\treturn new Proxy(\n\t\t{\n\t\t\tprops,\n\t\t\texclude,\n\t\t\tspecial: {},\n\t\t\tversion: source(0),\n\t\t\t// TODO this is only necessary because we need to track component\n\t\t\t// destruction inside `prop`, because of `bind:this`, but it\n\t\t\t// seems likely that we can simplify `bind:this` instead\n\t\t\tparent_effect: /** @type {Effect} */ (active_effect)\n\t\t},\n\t\tlegacy_rest_props_handler\n\t);\n}\n\n/**\n * The proxy handler for spread props. Handles the incoming array of props\n * that looks like `() => { dynamic: props }, { static: prop }, ..` and wraps\n * them so that the whole thing is passed to the component as the `$$props` argument.\n * @type {ProxyHandler<{ props: Array<Record<string | symbol, unknown> | (() => Record<string | symbol, unknown>)> }>}}\n */\nconst spread_props_handler = {\n\tget(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) return p[key];\n\t\t}\n\t},\n\tset(target, key, value) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tconst desc = get_descriptor(p, key);\n\t\t\tif (desc && desc.set) {\n\t\t\t\tdesc.set(value);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) {\n\t\t\t\tconst descriptor = get_descriptor(p, key);\n\t\t\t\tif (descriptor && !descriptor.configurable) {\n\t\t\t\t\t// Prevent a \"Non-configurability Report Error\": The target is an array, it does\n\t\t\t\t\t// not actually contain this property. If it is now described as non-configurable,\n\t\t\t\t\t// the proxy throws a validation error. Setting it to true avoids that.\n\t\t\t\t\tdescriptor.configurable = true;\n\t\t\t\t}\n\t\t\t\treturn descriptor;\n\t\t\t}\n\t\t}\n\t},\n\thas(target, key) {\n\t\t// To prevent a false positive `is_entry_props` in the `prop` function\n\t\tif (key === STATE_SYMBOL || key === LEGACY_PROPS) return false;\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (p != null && key in p) return true;\n\t\t}\n\n\t\treturn false;\n\t},\n\townKeys(target) {\n\t\t/** @type {Array<string | symbol>} */\n\t\tconst keys = [];\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (!p) continue;\n\n\t\t\tfor (const key in p) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\n\t\t\tfor (const key of Object.getOwnPropertySymbols(p)) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t}\n};\n\n/**\n * @param {Array<Record<string, unknown> | (() => Record<string, unknown>)>} props\n * @returns {any}\n */\nexport function spread_props(...props) {\n\treturn new Proxy({ props }, spread_props_handler);\n}\n\n/**\n * This function is responsible for synchronizing a possibly bound prop with the inner component state.\n * It is used whenever the compiler sees that the component writes to the prop, or when it has a default prop_value.\n * @template V\n * @param {Record<string, unknown>} props\n * @param {string} key\n * @param {number} flags\n * @param {V | (() => V)} [fallback]\n * @returns {(() => V | ((arg: V) => V) | ((arg: V, mutation: boolean) => V))}\n */\nexport function prop(props, key, flags, fallback) {\n\tvar runes = !legacy_mode_flag || (flags & PROPS_IS_RUNES) !== 0;\n\tvar bindable = (flags & PROPS_IS_BINDABLE) !== 0;\n\tvar lazy = (flags & PROPS_IS_LAZY_INITIAL) !== 0;\n\n\tvar fallback_value = /** @type {V} */ (fallback);\n\tvar fallback_dirty = true;\n\n\tvar get_fallback = () => {\n\t\tif (fallback_dirty) {\n\t\t\tfallback_dirty = false;\n\n\t\t\tfallback_value = lazy\n\t\t\t\t? untrack(/** @type {() => V} */ (fallback))\n\t\t\t\t: /** @type {V} */ (fallback);\n\t\t}\n\n\t\treturn fallback_value;\n\t};\n\n\t/** @type {((v: V) => void) | undefined} */\n\tlet setter;\n\n\tif (bindable) {\n\t\t// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})`\n\t\t// or `createClassComponent(Component, props)`\n\t\tvar is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;\n\n\t\tsetter =\n\t\t\tget_descriptor(props, key)?.set ??\n\t\t\t(is_entry_props && key in props ? (v) => (props[key] = v) : undefined);\n\t}\n\n\t/** @type {V} */\n\tvar initial_value;\n\tvar is_store_sub = false;\n\n\tif (bindable) {\n\t\t[initial_value, is_store_sub] = capture_store_binding(() => /** @type {V} */ (props[key]));\n\t} else {\n\t\tinitial_value = /** @type {V} */ (props[key]);\n\t}\n\n\tif (initial_value === undefined && fallback !== undefined) {\n\t\tinitial_value = get_fallback();\n\n\t\tif (setter) {\n\t\t\tif (runes) e.props_invalid_value(key);\n\t\t\tsetter(initial_value);\n\t\t}\n\t}\n\n\t/** @type {() => V} */\n\tvar getter;\n\n\tif (runes) {\n\t\tgetter = () => {\n\t\t\tvar value = /** @type {V} */ (props[key]);\n\t\t\tif (value === undefined) return get_fallback();\n\t\t\tfallback_dirty = true;\n\t\t\treturn value;\n\t\t};\n\t} else {\n\t\tgetter = () => {\n\t\t\tvar value = /** @type {V} */ (props[key]);\n\n\t\t\tif (value !== undefined) {\n\t\t\t\t// in legacy mode, we don't revert to the fallback value\n\t\t\t\t// if the prop goes from defined to undefined. The easiest\n\t\t\t\t// way to model this is to make the fallback undefined\n\t\t\t\t// as soon as the prop has a value\n\t\t\t\tfallback_value = /** @type {V} */ (undefined);\n\t\t\t}\n\n\t\t\treturn value === undefined ? fallback_value : value;\n\t\t};\n\t}\n\n\t// prop is never written to — we only need a getter\n\tif (runes && (flags & PROPS_IS_UPDATED) === 0) {\n\t\treturn getter;\n\t}\n\n\t// prop is written to, but the parent component had `bind:foo` which\n\t// means we can just call `$$props.foo = value` directly\n\tif (setter) {\n\t\tvar legacy_parent = props.$$legacy;\n\t\treturn /** @type {() => V} */ (\n\t\t\tfunction (/** @type {V} */ value, /** @type {boolean} */ mutation) {\n\t\t\t\tif (arguments.length > 0) {\n\t\t\t\t\t// We don't want to notify if the value was mutated and the parent is in runes mode.\n\t\t\t\t\t// In that case the state proxy (if it exists) should take care of the notification.\n\t\t\t\t\t// If the parent is not in runes mode, we need to notify on mutation, too, that the prop\n\t\t\t\t\t// has changed because the parent will not be able to detect the change otherwise.\n\t\t\t\t\tif (!runes || !mutation || legacy_parent || is_store_sub) {\n\t\t\t\t\t\t/** @type {Function} */ (setter)(mutation ? getter() : value);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\treturn getter();\n\t\t\t}\n\t\t);\n\t}\n\n\t// Either prop is written to, but there's no binding, which means we\n\t// create a derived that we can write to locally.\n\t// Or we are in legacy mode where we always create a derived to replicate that\n\t// Svelte 4 did not trigger updates when a primitive value was updated to the same value.\n\tvar overridden = false;\n\n\tvar d = ((flags & PROPS_IS_IMMUTABLE) !== 0 ? derived : derived_safe_equal)(() => {\n\t\toverridden = false;\n\t\treturn getter();\n\t});\n\n\tif (DEV) {\n\t\td.label = key;\n\t}\n\n\t// Capture the initial value if it's bindable\n\tif (bindable) get(d);\n\n\tvar parent_effect = /** @type {Effect} */ (active_effect);\n\n\treturn /** @type {() => V} */ (\n\t\tfunction (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t\tif (arguments.length > 0) {\n\t\t\t\tconst new_value = mutation ? get(d) : runes && bindable ? proxy(value) : value;\n\n\t\t\t\tset(d, new_value);\n\t\t\t\toverridden = true;\n\n\t\t\t\tif (fallback_value !== undefined) {\n\t\t\t\t\tfallback_value = new_value;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\t// special case — avoid recalculating the derived if we're in a\n\t\t\t// teardown function and the prop was overridden locally, or the\n\t\t\t// component was already destroyed (people could access props in a timeout)\n\t\t\tif ((is_destroying_effect && overridden) || (parent_effect.f & DESTROYED) !== 0) {\n\t\t\t\treturn d.v;\n\t\t\t}\n\n\t\t\treturn get(d);\n\t\t}\n\t);\n}\n", "/** @import { Blocker } from '#client' */\nimport { dev_current_component_function } from './context.js';\nimport { FILENAME } from '../../constants.js';\nimport { render_effect } from './reactivity/effects.js';\nimport * as w from './warnings.js';\nimport { capture_store_binding } from './reactivity/store.js';\nimport { run_after_blockers } from './reactivity/async.js';\n\n/**\n * @param {string} binding\n * @param {Blocker[]} blockers\n * @param {() => Record<string, any>} get_object\n * @param {() => string} get_property\n * @param {number} line\n * @param {number} column\n */\nexport function validate_binding(binding, blockers, get_object, get_property, line, column) {\n\trun_after_blockers(blockers, () => {\n\t\tvar warned = false;\n\n\t\tvar filename = dev_current_component_function?.[FILENAME];\n\n\t\trender_effect(() => {\n\t\t\tif (warned) return;\n\n\t\t\tvar [object, is_store_sub] = capture_store_binding(get_object);\n\n\t\t\tif (is_store_sub) return;\n\n\t\t\tvar property = get_property();\n\n\t\t\tvar ran = false;\n\n\t\t\t// by making the (possibly false, but it would be an extreme edge case) assumption\n\t\t\t// that a getter has a corresponding setter, we can determine if a property is\n\t\t\t// reactive by seeing if this effect has dependencies\n\t\t\tvar effect = render_effect(() => {\n\t\t\t\tif (ran) return;\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\t\tobject[property];\n\t\t\t});\n\n\t\t\tran = true;\n\n\t\t\tif (effect.deps === null) {\n\t\t\t\tvar location = `${filename}:${line}:${column}`;\n\t\t\t\tw.binding_property_non_reactive(binding, location);\n\n\t\t\t\twarned = true;\n\t\t\t}\n\t\t});\n\t});\n}\n", "import { createClassComponent } from '../../../../legacy/legacy-client.js';\nimport { effect_root, render_effect } from '../../reactivity/effects.js';\nimport { append } from '../template.js';\nimport { define_property, get_descriptor, object_keys } from '../../../shared/utils.js';\nimport { create_element } from '../operations.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\t\t/** @type {ShadowRoot | null} The ShadowRoot of the custom element */\n\t\t$$shadowRoot = null;\n\n\t\t/**\n\t\t * @param {*} $$componentCtor\n\t\t * @param {*} $$slots\n\t\t * @param {ShadowRootInit | undefined} shadow_root_init\n\t\t */\n\t\tconstructor($$componentCtor, $$slots, shadow_root_init) {\n\t\t\tsuper();\n\t\t\tthis.$$ctor = $$componentCtor;\n\t\t\tthis.$$s = $$slots;\n\n\t\t\tif (shadow_root_init) {\n\t\t\t\t// We need to store the reference to shadow root, because `closed` shadow root cannot be\n\t\t\t\t// accessed with `this.shadowRoot`.\n\t\t\t\tthis.$$shadowRoot = this.attachShadow(shadow_root_init);\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 = create_element('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 {ShadowRootInit | undefined} shadow_root_init Options passed to shadow DOM constructor\n * @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]\n */\nexport function create_custom_element(\n\tComponent,\n\tprops_definition,\n\tslots,\n\texports,\n\tshadow_root_init,\n\textend\n) {\n\tlet Class = class extends SvelteElement {\n\t\tconstructor() {\n\t\t\tsuper(Component, slots, shadow_root_init);\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", "import { STATE_SYMBOL } from '#client/constants';\nimport { snapshot } from '../../shared/clone.js';\nimport * as w from '../warnings.js';\nimport { untrack } from '../runtime.js';\n\n/**\n * @param {string} method\n * @param {...any} objects\n */\nexport function log_if_contains_state(method, ...objects) {\n\tuntrack(() => {\n\t\ttry {\n\t\t\tlet has_state = false;\n\t\t\tconst transformed = [];\n\n\t\t\tfor (const obj of objects) {\n\t\t\t\tif (obj && typeof obj === 'object' && STATE_SYMBOL in obj) {\n\t\t\t\t\ttransformed.push(snapshot(obj, true));\n\t\t\t\t\thas_state = true;\n\t\t\t\t} else {\n\t\t\t\t\ttransformed.push(obj);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (has_state) {\n\t\t\t\tw.console_log_state(method);\n\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log('%c[snapshot]', 'color: grey', ...transformed);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Errors can occur when trying to snapshot objects with getters that throw or non-enumerable properties.\n\t\t}\n\t});\n\n\treturn objects;\n}\n", "import { async_mode_flag } from '../flags/index.js';\nimport { hydrating } from './dom/hydration.js';\nimport * as w from './warnings.js';\nimport * as e from './errors.js';\nimport { DEV } from 'esm-env';\n\n/**\n * @template T\n * @param {string} key\n * @param {() => T} fn\n * @returns {T}\n */\nexport function hydratable(key, fn) {\n\tif (!async_mode_flag) {\n\t\te.experimental_async_required('hydratable');\n\t}\n\n\tif (hydrating) {\n\t\tconst store = window.__svelte?.h;\n\n\t\tif (store?.has(key)) {\n\t\t\treturn /** @type {T} */ (store.get(key));\n\t\t}\n\n\t\tif (DEV) {\n\t\t\te.hydratable_missing_but_required(key);\n\t\t} else {\n\t\t\tw.hydratable_missing_but_expected(key);\n\t\t}\n\t}\n\n\treturn fn();\n}\n", "/** @import { ComponentContext, ComponentContextLegacy } from '#client' */\n/** @import { EventDispatcher } from './index.js' */\n/** @import { NotFunction } from './internal/types.js' */\nimport { active_reaction, untrack } from './internal/client/runtime.js';\nimport { is_array } from './internal/shared/utils.js';\nimport { user_effect } from './internal/client/index.js';\nimport * as e from './internal/client/errors.js';\nimport { legacy_mode_flag } from './internal/flags/index.js';\nimport { component_context } from './internal/client/context.js';\nimport { DEV } from 'esm-env';\n\nif (DEV) {\n\t/**\n\t * @param {string} rune\n\t */\n\tfunction throw_rune_error(rune) {\n\t\tif (!(rune in globalThis)) {\n\t\t\t// TODO if people start adjusting the \"this can contain runes\" config through v-p-s more, adjust this message\n\t\t\t/** @type {any} */\n\t\t\tlet value; // let's hope noone modifies this global, but belts and braces\n\t\t\tObject.defineProperty(globalThis, rune, {\n\t\t\t\tconfigurable: true,\n\t\t\t\t// eslint-disable-next-line getter-return\n\t\t\t\tget: () => {\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\n\t\t\t\t\te.rune_outside_svelte(rune);\n\t\t\t\t},\n\t\t\t\tset: (v) => {\n\t\t\t\t\tvalue = v;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tthrow_rune_error('$state');\n\tthrow_rune_error('$effect');\n\tthrow_rune_error('$derived');\n\tthrow_rune_error('$inspect');\n\tthrow_rune_error('$props');\n\tthrow_rune_error('$bindable');\n}\n\n/**\n * Returns an [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) that aborts when the current [derived](https://svelte.dev/docs/svelte/$derived) or [effect](https://svelte.dev/docs/svelte/$effect) re-runs or is destroyed.\n *\n * Must be called while a derived or effect is running.\n *\n * ```svelte\n * <script>\n * \timport { getAbortSignal } from 'svelte';\n *\n * \tlet { id } = $props();\n *\n * \tasync function getData(id) {\n * \t\tconst response = await fetch(`/items/${id}`, {\n * \t\t\tsignal: getAbortSignal()\n * \t\t});\n *\n * \t\treturn await response.json();\n * \t}\n *\n * \tconst data = $derived(await getData(id));\n * </script>\n * ```\n */\nexport function getAbortSignal() {\n\tif (active_reaction === null) {\n\t\te.get_abort_signal_outside_reaction();\n\t}\n\n\treturn (active_reaction.ac ??= new AbortController()).signal;\n}\n\n/**\n * `onMount`, like [`$effect`](https://svelte.dev/docs/svelte/$effect), schedules a function to run as soon as the component has been mounted to the DOM.\n * Unlike `$effect`, the provided function only runs once.\n *\n * It must be called during the component's initialisation (but doesn't need to live _inside_ the component;\n * it can be called from an external module). If a function is returned _synchronously_ from `onMount`,\n * it will be called when the component is unmounted.\n *\n * `onMount` functions do not run during [server-side rendering](https://svelte.dev/docs/svelte/svelte-server#render).\n *\n * @template T\n * @param {() => NotFunction<T> | Promise<NotFunction<T>> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('onMount');\n\t}\n\n\tif (legacy_mode_flag && component_context.l !== null) {\n\t\tinit_update_callbacks(component_context).m.push(fn);\n\t} else {\n\t\tuser_effect(() => {\n\t\t\tconst cleanup = untrack(fn);\n\t\t\tif (typeof cleanup === 'function') return /** @type {() => void} */ (cleanup);\n\t\t});\n\t}\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('onDestroy');\n\t}\n\n\tonMount(() => () => untrack(fn));\n}\n\n/**\n * @template [T=any]\n * @param {string} type\n * @param {T} [detail]\n * @param {any}params_0\n * @returns {CustomEvent<T>}\n */\nfunction create_custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs/svelte/legacy-on#Component-events).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: null; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * @deprecated Use callback props and/or the `$host()` rune instead — see [migration guide](https://svelte.dev/docs/svelte/v5-migration-guide#Event-changes-Component-events)\n * @template {Record<string, any>} [EventMap = any]\n * @returns {EventDispatcher<EventMap>}\n */\nexport function createEventDispatcher() {\n\tconst active_component_context = component_context;\n\tif (active_component_context === null) {\n\t\te.lifecycle_outside_component('createEventDispatcher');\n\t}\n\n\t/**\n\t * @param [detail]\n\t * @param [options]\n\t */\n\treturn (type, detail, options) => {\n\t\tconst events = /** @type {Record<string, Function | Function[]>} */ (\n\t\t\tactive_component_context.s.$$events\n\t\t)?.[/** @type {string} */ (type)];\n\n\t\tif (events) {\n\t\t\tconst callbacks = is_array(events) ? events.slice() : [events];\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = create_custom_event(/** @type {string} */ (type), detail, options);\n\t\t\tfor (const fn of callbacks) {\n\t\t\t\tfn.call(active_component_context.x, event);\n\t\t\t}\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\n// TODO mark beforeUpdate and afterUpdate as deprecated in Svelte 6\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`.\n *\n * In runes mode use `$effect.pre` instead.\n *\n * @deprecated Use [`$effect.pre`](https://svelte.dev/docs/svelte/$effect#$effect.pre) instead\n * @param {() => void} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('beforeUpdate');\n\t}\n\n\tif (component_context.l === null) {\n\t\te.lifecycle_legacy_only('beforeUpdate');\n\t}\n\n\tinit_update_callbacks(component_context).b.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`.\n *\n * In runes mode use `$effect` instead.\n *\n * @deprecated Use [`$effect`](https://svelte.dev/docs/svelte/$effect) instead\n * @param {() => void} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('afterUpdate');\n\t}\n\n\tif (component_context.l === null) {\n\t\te.lifecycle_legacy_only('afterUpdate');\n\t}\n\n\tinit_update_callbacks(component_context).a.push(fn);\n}\n\n/**\n * Legacy-mode: Init callbacks object for onMount/beforeUpdate/afterUpdate\n * @param {ComponentContext} context\n */\nfunction init_update_callbacks(context) {\n\tvar l = /** @type {ComponentContextLegacy} */ (context).l;\n\treturn (l.u ??= { a: [], b: [], m: [] });\n}\n\nexport { flushSync, fork } from './internal/client/reactivity/batch.js';\nexport {\n\tcreateContext,\n\tgetContext,\n\tgetAllContexts,\n\thasContext,\n\tsetContext\n} from './internal/client/context.js';\nexport { hydratable } from './internal/client/hydratable.js';\nexport { hydrate, mount, unmount } from './internal/client/render.js';\nexport { tick, untrack, settled } from './internal/client/runtime.js';\nexport { createRawSnippet } from './internal/client/dom/blocks/snippet.js';\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["action", "element", "update", "hash", "element", "comment", "component", "effect", "component", "prop", "key", "component", "transition", "key", "offscreen", "effect", "branch", "v", "key", "fn", "key", "element", "key", "state", "effect", "key", "fallback", "pending", "index", "item", "next", "element", "effect", "hash", "next", "node", "key", "tag", "snippet", "component", "element", "html", "component", "now", "element", "effect", "animation", "to", "transition", "run", "block", "aborted", "tick", "keyframes", "styles", "t", "element", "anchor", "hash", "action", "clsx", "hash", "key", "append_styles", "hash", "key", "next", "key", "get", "set", "element", "prop", "next", "key", "clsx", "input", "async", "element", "update", "event", "get", "set", "hydration_mismatch", "index", "input", "get", "set", "update", "update", "prop", "element", "listeners", "set", "update", "teardown", "element", "get", "set", "get", "set", "props", "key", "event", "key", "key", "fallback", "effect", "slot", "key", "attr", "prop", "element", "component", "key", "event"]
|
|
7
|
+
}
|