From a3d6b2b08376b5caa50d12d1c3adb85082add0a2 Mon Sep 17 00:00:00 2001 From: eewing Date: Thu, 19 Feb 2026 09:25:37 -0600 Subject: [PATCH] Update environment type definitions and improve safe redirect logic in login proxy page. Refactor SvelteKit generated files for better performance and maintainability, including updates to version hashes and removal of unused dependencies. --- .DS_Store | Bin 0 -> 6148 bytes .../immutable/assets/_layout.xzg7NZgL.css | 1 + .svelte-kit/ambient.d.ts | 64 +- .svelte-kit/generated/server/internal.js | 2 +- .../src/routes/login/proxy+page.server.ts | 4 +- build/client/registerSW.js | 1 + build/client/registerSW.js.br | Bin 0 -> 90 bytes build/client/registerSW.js.gz | Bin 0 -> 126 bytes node_modules/.DS_Store | Bin 0 -> 6148 bytes node_modules/.vite/deps 4/chunk-HRPYXN4O.js | 3101 +++++++++++ .../chunk-J5VS5SBR.js.map} | 0 node_modules/.vite/deps 4/chunk-KT36QEZ7.js | 4841 +++++++++++++++++ node_modules/.vite/deps 4/chunk-KU4QGBNN.js | 736 +++ .../.vite/deps 4/chunk-UGBVNEQM.js.map | 7 + node_modules/.vite/deps 4/chunk-XWATFG4W.js | 213 + node_modules/.vite/deps 4/chunk-YERFD2CZ.js | 148 + node_modules/.vite/deps 4/clsx.js | 9 + node_modules/.vite/deps 4/clsx.js.map | 7 + node_modules/.vite/deps 4/esm-env.js.map | 7 + node_modules/.vite/deps 4/svelte.js.map | 7 + node_modules/.vite/deps 4/svelte_animate.js | 57 + .../svelte_internal_flags_legacy.js.map | 7 + node_modules/.vite/deps 4/svelte_motion.js | 571 ++ .../.vite/deps 4/svelte_motion.js.map | 7 + .../.vite/deps 4/svelte_reactivity_window.js | 131 + .../.vite/deps/@lucide_svelte_icons_check.js | 14 +- .../@lucide_svelte_icons_chevron-right.js | 14 +- .../.vite/deps/@lucide_svelte_icons_circle.js | 14 +- .../.vite/deps/@lucide_svelte_icons_minus.js | 14 +- .../.vite/deps/@lucide_svelte_icons_x.js | 14 +- node_modules/.vite/deps/_metadata.json | 222 +- node_modules/.vite/deps/bits-ui.js | 22 +- .../{chunk-EJO6A5J3.js => chunk-3TACVO2P.js} | 4 +- ...-EJO6A5J3.js.map => chunk-3TACVO2P.js.map} | 0 .../{chunk-7NTURTDS.js => chunk-57IKBECK.js} | 24 +- node_modules/.vite/deps/chunk-57IKBECK.js.map | 7 + .../{chunk-JWZP2TNC.js => chunk-6EUZYYI5.js} | 8 +- ...-JWZP2TNC.js.map => chunk-6EUZYYI5.js.map} | 0 .../{chunk-WTI4ZYPF.js => chunk-EXK7SDUS.js} | 360 +- node_modules/.vite/deps/chunk-EXK7SDUS.js.map | 7 + .../{chunk-BB5SQROY.js => chunk-EZEETTA4.js} | 6 +- ...-BB5SQROY.js.map => chunk-EZEETTA4.js.map} | 0 .../{chunk-5K6HJQUS.js => chunk-JC3VXQM7.js} | 132 +- ...-5K6HJQUS.js.map => chunk-JC3VXQM7.js.map} | 6 +- node_modules/.vite/deps/chunk-WTI4ZYPF.js.map | 7 - node_modules/.vite/deps/svelte.js | 10 +- node_modules/.vite/deps/svelte_attachments.js | 10 +- node_modules/.vite/deps/svelte_events.js | 4 +- .../.vite/deps/svelte_internal_client.js | 10 +- node_modules/.vite/deps/svelte_legacy.js | 6 +- node_modules/.vite/deps/svelte_motion.js | 20 +- node_modules/.vite/deps/svelte_reactivity.js | 14 +- .../.vite/deps/svelte_reactivity_window.js | 12 +- node_modules/.vite/deps/svelte_store.js | 10 +- src/routes/login/+page.server.ts | 4 +- src/routes/login/+page.svelte | 2 +- 56 files changed, 10376 insertions(+), 522 deletions(-) create mode 100644 .DS_Store create mode 100644 .svelte-kit/adapter-node/_app 2/immutable/assets/_layout.xzg7NZgL.css create mode 100644 build/client/registerSW.js create mode 100644 build/client/registerSW.js.br create mode 100644 build/client/registerSW.js.gz create mode 100644 node_modules/.DS_Store create mode 100644 node_modules/.vite/deps 4/chunk-HRPYXN4O.js rename node_modules/.vite/{deps/chunk-7NTURTDS.js.map => deps 4/chunk-J5VS5SBR.js.map} (100%) create mode 100644 node_modules/.vite/deps 4/chunk-KT36QEZ7.js create mode 100644 node_modules/.vite/deps 4/chunk-KU4QGBNN.js create mode 100644 node_modules/.vite/deps 4/chunk-UGBVNEQM.js.map create mode 100644 node_modules/.vite/deps 4/chunk-XWATFG4W.js create mode 100644 node_modules/.vite/deps 4/chunk-YERFD2CZ.js create mode 100644 node_modules/.vite/deps 4/clsx.js create mode 100644 node_modules/.vite/deps 4/clsx.js.map create mode 100644 node_modules/.vite/deps 4/esm-env.js.map create mode 100644 node_modules/.vite/deps 4/svelte.js.map create mode 100644 node_modules/.vite/deps 4/svelte_animate.js create mode 100644 node_modules/.vite/deps 4/svelte_internal_flags_legacy.js.map create mode 100644 node_modules/.vite/deps 4/svelte_motion.js create mode 100644 node_modules/.vite/deps 4/svelte_motion.js.map create mode 100644 node_modules/.vite/deps 4/svelte_reactivity_window.js rename node_modules/.vite/deps/{chunk-EJO6A5J3.js => chunk-3TACVO2P.js} (90%) rename node_modules/.vite/deps/{chunk-EJO6A5J3.js.map => chunk-3TACVO2P.js.map} (100%) rename node_modules/.vite/deps/{chunk-7NTURTDS.js => chunk-57IKBECK.js} (99%) create mode 100644 node_modules/.vite/deps/chunk-57IKBECK.js.map rename node_modules/.vite/deps/{chunk-JWZP2TNC.js => chunk-6EUZYYI5.js} (97%) rename node_modules/.vite/deps/{chunk-JWZP2TNC.js.map => chunk-6EUZYYI5.js.map} (100%) rename node_modules/.vite/deps/{chunk-WTI4ZYPF.js => chunk-EXK7SDUS.js} (99%) create mode 100644 node_modules/.vite/deps/chunk-EXK7SDUS.js.map rename node_modules/.vite/deps/{chunk-BB5SQROY.js => chunk-EZEETTA4.js} (99%) rename node_modules/.vite/deps/{chunk-BB5SQROY.js.map => chunk-EZEETTA4.js.map} (100%) rename node_modules/.vite/deps/{chunk-5K6HJQUS.js => chunk-JC3VXQM7.js} (99%) rename node_modules/.vite/deps/{chunk-5K6HJQUS.js.map => chunk-JC3VXQM7.js.map} (87%) delete mode 100644 node_modules/.vite/deps/chunk-WTI4ZYPF.js.map diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5ae41d99826f2772f3a6a0cf8d2f13d01f86dffd GIT binary patch literal 6148 zcmeHKJ!>055Pd5t{*nnUgR3jz(guMW2SP69LVkcjO$s}*j3q4jge9fE1l*fIN`rB# zr1B3?Aqa_k_xUe*v%9u-Pr5jTNg(XN?%Ug$*?ITG?P>w2?P0S9tN>VG6Ra$;n_=RY zHf1F{vr1I5MmKFHjZWI&^UQ>)6~aVNASm!J6_9VYf(;y^je-09e)#t0{Oa@dOV{6P z)pqvNZchj=mc|0}x4CFxh(_md5&dRCWiukY`Y&|-WgH_#lS=KPt4Bj}IY8fKQ++;4$fhvX<#yV;8GSLD{U&~* z+MmR`ydVEOBNdeSE1zKBWr@<|cOqlL6O+Fd}h$3L+Q#~$5vMM!l86^&PO^N zDmEDUpg>T-SD:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-input{border-color:var(--input)}.border-transparent{border-color:#0000}.bg-background,.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--background)95%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.ps-2{padding-inline-start:calc(var(--spacing)*2)}.ps-8{padding-inline-start:calc(var(--spacing)*8)}.pe-2{padding-inline-end:calc(var(--spacing)*2)}.pe-8{padding-inline-end:calc(var(--spacing)*8)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.text-center{text-align:center}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}.running{animation-play-state:running}.zoom-in{--tw-enter-scale:0}.zoom-out{--tw-exit-scale:0}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media(hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:text-destructive:focus{color:var(--destructive)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-highlighted\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-highlighted\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-\[highlighted\]\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-\[inset\]\:ps-8[data-inset]{padding-inline-start:calc(var(--spacing)*8)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:min-h-full[data-orientation=vertical]{min-height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-end-2[data-side=left]:where(:dir(ltr),[dir=ltr]){--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=left\]\:slide-in-from-end-2[data-side=left]:where(:dir(rtl),[dir=rtl]){--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-start-2[data-side=right]:where(:dir(ltr),[dir=ltr]){--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=right\]\:slide-in-from-start-2[data-side=right]:where(:dir(rtl),[dir=rtl]){--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:data-highlighted\:bg-destructive\/10[data-variant=destructive][data-highlighted]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:data-highlighted\:bg-destructive\/10[data-variant=destructive][data-highlighted]{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.data-\[variant\=destructive\]\:data-highlighted\:text-destructive[data-variant=destructive][data-highlighted]{color:var(--destructive)}@media(min-width:40rem){.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-start{text-align:start}}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-destructive\/70:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/70:is(.dark *){background-color:color-mix(in oklab,var(--destructive)70%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[variant\=destructive\]\:data-highlighted\:bg-destructive\/20:is(.dark *)[data-variant=destructive][data-highlighted]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:data-highlighted\:bg-destructive\/20:is(.dark *)[data-variant=destructive][data-highlighted]{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pe-0:has([role=checkbox]){padding-inline-end:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}@media(hover:hover){:is(.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover,.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover>svelte-css-wrapper)>th,:is(.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover,.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover>svelte-css-wrapper) td{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){:is(.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover,.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover>svelte-css-wrapper)>th,:is(.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover,.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover>svelte-css-wrapper) td{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:#fff;--foreground:#09090b;--muted:#f4f4f5;--muted-foreground:#71717a;--popover:#fff;--popover-foreground:#09090b;--card:#fff;--card-foreground:#09090b;--border:#e4e4e7;--input:#e4e4e7;--primary:#18181b;--primary-foreground:#fafafa;--secondary:#f4f4f5;--secondary-foreground:#18181b;--accent:#f4f4f5;--accent-foreground:#18181b;--destructive:#dc2626;--destructive-foreground:#fafafa;--ring:#09090b;--sidebar:#fafafa;--sidebar-foreground:#3f3f46;--sidebar-primary:#18181b;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#f4f4f5;--sidebar-accent-foreground:#18181b;--sidebar-border:#e5e7eb;--sidebar-ring:#3b82f6;--radius:.5rem}.dark{--background:#09090b;--foreground:#fafafa;--muted:#27272a;--muted-foreground:#a1a1aa;--popover:#09090b;--popover-foreground:#fafafa;--card:#09090b;--card-foreground:#fafafa;--border:#27272a;--input:#27272a;--primary:#fafafa;--primary-foreground:#18181b;--secondary:#27272a;--secondary-foreground:#fafafa;--accent:#27272a;--accent-foreground:#fafafa;--destructive:#7f1d1d;--destructive-foreground:#fafafa;--ring:#d4d4d8;--sidebar:#18181b;--sidebar-foreground:#f4f4f5;--sidebar-primary:#1d4ed8;--sidebar-primary-foreground:#fff;--sidebar-accent:#27272a;--sidebar-accent-foreground:#f4f4f5;--sidebar-border:#27272a;--sidebar-ring:#3b82f6}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/.svelte-kit/ambient.d.ts b/.svelte-kit/ambient.d.ts index b6b8a8fa..8daf8a86 100644 --- a/.svelte-kit/ambient.d.ts +++ b/.svelte-kit/ambient.d.ts @@ -26,56 +26,54 @@ * ``` */ declare module '$env/static/private' { - export const _ZO_DOCTOR: string; - export const VSCODE_CRASH_REPORTER_PROCESS_TYPE: string; + export const VSCODE_GIT_IPC_AUTH_TOKEN: string; + export const TERM_PROGRAM: string; export const NODE: string; export const TERM: string; export const SHELL: string; - export const VSCODE_PROCESS_TITLE: string; - export const TMPDIR: string; export const HOMEBREW_REPOSITORY: string; - export const MallocNanoZone: string; + export const TMPDIR: string; + export const TERM_PROGRAM_VERSION: string; + export const ZDOTDIR: string; export const CURSOR_TRACE_ID: string; - export const NO_COLOR: string; + export const MallocNanoZone: string; export const npm_config_local_prefix: string; export const USER: string; export const COMMAND_MODE: string; export const SSH_AUTH_SOCK: string; + export const VSCODE_PROFILE_INITIALIZED: string; export const __CF_USER_TEXT_ENCODING: string; export const npm_execpath: string; export const PATH: string; export const npm_package_json: string; export const _: string; + export const USER_ZDOTDIR: string; export const __CFBundleIdentifier: string; export const npm_command: string; export const PWD: string; - export const VSCODE_HANDLES_UNCAUGHT_ERRORS: string; export const npm_lifecycle_event: string; - export const VSCODE_ESM_ENTRYPOINT: string; export const npm_package_name: string; - export const CURSOR_AGENT: string; export const LANG: string; + export const VSCODE_GIT_ASKPASS_EXTRA_ARGS: string; export const XPC_FLAGS: string; - export const FORCE_COLOR: string; export const npm_package_version: string; export const XPC_SERVICE_NAME: string; + export const VSCODE_INJECTION: string; export const SHLVL: string; export const HOME: string; - export const VSCODE_NLS_CONFIG: string; - export const CI: string; + export const VSCODE_GIT_ASKPASS_MAIN: string; export const HOMEBREW_PREFIX: string; export const LOGNAME: string; export const npm_lifecycle_script: string; - export const VSCODE_IPC_HOOK: string; - export const VSCODE_CODE_CACHE_PATH: string; + export const VSCODE_GIT_IPC_HANDLE: string; export const npm_config_user_agent: string; - export const VSCODE_PID: string; + export const VSCODE_GIT_ASKPASS_NODE: string; + export const GIT_ASKPASS: string; export const INFOPATH: string; export const HOMEBREW_CELLAR: string; export const OSLogRateLimit: string; - export const VSCODE_L10N_BUNDLE_LOCATION: string; - export const VSCODE_CWD: string; export const npm_node_execpath: string; + export const COLORTERM: string; export const NODE_ENV: string; } @@ -106,56 +104,54 @@ declare module '$env/static/public' { */ declare module '$env/dynamic/private' { export const env: { - _ZO_DOCTOR: string; - VSCODE_CRASH_REPORTER_PROCESS_TYPE: string; + VSCODE_GIT_IPC_AUTH_TOKEN: string; + TERM_PROGRAM: string; NODE: string; TERM: string; SHELL: string; - VSCODE_PROCESS_TITLE: string; - TMPDIR: string; HOMEBREW_REPOSITORY: string; - MallocNanoZone: string; + TMPDIR: string; + TERM_PROGRAM_VERSION: string; + ZDOTDIR: string; CURSOR_TRACE_ID: string; - NO_COLOR: string; + MallocNanoZone: string; npm_config_local_prefix: string; USER: string; COMMAND_MODE: string; SSH_AUTH_SOCK: string; + VSCODE_PROFILE_INITIALIZED: string; __CF_USER_TEXT_ENCODING: string; npm_execpath: string; PATH: string; npm_package_json: string; _: string; + USER_ZDOTDIR: string; __CFBundleIdentifier: string; npm_command: string; PWD: string; - VSCODE_HANDLES_UNCAUGHT_ERRORS: string; npm_lifecycle_event: string; - VSCODE_ESM_ENTRYPOINT: string; npm_package_name: string; - CURSOR_AGENT: string; LANG: string; + VSCODE_GIT_ASKPASS_EXTRA_ARGS: string; XPC_FLAGS: string; - FORCE_COLOR: string; npm_package_version: string; XPC_SERVICE_NAME: string; + VSCODE_INJECTION: string; SHLVL: string; HOME: string; - VSCODE_NLS_CONFIG: string; - CI: string; + VSCODE_GIT_ASKPASS_MAIN: string; HOMEBREW_PREFIX: string; LOGNAME: string; npm_lifecycle_script: string; - VSCODE_IPC_HOOK: string; - VSCODE_CODE_CACHE_PATH: string; + VSCODE_GIT_IPC_HANDLE: string; npm_config_user_agent: string; - VSCODE_PID: string; + VSCODE_GIT_ASKPASS_NODE: string; + GIT_ASKPASS: string; INFOPATH: string; HOMEBREW_CELLAR: string; OSLogRateLimit: string; - VSCODE_L10N_BUNDLE_LOCATION: string; - VSCODE_CWD: string; npm_node_execpath: string; + COLORTERM: string; NODE_ENV: string; [key: `PUBLIC_${string}`]: undefined; [key: `${string}`]: string | undefined; diff --git a/.svelte-kit/generated/server/internal.js b/.svelte-kit/generated/server/internal.js index df055e29..47ffc1c4 100644 --- a/.svelte-kit/generated/server/internal.js +++ b/.svelte-kit/generated/server/internal.js @@ -24,7 +24,7 @@ export const options = { app: ({ head, body, assets, nonce, env }) => "\n\n \n \n S\" />\n \n \n \n \n \n \n \n " + head + "\n \n \n
" + body + "
\n \n\n", error: ({ status, message }) => "\n\n\t\n\t\t\n\t\t" + message + "\n\n\t\t\n\t\n\t\n\t\t
\n\t\t\t" + status + "\n\t\t\t
\n\t\t\t\t

" + message + "

\n\t\t\t
\n\t\t
\n\t\n\n" }, - version_hash: "9vwupj" + version_hash: "16sw9ck" }; export async function get_hooks() { diff --git a/.svelte-kit/types/src/routes/login/proxy+page.server.ts b/.svelte-kit/types/src/routes/login/proxy+page.server.ts index 3130e095..8b464fb3 100644 --- a/.svelte-kit/types/src/routes/login/proxy+page.server.ts +++ b/.svelte-kit/types/src/routes/login/proxy+page.server.ts @@ -4,8 +4,8 @@ import type { Actions, PageServerLoad } from "./$types"; function safeRedirectTo(searchParams: URLSearchParams): string { const to = searchParams.get("redirectTo"); - if (!to || typeof to !== "string") return "/items"; - if (!to.startsWith("/") || to.startsWith("//")) return "/items"; + if (!to || typeof to !== "string") return "/"; + if (!to.startsWith("/") || to.startsWith("//")) return "/"; return to; } diff --git a/build/client/registerSW.js b/build/client/registerSW.js new file mode 100644 index 00000000..179c13c0 --- /dev/null +++ b/build/client/registerSW.js @@ -0,0 +1 @@ +if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('./sw.js', { scope: './' })})} \ No newline at end of file diff --git a/build/client/registerSW.js.br b/build/client/registerSW.js.br new file mode 100644 index 0000000000000000000000000000000000000000..92bb79fc6375a86e11fb45f4b9cbb6c2004ed79f GIT binary patch literal 90 zcmV-g0HyyMhX5dql&;o7>b6wZ_QBDRv^9kzXfU3q+|`{<4&1&SE)O^f11pzQ^OTif w0=fx*#x{bZ=PX3rW=Pt@?JhQke$ZjUm`Km5h(}};TmMgRBXM61L3g55D!h{_DF6Tf literal 0 HcmV?d00001 diff --git a/build/client/registerSW.js.gz b/build/client/registerSW.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..de8724fd95ef34ff2bcd9a849be370106971177c GIT binary patch literal 126 zcmV-^0D=D>iwFP!000026IINy3IZ_<0MK8_mKKiOF6idw?p&_%h)N?#X@}B(ms4h2vVS=CVQ%C5k{AiwNuLZ+PKu4c;&(t@U1E10wKcr0^>*MuOs9A g5EhVD@APzBV1RG>;S(UO2s6$&zsq)yS%?4t09`COjsO4v literal 0 HcmV?d00001 diff --git a/node_modules/.DS_Store b/node_modules/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8350b32f1c8e12a68be3fdade4db812a9539af44 GIT binary patch literal 6148 zcmeHL%SyvQ6uqNG#UgYgxDm4TweSz3)QzAB{eiyJ7FtuRf(SwcSFQw?f}o;nKf#6I z!nNPvZ+Py^SaOqw?xe`QFmsZbb0;S!lbNPOWHwKm>qI3Ynn7VK%%U0++|MNw6TW2u zXzUpK)ae|qR~k{bmtkvzI-m}Wn*;prPEkm8s-dLc-{-r7bbmK0m+PIVj&>{x@oMks zV;ii>$4t?o*6M&dpbiWi;PoLu zVGKRS4(-x`Y67R+Utr|Gami!gG4vQaw5j0PRG>>W{u9HvbhHOd2ZkPFhc2CrODE&6 zZ2T9Bu~$c4VCiH+hgz!x>VR}$(w&xg|KH00{+CI5rVgkB|H=VVC|AmxxFx^0W^Ru6 v+5n}B!oj@Qp-n;Mw_|(2TQUEyU;}*t9{@v-u|u>V^oM}8K`V9OPaXIHr4`D> literal 0 HcmV?d00001 diff --git a/node_modules/.vite/deps 4/chunk-HRPYXN4O.js b/node_modules/.vite/deps 4/chunk-HRPYXN4O.js new file mode 100644 index 00000000..b7cfe4ca --- /dev/null +++ b/node_modules/.vite/deps 4/chunk-HRPYXN4O.js @@ -0,0 +1,3101 @@ +// node_modules/tailwind-merge/dist/bundle-mjs.mjs +var concatArrays = (array1, array2) => { + const combinedArray = new Array(array1.length + array2.length); + for (let i = 0; i < array1.length; i++) { + combinedArray[i] = array1[i]; + } + for (let i = 0; i < array2.length; i++) { + combinedArray[array1.length + i] = array2[i]; + } + return combinedArray; +}; +var createClassValidatorObject = (classGroupId, validator) => ({ + classGroupId, + validator +}); +var createClassPartObject = (nextPart = /* @__PURE__ */ new Map(), validators2 = null, classGroupId) => ({ + nextPart, + validators: validators2, + classGroupId +}); +var CLASS_PART_SEPARATOR = "-"; +var EMPTY_CONFLICTS = []; +var ARBITRARY_PROPERTY_PREFIX = "arbitrary.."; +var createClassGroupUtils = (config) => { + const classMap = createClassMap(config); + const { + conflictingClassGroups, + conflictingClassGroupModifiers + } = config; + const getClassGroupId = (className) => { + if (className.startsWith("[") && className.endsWith("]")) { + return getGroupIdForArbitraryProperty(className); + } + const classParts = className.split(CLASS_PART_SEPARATOR); + const startIndex = classParts[0] === "" && classParts.length > 1 ? 1 : 0; + return getGroupRecursive(classParts, startIndex, classMap); + }; + const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => { + if (hasPostfixModifier) { + const modifierConflicts = conflictingClassGroupModifiers[classGroupId]; + const baseConflicts = conflictingClassGroups[classGroupId]; + if (modifierConflicts) { + if (baseConflicts) { + return concatArrays(baseConflicts, modifierConflicts); + } + return modifierConflicts; + } + return baseConflicts || EMPTY_CONFLICTS; + } + return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS; + }; + return { + getClassGroupId, + getConflictingClassGroupIds + }; +}; +var getGroupRecursive = (classParts, startIndex, classPartObject) => { + const classPathsLength = classParts.length - startIndex; + if (classPathsLength === 0) { + return classPartObject.classGroupId; + } + const currentClassPart = classParts[startIndex]; + const nextClassPartObject = classPartObject.nextPart.get(currentClassPart); + if (nextClassPartObject) { + const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject); + if (result) return result; + } + const validators2 = classPartObject.validators; + if (validators2 === null) { + return void 0; + } + const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR); + const validatorsLength = validators2.length; + for (let i = 0; i < validatorsLength; i++) { + const validatorObj = validators2[i]; + if (validatorObj.validator(classRest)) { + return validatorObj.classGroupId; + } + } + return void 0; +}; +var getGroupIdForArbitraryProperty = (className) => className.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => { + const content = className.slice(1, -1); + const colonIndex = content.indexOf(":"); + const property = content.slice(0, colonIndex); + return property ? ARBITRARY_PROPERTY_PREFIX + property : void 0; +})(); +var createClassMap = (config) => { + const { + theme, + classGroups + } = config; + return processClassGroups(classGroups, theme); +}; +var processClassGroups = (classGroups, theme) => { + const classMap = createClassPartObject(); + for (const classGroupId in classGroups) { + const group = classGroups[classGroupId]; + processClassesRecursively(group, classMap, classGroupId, theme); + } + return classMap; +}; +var processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => { + const len = classGroup.length; + for (let i = 0; i < len; i++) { + const classDefinition = classGroup[i]; + processClassDefinition(classDefinition, classPartObject, classGroupId, theme); + } +}; +var processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => { + if (typeof classDefinition === "string") { + processStringDefinition(classDefinition, classPartObject, classGroupId); + return; + } + if (typeof classDefinition === "function") { + processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme); + return; + } + processObjectDefinition(classDefinition, classPartObject, classGroupId, theme); +}; +var processStringDefinition = (classDefinition, classPartObject, classGroupId) => { + const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition); + classPartObjectToEdit.classGroupId = classGroupId; +}; +var processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => { + if (isThemeGetter(classDefinition)) { + processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme); + return; + } + if (classPartObject.validators === null) { + classPartObject.validators = []; + } + classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition)); +}; +var processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => { + const entries = Object.entries(classDefinition); + const len = entries.length; + for (let i = 0; i < len; i++) { + const [key, value] = entries[i]; + processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme); + } +}; +var getPart = (classPartObject, path) => { + let current = classPartObject; + const parts = path.split(CLASS_PART_SEPARATOR); + const len = parts.length; + for (let i = 0; i < len; i++) { + const part = parts[i]; + let next = current.nextPart.get(part); + if (!next) { + next = createClassPartObject(); + current.nextPart.set(part, next); + } + current = next; + } + return current; +}; +var isThemeGetter = (func) => "isThemeGetter" in func && func.isThemeGetter === true; +var createLruCache = (maxCacheSize) => { + if (maxCacheSize < 1) { + return { + get: () => void 0, + set: () => { + } + }; + } + let cacheSize = 0; + let cache = /* @__PURE__ */ Object.create(null); + let previousCache = /* @__PURE__ */ Object.create(null); + const update = (key, value) => { + cache[key] = value; + cacheSize++; + if (cacheSize > maxCacheSize) { + cacheSize = 0; + previousCache = cache; + cache = /* @__PURE__ */ Object.create(null); + } + }; + return { + get(key) { + let value = cache[key]; + if (value !== void 0) { + return value; + } + if ((value = previousCache[key]) !== void 0) { + update(key, value); + return value; + } + }, + set(key, value) { + if (key in cache) { + cache[key] = value; + } else { + update(key, value); + } + } + }; +}; +var IMPORTANT_MODIFIER = "!"; +var MODIFIER_SEPARATOR = ":"; +var EMPTY_MODIFIERS = []; +var createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({ + modifiers, + hasImportantModifier, + baseClassName, + maybePostfixModifierPosition, + isExternal +}); +var createParseClassName = (config) => { + const { + prefix, + experimentalParseClassName + } = config; + let parseClassName = (className) => { + const modifiers = []; + let bracketDepth = 0; + let parenDepth = 0; + let modifierStart = 0; + let postfixModifierPosition; + const len = className.length; + for (let index = 0; index < len; index++) { + const currentCharacter = className[index]; + if (bracketDepth === 0 && parenDepth === 0) { + if (currentCharacter === MODIFIER_SEPARATOR) { + modifiers.push(className.slice(modifierStart, index)); + modifierStart = index + 1; + continue; + } + if (currentCharacter === "/") { + postfixModifierPosition = index; + continue; + } + } + if (currentCharacter === "[") bracketDepth++; + else if (currentCharacter === "]") bracketDepth--; + else if (currentCharacter === "(") parenDepth++; + else if (currentCharacter === ")") parenDepth--; + } + const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart); + let baseClassName = baseClassNameWithImportantModifier; + let hasImportantModifier = false; + if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) { + baseClassName = baseClassNameWithImportantModifier.slice(0, -1); + hasImportantModifier = true; + } else if ( + /** + * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons. + * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864 + */ + baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER) + ) { + baseClassName = baseClassNameWithImportantModifier.slice(1); + hasImportantModifier = true; + } + const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0; + return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition); + }; + if (prefix) { + const fullPrefix = prefix + MODIFIER_SEPARATOR; + const parseClassNameOriginal = parseClassName; + parseClassName = (className) => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, void 0, true); + } + if (experimentalParseClassName) { + const parseClassNameOriginal = parseClassName; + parseClassName = (className) => experimentalParseClassName({ + className, + parseClassName: parseClassNameOriginal + }); + } + return parseClassName; +}; +var createSortModifiers = (config) => { + const modifierWeights = /* @__PURE__ */ new Map(); + config.orderSensitiveModifiers.forEach((mod, index) => { + modifierWeights.set(mod, 1e6 + index); + }); + return (modifiers) => { + const result = []; + let currentSegment = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i]; + const isArbitrary = modifier[0] === "["; + const isOrderSensitive = modifierWeights.has(modifier); + if (isArbitrary || isOrderSensitive) { + if (currentSegment.length > 0) { + currentSegment.sort(); + result.push(...currentSegment); + currentSegment = []; + } + result.push(modifier); + } else { + currentSegment.push(modifier); + } + } + if (currentSegment.length > 0) { + currentSegment.sort(); + result.push(...currentSegment); + } + return result; + }; +}; +var createConfigUtils = (config) => ({ + cache: createLruCache(config.cacheSize), + parseClassName: createParseClassName(config), + sortModifiers: createSortModifiers(config), + ...createClassGroupUtils(config) +}); +var SPLIT_CLASSES_REGEX = /\s+/; +var mergeClassList = (classList, configUtils) => { + const { + parseClassName, + getClassGroupId, + getConflictingClassGroupIds, + sortModifiers + } = configUtils; + const classGroupsInConflict = []; + const classNames = classList.trim().split(SPLIT_CLASSES_REGEX); + let result = ""; + for (let index = classNames.length - 1; index >= 0; index -= 1) { + const originalClassName = classNames[index]; + const { + isExternal, + modifiers, + hasImportantModifier, + baseClassName, + maybePostfixModifierPosition + } = parseClassName(originalClassName); + if (isExternal) { + result = originalClassName + (result.length > 0 ? " " + result : result); + continue; + } + let hasPostfixModifier = !!maybePostfixModifierPosition; + let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName); + if (!classGroupId) { + if (!hasPostfixModifier) { + result = originalClassName + (result.length > 0 ? " " + result : result); + continue; + } + classGroupId = getClassGroupId(baseClassName); + if (!classGroupId) { + result = originalClassName + (result.length > 0 ? " " + result : result); + continue; + } + hasPostfixModifier = false; + } + const variantModifier = modifiers.length === 0 ? "" : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(":"); + const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier; + const classId = modifierId + classGroupId; + if (classGroupsInConflict.indexOf(classId) > -1) { + continue; + } + classGroupsInConflict.push(classId); + const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier); + for (let i = 0; i < conflictGroups.length; ++i) { + const group = conflictGroups[i]; + classGroupsInConflict.push(modifierId + group); + } + result = originalClassName + (result.length > 0 ? " " + result : result); + } + return result; +}; +var twJoin = (...classLists) => { + let index = 0; + let argument; + let resolvedValue; + let string = ""; + while (index < classLists.length) { + if (argument = classLists[index++]) { + if (resolvedValue = toValue(argument)) { + string && (string += " "); + string += resolvedValue; + } + } + } + return string; +}; +var toValue = (mix) => { + if (typeof mix === "string") { + return mix; + } + let resolvedValue; + let string = ""; + for (let k = 0; k < mix.length; k++) { + if (mix[k]) { + if (resolvedValue = toValue(mix[k])) { + string && (string += " "); + string += resolvedValue; + } + } + } + return string; +}; +var createTailwindMerge = (createConfigFirst, ...createConfigRest) => { + let configUtils; + let cacheGet; + let cacheSet; + let functionToCall; + const initTailwindMerge = (classList) => { + const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst()); + configUtils = createConfigUtils(config); + cacheGet = configUtils.cache.get; + cacheSet = configUtils.cache.set; + functionToCall = tailwindMerge; + return tailwindMerge(classList); + }; + const tailwindMerge = (classList) => { + const cachedResult = cacheGet(classList); + if (cachedResult) { + return cachedResult; + } + const result = mergeClassList(classList, configUtils); + cacheSet(classList, result); + return result; + }; + functionToCall = initTailwindMerge; + return (...args) => functionToCall(twJoin(...args)); +}; +var fallbackThemeArr = []; +var fromTheme = (key) => { + const themeGetter = (theme) => theme[key] || fallbackThemeArr; + themeGetter.isThemeGetter = true; + return themeGetter; +}; +var arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i; +var arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i; +var fractionRegex = /^\d+\/\d+$/; +var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/; +var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/; +var colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/; +var shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/; +var imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/; +var isFraction = (value) => fractionRegex.test(value); +var isNumber = (value) => !!value && !Number.isNaN(Number(value)); +var isInteger = (value) => !!value && Number.isInteger(Number(value)); +var isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1)); +var isTshirtSize = (value) => tshirtUnitRegex.test(value); +var isAny = () => true; +var isLengthOnly = (value) => ( + // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths. + // For example, `hsl(0 0% 0%)` would be classified as a length without this check. + // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough. + lengthUnitRegex.test(value) && !colorFunctionRegex.test(value) +); +var isNever = () => false; +var isShadow = (value) => shadowRegex.test(value); +var isImage = (value) => imageRegex.test(value); +var isAnyNonArbitrary = (value) => !isArbitraryValue(value) && !isArbitraryVariable(value); +var isArbitrarySize = (value) => getIsArbitraryValue(value, isLabelSize, isNever); +var isArbitraryValue = (value) => arbitraryValueRegex.test(value); +var isArbitraryLength = (value) => getIsArbitraryValue(value, isLabelLength, isLengthOnly); +var isArbitraryNumber = (value) => getIsArbitraryValue(value, isLabelNumber, isNumber); +var isArbitraryWeight = (value) => getIsArbitraryValue(value, isLabelWeight, isAny); +var isArbitraryFamilyName = (value) => getIsArbitraryValue(value, isLabelFamilyName, isNever); +var isArbitraryPosition = (value) => getIsArbitraryValue(value, isLabelPosition, isNever); +var isArbitraryImage = (value) => getIsArbitraryValue(value, isLabelImage, isImage); +var isArbitraryShadow = (value) => getIsArbitraryValue(value, isLabelShadow, isShadow); +var isArbitraryVariable = (value) => arbitraryVariableRegex.test(value); +var isArbitraryVariableLength = (value) => getIsArbitraryVariable(value, isLabelLength); +var isArbitraryVariableFamilyName = (value) => getIsArbitraryVariable(value, isLabelFamilyName); +var isArbitraryVariablePosition = (value) => getIsArbitraryVariable(value, isLabelPosition); +var isArbitraryVariableSize = (value) => getIsArbitraryVariable(value, isLabelSize); +var isArbitraryVariableImage = (value) => getIsArbitraryVariable(value, isLabelImage); +var isArbitraryVariableShadow = (value) => getIsArbitraryVariable(value, isLabelShadow, true); +var isArbitraryVariableWeight = (value) => getIsArbitraryVariable(value, isLabelWeight, true); +var getIsArbitraryValue = (value, testLabel, testValue) => { + const result = arbitraryValueRegex.exec(value); + if (result) { + if (result[1]) { + return testLabel(result[1]); + } + return testValue(result[2]); + } + return false; +}; +var getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => { + const result = arbitraryVariableRegex.exec(value); + if (result) { + if (result[1]) { + return testLabel(result[1]); + } + return shouldMatchNoLabel; + } + return false; +}; +var isLabelPosition = (label) => label === "position" || label === "percentage"; +var isLabelImage = (label) => label === "image" || label === "url"; +var isLabelSize = (label) => label === "length" || label === "size" || label === "bg-size"; +var isLabelLength = (label) => label === "length"; +var isLabelNumber = (label) => label === "number"; +var isLabelFamilyName = (label) => label === "family-name"; +var isLabelWeight = (label) => label === "number" || label === "weight"; +var isLabelShadow = (label) => label === "shadow"; +var validators = Object.defineProperty({ + __proto__: null, + isAny, + isAnyNonArbitrary, + isArbitraryFamilyName, + isArbitraryImage, + isArbitraryLength, + isArbitraryNumber, + isArbitraryPosition, + isArbitraryShadow, + isArbitrarySize, + isArbitraryValue, + isArbitraryVariable, + isArbitraryVariableFamilyName, + isArbitraryVariableImage, + isArbitraryVariableLength, + isArbitraryVariablePosition, + isArbitraryVariableShadow, + isArbitraryVariableSize, + isArbitraryVariableWeight, + isArbitraryWeight, + isFraction, + isInteger, + isNumber, + isPercent, + isTshirtSize +}, Symbol.toStringTag, { + value: "Module" +}); +var getDefaultConfig = () => { + const themeColor = fromTheme("color"); + const themeFont = fromTheme("font"); + const themeText = fromTheme("text"); + const themeFontWeight = fromTheme("font-weight"); + const themeTracking = fromTheme("tracking"); + const themeLeading = fromTheme("leading"); + const themeBreakpoint = fromTheme("breakpoint"); + const themeContainer = fromTheme("container"); + const themeSpacing = fromTheme("spacing"); + const themeRadius = fromTheme("radius"); + const themeShadow = fromTheme("shadow"); + const themeInsetShadow = fromTheme("inset-shadow"); + const themeTextShadow = fromTheme("text-shadow"); + const themeDropShadow = fromTheme("drop-shadow"); + const themeBlur = fromTheme("blur"); + const themePerspective = fromTheme("perspective"); + const themeAspect = fromTheme("aspect"); + const themeEase = fromTheme("ease"); + const themeAnimate = fromTheme("animate"); + const scaleBreak = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"]; + const scalePosition = () => [ + "center", + "top", + "bottom", + "left", + "right", + "top-left", + // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 + "left-top", + "top-right", + // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 + "right-top", + "bottom-right", + // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 + "right-bottom", + "bottom-left", + // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 + "left-bottom" + ]; + const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue]; + const scaleOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"]; + const scaleOverscroll = () => ["auto", "contain", "none"]; + const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing]; + const scaleInset = () => [isFraction, "full", "auto", ...scaleUnambiguousSpacing()]; + const scaleGridTemplateColsRows = () => [isInteger, "none", "subgrid", isArbitraryVariable, isArbitraryValue]; + const scaleGridColRowStartAndEnd = () => ["auto", { + span: ["full", isInteger, isArbitraryVariable, isArbitraryValue] + }, isInteger, isArbitraryVariable, isArbitraryValue]; + const scaleGridColRowStartOrEnd = () => [isInteger, "auto", isArbitraryVariable, isArbitraryValue]; + const scaleGridAutoColsRows = () => ["auto", "min", "max", "fr", isArbitraryVariable, isArbitraryValue]; + const scaleAlignPrimaryAxis = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"]; + const scaleAlignSecondaryAxis = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"]; + const scaleMargin = () => ["auto", ...scaleUnambiguousSpacing()]; + const scaleSizing = () => [isFraction, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...scaleUnambiguousSpacing()]; + const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue]; + const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, { + position: [isArbitraryVariable, isArbitraryValue] + }]; + const scaleBgRepeat = () => ["no-repeat", { + repeat: ["", "x", "y", "space", "round"] + }]; + const scaleBgSize = () => ["auto", "cover", "contain", isArbitraryVariableSize, isArbitrarySize, { + size: [isArbitraryVariable, isArbitraryValue] + }]; + const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength]; + const scaleRadius = () => [ + // Deprecated since Tailwind CSS v4.0.0 + "", + "none", + "full", + themeRadius, + isArbitraryVariable, + isArbitraryValue + ]; + const scaleBorderWidth = () => ["", isNumber, isArbitraryVariableLength, isArbitraryLength]; + const scaleLineStyle = () => ["solid", "dashed", "dotted", "double"]; + const scaleBlendMode = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"]; + const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition]; + const scaleBlur = () => [ + // Deprecated since Tailwind CSS v4.0.0 + "", + "none", + themeBlur, + isArbitraryVariable, + isArbitraryValue + ]; + const scaleRotate = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue]; + const scaleScale = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue]; + const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue]; + const scaleTranslate = () => [isFraction, "full", ...scaleUnambiguousSpacing()]; + return { + cacheSize: 500, + theme: { + animate: ["spin", "ping", "pulse", "bounce"], + aspect: ["video"], + blur: [isTshirtSize], + breakpoint: [isTshirtSize], + color: [isAny], + container: [isTshirtSize], + "drop-shadow": [isTshirtSize], + ease: ["in", "out", "in-out"], + font: [isAnyNonArbitrary], + "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"], + "inset-shadow": [isTshirtSize], + leading: ["none", "tight", "snug", "normal", "relaxed", "loose"], + perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"], + radius: [isTshirtSize], + shadow: [isTshirtSize], + spacing: ["px", isNumber], + text: [isTshirtSize], + "text-shadow": [isTshirtSize], + tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"] + }, + classGroups: { + // -------------- + // --- Layout --- + // -------------- + /** + * Aspect Ratio + * @see https://tailwindcss.com/docs/aspect-ratio + */ + aspect: [{ + aspect: ["auto", "square", isFraction, isArbitraryValue, isArbitraryVariable, themeAspect] + }], + /** + * Container + * @see https://tailwindcss.com/docs/container + * @deprecated since Tailwind CSS v4.0.0 + */ + container: ["container"], + /** + * Columns + * @see https://tailwindcss.com/docs/columns + */ + columns: [{ + columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer] + }], + /** + * Break After + * @see https://tailwindcss.com/docs/break-after + */ + "break-after": [{ + "break-after": scaleBreak() + }], + /** + * Break Before + * @see https://tailwindcss.com/docs/break-before + */ + "break-before": [{ + "break-before": scaleBreak() + }], + /** + * Break Inside + * @see https://tailwindcss.com/docs/break-inside + */ + "break-inside": [{ + "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"] + }], + /** + * Box Decoration Break + * @see https://tailwindcss.com/docs/box-decoration-break + */ + "box-decoration": [{ + "box-decoration": ["slice", "clone"] + }], + /** + * Box Sizing + * @see https://tailwindcss.com/docs/box-sizing + */ + box: [{ + box: ["border", "content"] + }], + /** + * Display + * @see https://tailwindcss.com/docs/display + */ + display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"], + /** + * Screen Reader Only + * @see https://tailwindcss.com/docs/display#screen-reader-only + */ + sr: ["sr-only", "not-sr-only"], + /** + * Floats + * @see https://tailwindcss.com/docs/float + */ + float: [{ + float: ["right", "left", "none", "start", "end"] + }], + /** + * Clear + * @see https://tailwindcss.com/docs/clear + */ + clear: [{ + clear: ["left", "right", "both", "none", "start", "end"] + }], + /** + * Isolation + * @see https://tailwindcss.com/docs/isolation + */ + isolation: ["isolate", "isolation-auto"], + /** + * Object Fit + * @see https://tailwindcss.com/docs/object-fit + */ + "object-fit": [{ + object: ["contain", "cover", "fill", "none", "scale-down"] + }], + /** + * Object Position + * @see https://tailwindcss.com/docs/object-position + */ + "object-position": [{ + object: scalePositionWithArbitrary() + }], + /** + * Overflow + * @see https://tailwindcss.com/docs/overflow + */ + overflow: [{ + overflow: scaleOverflow() + }], + /** + * Overflow X + * @see https://tailwindcss.com/docs/overflow + */ + "overflow-x": [{ + "overflow-x": scaleOverflow() + }], + /** + * Overflow Y + * @see https://tailwindcss.com/docs/overflow + */ + "overflow-y": [{ + "overflow-y": scaleOverflow() + }], + /** + * Overscroll Behavior + * @see https://tailwindcss.com/docs/overscroll-behavior + */ + overscroll: [{ + overscroll: scaleOverscroll() + }], + /** + * Overscroll Behavior X + * @see https://tailwindcss.com/docs/overscroll-behavior + */ + "overscroll-x": [{ + "overscroll-x": scaleOverscroll() + }], + /** + * Overscroll Behavior Y + * @see https://tailwindcss.com/docs/overscroll-behavior + */ + "overscroll-y": [{ + "overscroll-y": scaleOverscroll() + }], + /** + * Position + * @see https://tailwindcss.com/docs/position + */ + position: ["static", "fixed", "absolute", "relative", "sticky"], + /** + * Top / Right / Bottom / Left + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + inset: [{ + inset: scaleInset() + }], + /** + * Right / Left + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + "inset-x": [{ + "inset-x": scaleInset() + }], + /** + * Top / Bottom + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + "inset-y": [{ + "inset-y": scaleInset() + }], + /** + * Start + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + start: [{ + start: scaleInset() + }], + /** + * End + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + end: [{ + end: scaleInset() + }], + /** + * Top + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + top: [{ + top: scaleInset() + }], + /** + * Right + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + right: [{ + right: scaleInset() + }], + /** + * Bottom + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + bottom: [{ + bottom: scaleInset() + }], + /** + * Left + * @see https://tailwindcss.com/docs/top-right-bottom-left + */ + left: [{ + left: scaleInset() + }], + /** + * Visibility + * @see https://tailwindcss.com/docs/visibility + */ + visibility: ["visible", "invisible", "collapse"], + /** + * Z-Index + * @see https://tailwindcss.com/docs/z-index + */ + z: [{ + z: [isInteger, "auto", isArbitraryVariable, isArbitraryValue] + }], + // ------------------------ + // --- Flexbox and Grid --- + // ------------------------ + /** + * Flex Basis + * @see https://tailwindcss.com/docs/flex-basis + */ + basis: [{ + basis: [isFraction, "full", "auto", themeContainer, ...scaleUnambiguousSpacing()] + }], + /** + * Flex Direction + * @see https://tailwindcss.com/docs/flex-direction + */ + "flex-direction": [{ + flex: ["row", "row-reverse", "col", "col-reverse"] + }], + /** + * Flex Wrap + * @see https://tailwindcss.com/docs/flex-wrap + */ + "flex-wrap": [{ + flex: ["nowrap", "wrap", "wrap-reverse"] + }], + /** + * Flex + * @see https://tailwindcss.com/docs/flex + */ + flex: [{ + flex: [isNumber, isFraction, "auto", "initial", "none", isArbitraryValue] + }], + /** + * Flex Grow + * @see https://tailwindcss.com/docs/flex-grow + */ + grow: [{ + grow: ["", isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Flex Shrink + * @see https://tailwindcss.com/docs/flex-shrink + */ + shrink: [{ + shrink: ["", isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Order + * @see https://tailwindcss.com/docs/order + */ + order: [{ + order: [isInteger, "first", "last", "none", isArbitraryVariable, isArbitraryValue] + }], + /** + * Grid Template Columns + * @see https://tailwindcss.com/docs/grid-template-columns + */ + "grid-cols": [{ + "grid-cols": scaleGridTemplateColsRows() + }], + /** + * Grid Column Start / End + * @see https://tailwindcss.com/docs/grid-column + */ + "col-start-end": [{ + col: scaleGridColRowStartAndEnd() + }], + /** + * Grid Column Start + * @see https://tailwindcss.com/docs/grid-column + */ + "col-start": [{ + "col-start": scaleGridColRowStartOrEnd() + }], + /** + * Grid Column End + * @see https://tailwindcss.com/docs/grid-column + */ + "col-end": [{ + "col-end": scaleGridColRowStartOrEnd() + }], + /** + * Grid Template Rows + * @see https://tailwindcss.com/docs/grid-template-rows + */ + "grid-rows": [{ + "grid-rows": scaleGridTemplateColsRows() + }], + /** + * Grid Row Start / End + * @see https://tailwindcss.com/docs/grid-row + */ + "row-start-end": [{ + row: scaleGridColRowStartAndEnd() + }], + /** + * Grid Row Start + * @see https://tailwindcss.com/docs/grid-row + */ + "row-start": [{ + "row-start": scaleGridColRowStartOrEnd() + }], + /** + * Grid Row End + * @see https://tailwindcss.com/docs/grid-row + */ + "row-end": [{ + "row-end": scaleGridColRowStartOrEnd() + }], + /** + * Grid Auto Flow + * @see https://tailwindcss.com/docs/grid-auto-flow + */ + "grid-flow": [{ + "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"] + }], + /** + * Grid Auto Columns + * @see https://tailwindcss.com/docs/grid-auto-columns + */ + "auto-cols": [{ + "auto-cols": scaleGridAutoColsRows() + }], + /** + * Grid Auto Rows + * @see https://tailwindcss.com/docs/grid-auto-rows + */ + "auto-rows": [{ + "auto-rows": scaleGridAutoColsRows() + }], + /** + * Gap + * @see https://tailwindcss.com/docs/gap + */ + gap: [{ + gap: scaleUnambiguousSpacing() + }], + /** + * Gap X + * @see https://tailwindcss.com/docs/gap + */ + "gap-x": [{ + "gap-x": scaleUnambiguousSpacing() + }], + /** + * Gap Y + * @see https://tailwindcss.com/docs/gap + */ + "gap-y": [{ + "gap-y": scaleUnambiguousSpacing() + }], + /** + * Justify Content + * @see https://tailwindcss.com/docs/justify-content + */ + "justify-content": [{ + justify: [...scaleAlignPrimaryAxis(), "normal"] + }], + /** + * Justify Items + * @see https://tailwindcss.com/docs/justify-items + */ + "justify-items": [{ + "justify-items": [...scaleAlignSecondaryAxis(), "normal"] + }], + /** + * Justify Self + * @see https://tailwindcss.com/docs/justify-self + */ + "justify-self": [{ + "justify-self": ["auto", ...scaleAlignSecondaryAxis()] + }], + /** + * Align Content + * @see https://tailwindcss.com/docs/align-content + */ + "align-content": [{ + content: ["normal", ...scaleAlignPrimaryAxis()] + }], + /** + * Align Items + * @see https://tailwindcss.com/docs/align-items + */ + "align-items": [{ + items: [...scaleAlignSecondaryAxis(), { + baseline: ["", "last"] + }] + }], + /** + * Align Self + * @see https://tailwindcss.com/docs/align-self + */ + "align-self": [{ + self: ["auto", ...scaleAlignSecondaryAxis(), { + baseline: ["", "last"] + }] + }], + /** + * Place Content + * @see https://tailwindcss.com/docs/place-content + */ + "place-content": [{ + "place-content": scaleAlignPrimaryAxis() + }], + /** + * Place Items + * @see https://tailwindcss.com/docs/place-items + */ + "place-items": [{ + "place-items": [...scaleAlignSecondaryAxis(), "baseline"] + }], + /** + * Place Self + * @see https://tailwindcss.com/docs/place-self + */ + "place-self": [{ + "place-self": ["auto", ...scaleAlignSecondaryAxis()] + }], + // Spacing + /** + * Padding + * @see https://tailwindcss.com/docs/padding + */ + p: [{ + p: scaleUnambiguousSpacing() + }], + /** + * Padding X + * @see https://tailwindcss.com/docs/padding + */ + px: [{ + px: scaleUnambiguousSpacing() + }], + /** + * Padding Y + * @see https://tailwindcss.com/docs/padding + */ + py: [{ + py: scaleUnambiguousSpacing() + }], + /** + * Padding Start + * @see https://tailwindcss.com/docs/padding + */ + ps: [{ + ps: scaleUnambiguousSpacing() + }], + /** + * Padding End + * @see https://tailwindcss.com/docs/padding + */ + pe: [{ + pe: scaleUnambiguousSpacing() + }], + /** + * Padding Top + * @see https://tailwindcss.com/docs/padding + */ + pt: [{ + pt: scaleUnambiguousSpacing() + }], + /** + * Padding Right + * @see https://tailwindcss.com/docs/padding + */ + pr: [{ + pr: scaleUnambiguousSpacing() + }], + /** + * Padding Bottom + * @see https://tailwindcss.com/docs/padding + */ + pb: [{ + pb: scaleUnambiguousSpacing() + }], + /** + * Padding Left + * @see https://tailwindcss.com/docs/padding + */ + pl: [{ + pl: scaleUnambiguousSpacing() + }], + /** + * Margin + * @see https://tailwindcss.com/docs/margin + */ + m: [{ + m: scaleMargin() + }], + /** + * Margin X + * @see https://tailwindcss.com/docs/margin + */ + mx: [{ + mx: scaleMargin() + }], + /** + * Margin Y + * @see https://tailwindcss.com/docs/margin + */ + my: [{ + my: scaleMargin() + }], + /** + * Margin Start + * @see https://tailwindcss.com/docs/margin + */ + ms: [{ + ms: scaleMargin() + }], + /** + * Margin End + * @see https://tailwindcss.com/docs/margin + */ + me: [{ + me: scaleMargin() + }], + /** + * Margin Top + * @see https://tailwindcss.com/docs/margin + */ + mt: [{ + mt: scaleMargin() + }], + /** + * Margin Right + * @see https://tailwindcss.com/docs/margin + */ + mr: [{ + mr: scaleMargin() + }], + /** + * Margin Bottom + * @see https://tailwindcss.com/docs/margin + */ + mb: [{ + mb: scaleMargin() + }], + /** + * Margin Left + * @see https://tailwindcss.com/docs/margin + */ + ml: [{ + ml: scaleMargin() + }], + /** + * Space Between X + * @see https://tailwindcss.com/docs/margin#adding-space-between-children + */ + "space-x": [{ + "space-x": scaleUnambiguousSpacing() + }], + /** + * Space Between X Reverse + * @see https://tailwindcss.com/docs/margin#adding-space-between-children + */ + "space-x-reverse": ["space-x-reverse"], + /** + * Space Between Y + * @see https://tailwindcss.com/docs/margin#adding-space-between-children + */ + "space-y": [{ + "space-y": scaleUnambiguousSpacing() + }], + /** + * Space Between Y Reverse + * @see https://tailwindcss.com/docs/margin#adding-space-between-children + */ + "space-y-reverse": ["space-y-reverse"], + // -------------- + // --- Sizing --- + // -------------- + /** + * Size + * @see https://tailwindcss.com/docs/width#setting-both-width-and-height + */ + size: [{ + size: scaleSizing() + }], + /** + * Width + * @see https://tailwindcss.com/docs/width + */ + w: [{ + w: [themeContainer, "screen", ...scaleSizing()] + }], + /** + * Min-Width + * @see https://tailwindcss.com/docs/min-width + */ + "min-w": [{ + "min-w": [ + themeContainer, + "screen", + /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ + "none", + ...scaleSizing() + ] + }], + /** + * Max-Width + * @see https://tailwindcss.com/docs/max-width + */ + "max-w": [{ + "max-w": [ + themeContainer, + "screen", + "none", + /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ + "prose", + /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ + { + screen: [themeBreakpoint] + }, + ...scaleSizing() + ] + }], + /** + * Height + * @see https://tailwindcss.com/docs/height + */ + h: [{ + h: ["screen", "lh", ...scaleSizing()] + }], + /** + * Min-Height + * @see https://tailwindcss.com/docs/min-height + */ + "min-h": [{ + "min-h": ["screen", "lh", "none", ...scaleSizing()] + }], + /** + * Max-Height + * @see https://tailwindcss.com/docs/max-height + */ + "max-h": [{ + "max-h": ["screen", "lh", ...scaleSizing()] + }], + // ------------------ + // --- Typography --- + // ------------------ + /** + * Font Size + * @see https://tailwindcss.com/docs/font-size + */ + "font-size": [{ + text: ["base", themeText, isArbitraryVariableLength, isArbitraryLength] + }], + /** + * Font Smoothing + * @see https://tailwindcss.com/docs/font-smoothing + */ + "font-smoothing": ["antialiased", "subpixel-antialiased"], + /** + * Font Style + * @see https://tailwindcss.com/docs/font-style + */ + "font-style": ["italic", "not-italic"], + /** + * Font Weight + * @see https://tailwindcss.com/docs/font-weight + */ + "font-weight": [{ + font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight] + }], + /** + * Font Stretch + * @see https://tailwindcss.com/docs/font-stretch + */ + "font-stretch": [{ + "font-stretch": ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", isPercent, isArbitraryValue] + }], + /** + * Font Family + * @see https://tailwindcss.com/docs/font-family + */ + "font-family": [{ + font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont] + }], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + "fvn-normal": ["normal-nums"], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + "fvn-ordinal": ["ordinal"], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + "fvn-slashed-zero": ["slashed-zero"], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + "fvn-figure": ["lining-nums", "oldstyle-nums"], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + "fvn-spacing": ["proportional-nums", "tabular-nums"], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + "fvn-fraction": ["diagonal-fractions", "stacked-fractions"], + /** + * Letter Spacing + * @see https://tailwindcss.com/docs/letter-spacing + */ + tracking: [{ + tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] + }], + /** + * Line Clamp + * @see https://tailwindcss.com/docs/line-clamp + */ + "line-clamp": [{ + "line-clamp": [isNumber, "none", isArbitraryVariable, isArbitraryNumber] + }], + /** + * Line Height + * @see https://tailwindcss.com/docs/line-height + */ + leading: [{ + leading: [ + /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ + themeLeading, + ...scaleUnambiguousSpacing() + ] + }], + /** + * List Style Image + * @see https://tailwindcss.com/docs/list-style-image + */ + "list-image": [{ + "list-image": ["none", isArbitraryVariable, isArbitraryValue] + }], + /** + * List Style Position + * @see https://tailwindcss.com/docs/list-style-position + */ + "list-style-position": [{ + list: ["inside", "outside"] + }], + /** + * List Style Type + * @see https://tailwindcss.com/docs/list-style-type + */ + "list-style-type": [{ + list: ["disc", "decimal", "none", isArbitraryVariable, isArbitraryValue] + }], + /** + * Text Alignment + * @see https://tailwindcss.com/docs/text-align + */ + "text-alignment": [{ + text: ["left", "center", "right", "justify", "start", "end"] + }], + /** + * Placeholder Color + * @deprecated since Tailwind CSS v3.0.0 + * @see https://v3.tailwindcss.com/docs/placeholder-color + */ + "placeholder-color": [{ + placeholder: scaleColor() + }], + /** + * Text Color + * @see https://tailwindcss.com/docs/text-color + */ + "text-color": [{ + text: scaleColor() + }], + /** + * Text Decoration + * @see https://tailwindcss.com/docs/text-decoration + */ + "text-decoration": ["underline", "overline", "line-through", "no-underline"], + /** + * Text Decoration Style + * @see https://tailwindcss.com/docs/text-decoration-style + */ + "text-decoration-style": [{ + decoration: [...scaleLineStyle(), "wavy"] + }], + /** + * Text Decoration Thickness + * @see https://tailwindcss.com/docs/text-decoration-thickness + */ + "text-decoration-thickness": [{ + decoration: [isNumber, "from-font", "auto", isArbitraryVariable, isArbitraryLength] + }], + /** + * Text Decoration Color + * @see https://tailwindcss.com/docs/text-decoration-color + */ + "text-decoration-color": [{ + decoration: scaleColor() + }], + /** + * Text Underline Offset + * @see https://tailwindcss.com/docs/text-underline-offset + */ + "underline-offset": [{ + "underline-offset": [isNumber, "auto", isArbitraryVariable, isArbitraryValue] + }], + /** + * Text Transform + * @see https://tailwindcss.com/docs/text-transform + */ + "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"], + /** + * Text Overflow + * @see https://tailwindcss.com/docs/text-overflow + */ + "text-overflow": ["truncate", "text-ellipsis", "text-clip"], + /** + * Text Wrap + * @see https://tailwindcss.com/docs/text-wrap + */ + "text-wrap": [{ + text: ["wrap", "nowrap", "balance", "pretty"] + }], + /** + * Text Indent + * @see https://tailwindcss.com/docs/text-indent + */ + indent: [{ + indent: scaleUnambiguousSpacing() + }], + /** + * Vertical Alignment + * @see https://tailwindcss.com/docs/vertical-align + */ + "vertical-align": [{ + align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryVariable, isArbitraryValue] + }], + /** + * Whitespace + * @see https://tailwindcss.com/docs/whitespace + */ + whitespace: [{ + whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"] + }], + /** + * Word Break + * @see https://tailwindcss.com/docs/word-break + */ + break: [{ + break: ["normal", "words", "all", "keep"] + }], + /** + * Overflow Wrap + * @see https://tailwindcss.com/docs/overflow-wrap + */ + wrap: [{ + wrap: ["break-word", "anywhere", "normal"] + }], + /** + * Hyphens + * @see https://tailwindcss.com/docs/hyphens + */ + hyphens: [{ + hyphens: ["none", "manual", "auto"] + }], + /** + * Content + * @see https://tailwindcss.com/docs/content + */ + content: [{ + content: ["none", isArbitraryVariable, isArbitraryValue] + }], + // ------------------- + // --- Backgrounds --- + // ------------------- + /** + * Background Attachment + * @see https://tailwindcss.com/docs/background-attachment + */ + "bg-attachment": [{ + bg: ["fixed", "local", "scroll"] + }], + /** + * Background Clip + * @see https://tailwindcss.com/docs/background-clip + */ + "bg-clip": [{ + "bg-clip": ["border", "padding", "content", "text"] + }], + /** + * Background Origin + * @see https://tailwindcss.com/docs/background-origin + */ + "bg-origin": [{ + "bg-origin": ["border", "padding", "content"] + }], + /** + * Background Position + * @see https://tailwindcss.com/docs/background-position + */ + "bg-position": [{ + bg: scaleBgPosition() + }], + /** + * Background Repeat + * @see https://tailwindcss.com/docs/background-repeat + */ + "bg-repeat": [{ + bg: scaleBgRepeat() + }], + /** + * Background Size + * @see https://tailwindcss.com/docs/background-size + */ + "bg-size": [{ + bg: scaleBgSize() + }], + /** + * Background Image + * @see https://tailwindcss.com/docs/background-image + */ + "bg-image": [{ + bg: ["none", { + linear: [{ + to: ["t", "tr", "r", "br", "b", "bl", "l", "tl"] + }, isInteger, isArbitraryVariable, isArbitraryValue], + radial: ["", isArbitraryVariable, isArbitraryValue], + conic: [isInteger, isArbitraryVariable, isArbitraryValue] + }, isArbitraryVariableImage, isArbitraryImage] + }], + /** + * Background Color + * @see https://tailwindcss.com/docs/background-color + */ + "bg-color": [{ + bg: scaleColor() + }], + /** + * Gradient Color Stops From Position + * @see https://tailwindcss.com/docs/gradient-color-stops + */ + "gradient-from-pos": [{ + from: scaleGradientStopPosition() + }], + /** + * Gradient Color Stops Via Position + * @see https://tailwindcss.com/docs/gradient-color-stops + */ + "gradient-via-pos": [{ + via: scaleGradientStopPosition() + }], + /** + * Gradient Color Stops To Position + * @see https://tailwindcss.com/docs/gradient-color-stops + */ + "gradient-to-pos": [{ + to: scaleGradientStopPosition() + }], + /** + * Gradient Color Stops From + * @see https://tailwindcss.com/docs/gradient-color-stops + */ + "gradient-from": [{ + from: scaleColor() + }], + /** + * Gradient Color Stops Via + * @see https://tailwindcss.com/docs/gradient-color-stops + */ + "gradient-via": [{ + via: scaleColor() + }], + /** + * Gradient Color Stops To + * @see https://tailwindcss.com/docs/gradient-color-stops + */ + "gradient-to": [{ + to: scaleColor() + }], + // --------------- + // --- Borders --- + // --------------- + /** + * Border Radius + * @see https://tailwindcss.com/docs/border-radius + */ + rounded: [{ + rounded: scaleRadius() + }], + /** + * Border Radius Start + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-s": [{ + "rounded-s": scaleRadius() + }], + /** + * Border Radius End + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-e": [{ + "rounded-e": scaleRadius() + }], + /** + * Border Radius Top + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-t": [{ + "rounded-t": scaleRadius() + }], + /** + * Border Radius Right + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-r": [{ + "rounded-r": scaleRadius() + }], + /** + * Border Radius Bottom + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-b": [{ + "rounded-b": scaleRadius() + }], + /** + * Border Radius Left + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-l": [{ + "rounded-l": scaleRadius() + }], + /** + * Border Radius Start Start + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-ss": [{ + "rounded-ss": scaleRadius() + }], + /** + * Border Radius Start End + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-se": [{ + "rounded-se": scaleRadius() + }], + /** + * Border Radius End End + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-ee": [{ + "rounded-ee": scaleRadius() + }], + /** + * Border Radius End Start + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-es": [{ + "rounded-es": scaleRadius() + }], + /** + * Border Radius Top Left + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-tl": [{ + "rounded-tl": scaleRadius() + }], + /** + * Border Radius Top Right + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-tr": [{ + "rounded-tr": scaleRadius() + }], + /** + * Border Radius Bottom Right + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-br": [{ + "rounded-br": scaleRadius() + }], + /** + * Border Radius Bottom Left + * @see https://tailwindcss.com/docs/border-radius + */ + "rounded-bl": [{ + "rounded-bl": scaleRadius() + }], + /** + * Border Width + * @see https://tailwindcss.com/docs/border-width + */ + "border-w": [{ + border: scaleBorderWidth() + }], + /** + * Border Width X + * @see https://tailwindcss.com/docs/border-width + */ + "border-w-x": [{ + "border-x": scaleBorderWidth() + }], + /** + * Border Width Y + * @see https://tailwindcss.com/docs/border-width + */ + "border-w-y": [{ + "border-y": scaleBorderWidth() + }], + /** + * Border Width Start + * @see https://tailwindcss.com/docs/border-width + */ + "border-w-s": [{ + "border-s": scaleBorderWidth() + }], + /** + * Border Width End + * @see https://tailwindcss.com/docs/border-width + */ + "border-w-e": [{ + "border-e": scaleBorderWidth() + }], + /** + * Border Width Top + * @see https://tailwindcss.com/docs/border-width + */ + "border-w-t": [{ + "border-t": scaleBorderWidth() + }], + /** + * Border Width Right + * @see https://tailwindcss.com/docs/border-width + */ + "border-w-r": [{ + "border-r": scaleBorderWidth() + }], + /** + * Border Width Bottom + * @see https://tailwindcss.com/docs/border-width + */ + "border-w-b": [{ + "border-b": scaleBorderWidth() + }], + /** + * Border Width Left + * @see https://tailwindcss.com/docs/border-width + */ + "border-w-l": [{ + "border-l": scaleBorderWidth() + }], + /** + * Divide Width X + * @see https://tailwindcss.com/docs/border-width#between-children + */ + "divide-x": [{ + "divide-x": scaleBorderWidth() + }], + /** + * Divide Width X Reverse + * @see https://tailwindcss.com/docs/border-width#between-children + */ + "divide-x-reverse": ["divide-x-reverse"], + /** + * Divide Width Y + * @see https://tailwindcss.com/docs/border-width#between-children + */ + "divide-y": [{ + "divide-y": scaleBorderWidth() + }], + /** + * Divide Width Y Reverse + * @see https://tailwindcss.com/docs/border-width#between-children + */ + "divide-y-reverse": ["divide-y-reverse"], + /** + * Border Style + * @see https://tailwindcss.com/docs/border-style + */ + "border-style": [{ + border: [...scaleLineStyle(), "hidden", "none"] + }], + /** + * Divide Style + * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style + */ + "divide-style": [{ + divide: [...scaleLineStyle(), "hidden", "none"] + }], + /** + * Border Color + * @see https://tailwindcss.com/docs/border-color + */ + "border-color": [{ + border: scaleColor() + }], + /** + * Border Color X + * @see https://tailwindcss.com/docs/border-color + */ + "border-color-x": [{ + "border-x": scaleColor() + }], + /** + * Border Color Y + * @see https://tailwindcss.com/docs/border-color + */ + "border-color-y": [{ + "border-y": scaleColor() + }], + /** + * Border Color S + * @see https://tailwindcss.com/docs/border-color + */ + "border-color-s": [{ + "border-s": scaleColor() + }], + /** + * Border Color E + * @see https://tailwindcss.com/docs/border-color + */ + "border-color-e": [{ + "border-e": scaleColor() + }], + /** + * Border Color Top + * @see https://tailwindcss.com/docs/border-color + */ + "border-color-t": [{ + "border-t": scaleColor() + }], + /** + * Border Color Right + * @see https://tailwindcss.com/docs/border-color + */ + "border-color-r": [{ + "border-r": scaleColor() + }], + /** + * Border Color Bottom + * @see https://tailwindcss.com/docs/border-color + */ + "border-color-b": [{ + "border-b": scaleColor() + }], + /** + * Border Color Left + * @see https://tailwindcss.com/docs/border-color + */ + "border-color-l": [{ + "border-l": scaleColor() + }], + /** + * Divide Color + * @see https://tailwindcss.com/docs/divide-color + */ + "divide-color": [{ + divide: scaleColor() + }], + /** + * Outline Style + * @see https://tailwindcss.com/docs/outline-style + */ + "outline-style": [{ + outline: [...scaleLineStyle(), "none", "hidden"] + }], + /** + * Outline Offset + * @see https://tailwindcss.com/docs/outline-offset + */ + "outline-offset": [{ + "outline-offset": [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Outline Width + * @see https://tailwindcss.com/docs/outline-width + */ + "outline-w": [{ + outline: ["", isNumber, isArbitraryVariableLength, isArbitraryLength] + }], + /** + * Outline Color + * @see https://tailwindcss.com/docs/outline-color + */ + "outline-color": [{ + outline: scaleColor() + }], + // --------------- + // --- Effects --- + // --------------- + /** + * Box Shadow + * @see https://tailwindcss.com/docs/box-shadow + */ + shadow: [{ + shadow: [ + // Deprecated since Tailwind CSS v4.0.0 + "", + "none", + themeShadow, + isArbitraryVariableShadow, + isArbitraryShadow + ] + }], + /** + * Box Shadow Color + * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color + */ + "shadow-color": [{ + shadow: scaleColor() + }], + /** + * Inset Box Shadow + * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow + */ + "inset-shadow": [{ + "inset-shadow": ["none", themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow] + }], + /** + * Inset Box Shadow Color + * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color + */ + "inset-shadow-color": [{ + "inset-shadow": scaleColor() + }], + /** + * Ring Width + * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring + */ + "ring-w": [{ + ring: scaleBorderWidth() + }], + /** + * Ring Width Inset + * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings + * @deprecated since Tailwind CSS v4.0.0 + * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158 + */ + "ring-w-inset": ["ring-inset"], + /** + * Ring Color + * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color + */ + "ring-color": [{ + ring: scaleColor() + }], + /** + * Ring Offset Width + * @see https://v3.tailwindcss.com/docs/ring-offset-width + * @deprecated since Tailwind CSS v4.0.0 + * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158 + */ + "ring-offset-w": [{ + "ring-offset": [isNumber, isArbitraryLength] + }], + /** + * Ring Offset Color + * @see https://v3.tailwindcss.com/docs/ring-offset-color + * @deprecated since Tailwind CSS v4.0.0 + * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158 + */ + "ring-offset-color": [{ + "ring-offset": scaleColor() + }], + /** + * Inset Ring Width + * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring + */ + "inset-ring-w": [{ + "inset-ring": scaleBorderWidth() + }], + /** + * Inset Ring Color + * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color + */ + "inset-ring-color": [{ + "inset-ring": scaleColor() + }], + /** + * Text Shadow + * @see https://tailwindcss.com/docs/text-shadow + */ + "text-shadow": [{ + "text-shadow": ["none", themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow] + }], + /** + * Text Shadow Color + * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color + */ + "text-shadow-color": [{ + "text-shadow": scaleColor() + }], + /** + * Opacity + * @see https://tailwindcss.com/docs/opacity + */ + opacity: [{ + opacity: [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Mix Blend Mode + * @see https://tailwindcss.com/docs/mix-blend-mode + */ + "mix-blend": [{ + "mix-blend": [...scaleBlendMode(), "plus-darker", "plus-lighter"] + }], + /** + * Background Blend Mode + * @see https://tailwindcss.com/docs/background-blend-mode + */ + "bg-blend": [{ + "bg-blend": scaleBlendMode() + }], + /** + * Mask Clip + * @see https://tailwindcss.com/docs/mask-clip + */ + "mask-clip": [{ + "mask-clip": ["border", "padding", "content", "fill", "stroke", "view"] + }, "mask-no-clip"], + /** + * Mask Composite + * @see https://tailwindcss.com/docs/mask-composite + */ + "mask-composite": [{ + mask: ["add", "subtract", "intersect", "exclude"] + }], + /** + * Mask Image + * @see https://tailwindcss.com/docs/mask-image + */ + "mask-image-linear-pos": [{ + "mask-linear": [isNumber] + }], + "mask-image-linear-from-pos": [{ + "mask-linear-from": scaleMaskImagePosition() + }], + "mask-image-linear-to-pos": [{ + "mask-linear-to": scaleMaskImagePosition() + }], + "mask-image-linear-from-color": [{ + "mask-linear-from": scaleColor() + }], + "mask-image-linear-to-color": [{ + "mask-linear-to": scaleColor() + }], + "mask-image-t-from-pos": [{ + "mask-t-from": scaleMaskImagePosition() + }], + "mask-image-t-to-pos": [{ + "mask-t-to": scaleMaskImagePosition() + }], + "mask-image-t-from-color": [{ + "mask-t-from": scaleColor() + }], + "mask-image-t-to-color": [{ + "mask-t-to": scaleColor() + }], + "mask-image-r-from-pos": [{ + "mask-r-from": scaleMaskImagePosition() + }], + "mask-image-r-to-pos": [{ + "mask-r-to": scaleMaskImagePosition() + }], + "mask-image-r-from-color": [{ + "mask-r-from": scaleColor() + }], + "mask-image-r-to-color": [{ + "mask-r-to": scaleColor() + }], + "mask-image-b-from-pos": [{ + "mask-b-from": scaleMaskImagePosition() + }], + "mask-image-b-to-pos": [{ + "mask-b-to": scaleMaskImagePosition() + }], + "mask-image-b-from-color": [{ + "mask-b-from": scaleColor() + }], + "mask-image-b-to-color": [{ + "mask-b-to": scaleColor() + }], + "mask-image-l-from-pos": [{ + "mask-l-from": scaleMaskImagePosition() + }], + "mask-image-l-to-pos": [{ + "mask-l-to": scaleMaskImagePosition() + }], + "mask-image-l-from-color": [{ + "mask-l-from": scaleColor() + }], + "mask-image-l-to-color": [{ + "mask-l-to": scaleColor() + }], + "mask-image-x-from-pos": [{ + "mask-x-from": scaleMaskImagePosition() + }], + "mask-image-x-to-pos": [{ + "mask-x-to": scaleMaskImagePosition() + }], + "mask-image-x-from-color": [{ + "mask-x-from": scaleColor() + }], + "mask-image-x-to-color": [{ + "mask-x-to": scaleColor() + }], + "mask-image-y-from-pos": [{ + "mask-y-from": scaleMaskImagePosition() + }], + "mask-image-y-to-pos": [{ + "mask-y-to": scaleMaskImagePosition() + }], + "mask-image-y-from-color": [{ + "mask-y-from": scaleColor() + }], + "mask-image-y-to-color": [{ + "mask-y-to": scaleColor() + }], + "mask-image-radial": [{ + "mask-radial": [isArbitraryVariable, isArbitraryValue] + }], + "mask-image-radial-from-pos": [{ + "mask-radial-from": scaleMaskImagePosition() + }], + "mask-image-radial-to-pos": [{ + "mask-radial-to": scaleMaskImagePosition() + }], + "mask-image-radial-from-color": [{ + "mask-radial-from": scaleColor() + }], + "mask-image-radial-to-color": [{ + "mask-radial-to": scaleColor() + }], + "mask-image-radial-shape": [{ + "mask-radial": ["circle", "ellipse"] + }], + "mask-image-radial-size": [{ + "mask-radial": [{ + closest: ["side", "corner"], + farthest: ["side", "corner"] + }] + }], + "mask-image-radial-pos": [{ + "mask-radial-at": scalePosition() + }], + "mask-image-conic-pos": [{ + "mask-conic": [isNumber] + }], + "mask-image-conic-from-pos": [{ + "mask-conic-from": scaleMaskImagePosition() + }], + "mask-image-conic-to-pos": [{ + "mask-conic-to": scaleMaskImagePosition() + }], + "mask-image-conic-from-color": [{ + "mask-conic-from": scaleColor() + }], + "mask-image-conic-to-color": [{ + "mask-conic-to": scaleColor() + }], + /** + * Mask Mode + * @see https://tailwindcss.com/docs/mask-mode + */ + "mask-mode": [{ + mask: ["alpha", "luminance", "match"] + }], + /** + * Mask Origin + * @see https://tailwindcss.com/docs/mask-origin + */ + "mask-origin": [{ + "mask-origin": ["border", "padding", "content", "fill", "stroke", "view"] + }], + /** + * Mask Position + * @see https://tailwindcss.com/docs/mask-position + */ + "mask-position": [{ + mask: scaleBgPosition() + }], + /** + * Mask Repeat + * @see https://tailwindcss.com/docs/mask-repeat + */ + "mask-repeat": [{ + mask: scaleBgRepeat() + }], + /** + * Mask Size + * @see https://tailwindcss.com/docs/mask-size + */ + "mask-size": [{ + mask: scaleBgSize() + }], + /** + * Mask Type + * @see https://tailwindcss.com/docs/mask-type + */ + "mask-type": [{ + "mask-type": ["alpha", "luminance"] + }], + /** + * Mask Image + * @see https://tailwindcss.com/docs/mask-image + */ + "mask-image": [{ + mask: ["none", isArbitraryVariable, isArbitraryValue] + }], + // --------------- + // --- Filters --- + // --------------- + /** + * Filter + * @see https://tailwindcss.com/docs/filter + */ + filter: [{ + filter: [ + // Deprecated since Tailwind CSS v3.0.0 + "", + "none", + isArbitraryVariable, + isArbitraryValue + ] + }], + /** + * Blur + * @see https://tailwindcss.com/docs/blur + */ + blur: [{ + blur: scaleBlur() + }], + /** + * Brightness + * @see https://tailwindcss.com/docs/brightness + */ + brightness: [{ + brightness: [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Contrast + * @see https://tailwindcss.com/docs/contrast + */ + contrast: [{ + contrast: [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Drop Shadow + * @see https://tailwindcss.com/docs/drop-shadow + */ + "drop-shadow": [{ + "drop-shadow": [ + // Deprecated since Tailwind CSS v4.0.0 + "", + "none", + themeDropShadow, + isArbitraryVariableShadow, + isArbitraryShadow + ] + }], + /** + * Drop Shadow Color + * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color + */ + "drop-shadow-color": [{ + "drop-shadow": scaleColor() + }], + /** + * Grayscale + * @see https://tailwindcss.com/docs/grayscale + */ + grayscale: [{ + grayscale: ["", isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Hue Rotate + * @see https://tailwindcss.com/docs/hue-rotate + */ + "hue-rotate": [{ + "hue-rotate": [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Invert + * @see https://tailwindcss.com/docs/invert + */ + invert: [{ + invert: ["", isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Saturate + * @see https://tailwindcss.com/docs/saturate + */ + saturate: [{ + saturate: [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Sepia + * @see https://tailwindcss.com/docs/sepia + */ + sepia: [{ + sepia: ["", isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Backdrop Filter + * @see https://tailwindcss.com/docs/backdrop-filter + */ + "backdrop-filter": [{ + "backdrop-filter": [ + // Deprecated since Tailwind CSS v3.0.0 + "", + "none", + isArbitraryVariable, + isArbitraryValue + ] + }], + /** + * Backdrop Blur + * @see https://tailwindcss.com/docs/backdrop-blur + */ + "backdrop-blur": [{ + "backdrop-blur": scaleBlur() + }], + /** + * Backdrop Brightness + * @see https://tailwindcss.com/docs/backdrop-brightness + */ + "backdrop-brightness": [{ + "backdrop-brightness": [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Backdrop Contrast + * @see https://tailwindcss.com/docs/backdrop-contrast + */ + "backdrop-contrast": [{ + "backdrop-contrast": [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Backdrop Grayscale + * @see https://tailwindcss.com/docs/backdrop-grayscale + */ + "backdrop-grayscale": [{ + "backdrop-grayscale": ["", isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Backdrop Hue Rotate + * @see https://tailwindcss.com/docs/backdrop-hue-rotate + */ + "backdrop-hue-rotate": [{ + "backdrop-hue-rotate": [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Backdrop Invert + * @see https://tailwindcss.com/docs/backdrop-invert + */ + "backdrop-invert": [{ + "backdrop-invert": ["", isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Backdrop Opacity + * @see https://tailwindcss.com/docs/backdrop-opacity + */ + "backdrop-opacity": [{ + "backdrop-opacity": [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Backdrop Saturate + * @see https://tailwindcss.com/docs/backdrop-saturate + */ + "backdrop-saturate": [{ + "backdrop-saturate": [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Backdrop Sepia + * @see https://tailwindcss.com/docs/backdrop-sepia + */ + "backdrop-sepia": [{ + "backdrop-sepia": ["", isNumber, isArbitraryVariable, isArbitraryValue] + }], + // -------------- + // --- Tables --- + // -------------- + /** + * Border Collapse + * @see https://tailwindcss.com/docs/border-collapse + */ + "border-collapse": [{ + border: ["collapse", "separate"] + }], + /** + * Border Spacing + * @see https://tailwindcss.com/docs/border-spacing + */ + "border-spacing": [{ + "border-spacing": scaleUnambiguousSpacing() + }], + /** + * Border Spacing X + * @see https://tailwindcss.com/docs/border-spacing + */ + "border-spacing-x": [{ + "border-spacing-x": scaleUnambiguousSpacing() + }], + /** + * Border Spacing Y + * @see https://tailwindcss.com/docs/border-spacing + */ + "border-spacing-y": [{ + "border-spacing-y": scaleUnambiguousSpacing() + }], + /** + * Table Layout + * @see https://tailwindcss.com/docs/table-layout + */ + "table-layout": [{ + table: ["auto", "fixed"] + }], + /** + * Caption Side + * @see https://tailwindcss.com/docs/caption-side + */ + caption: [{ + caption: ["top", "bottom"] + }], + // --------------------------------- + // --- Transitions and Animation --- + // --------------------------------- + /** + * Transition Property + * @see https://tailwindcss.com/docs/transition-property + */ + transition: [{ + transition: ["", "all", "colors", "opacity", "shadow", "transform", "none", isArbitraryVariable, isArbitraryValue] + }], + /** + * Transition Behavior + * @see https://tailwindcss.com/docs/transition-behavior + */ + "transition-behavior": [{ + transition: ["normal", "discrete"] + }], + /** + * Transition Duration + * @see https://tailwindcss.com/docs/transition-duration + */ + duration: [{ + duration: [isNumber, "initial", isArbitraryVariable, isArbitraryValue] + }], + /** + * Transition Timing Function + * @see https://tailwindcss.com/docs/transition-timing-function + */ + ease: [{ + ease: ["linear", "initial", themeEase, isArbitraryVariable, isArbitraryValue] + }], + /** + * Transition Delay + * @see https://tailwindcss.com/docs/transition-delay + */ + delay: [{ + delay: [isNumber, isArbitraryVariable, isArbitraryValue] + }], + /** + * Animation + * @see https://tailwindcss.com/docs/animation + */ + animate: [{ + animate: ["none", themeAnimate, isArbitraryVariable, isArbitraryValue] + }], + // ------------------ + // --- Transforms --- + // ------------------ + /** + * Backface Visibility + * @see https://tailwindcss.com/docs/backface-visibility + */ + backface: [{ + backface: ["hidden", "visible"] + }], + /** + * Perspective + * @see https://tailwindcss.com/docs/perspective + */ + perspective: [{ + perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] + }], + /** + * Perspective Origin + * @see https://tailwindcss.com/docs/perspective-origin + */ + "perspective-origin": [{ + "perspective-origin": scalePositionWithArbitrary() + }], + /** + * Rotate + * @see https://tailwindcss.com/docs/rotate + */ + rotate: [{ + rotate: scaleRotate() + }], + /** + * Rotate X + * @see https://tailwindcss.com/docs/rotate + */ + "rotate-x": [{ + "rotate-x": scaleRotate() + }], + /** + * Rotate Y + * @see https://tailwindcss.com/docs/rotate + */ + "rotate-y": [{ + "rotate-y": scaleRotate() + }], + /** + * Rotate Z + * @see https://tailwindcss.com/docs/rotate + */ + "rotate-z": [{ + "rotate-z": scaleRotate() + }], + /** + * Scale + * @see https://tailwindcss.com/docs/scale + */ + scale: [{ + scale: scaleScale() + }], + /** + * Scale X + * @see https://tailwindcss.com/docs/scale + */ + "scale-x": [{ + "scale-x": scaleScale() + }], + /** + * Scale Y + * @see https://tailwindcss.com/docs/scale + */ + "scale-y": [{ + "scale-y": scaleScale() + }], + /** + * Scale Z + * @see https://tailwindcss.com/docs/scale + */ + "scale-z": [{ + "scale-z": scaleScale() + }], + /** + * Scale 3D + * @see https://tailwindcss.com/docs/scale + */ + "scale-3d": ["scale-3d"], + /** + * Skew + * @see https://tailwindcss.com/docs/skew + */ + skew: [{ + skew: scaleSkew() + }], + /** + * Skew X + * @see https://tailwindcss.com/docs/skew + */ + "skew-x": [{ + "skew-x": scaleSkew() + }], + /** + * Skew Y + * @see https://tailwindcss.com/docs/skew + */ + "skew-y": [{ + "skew-y": scaleSkew() + }], + /** + * Transform + * @see https://tailwindcss.com/docs/transform + */ + transform: [{ + transform: [isArbitraryVariable, isArbitraryValue, "", "none", "gpu", "cpu"] + }], + /** + * Transform Origin + * @see https://tailwindcss.com/docs/transform-origin + */ + "transform-origin": [{ + origin: scalePositionWithArbitrary() + }], + /** + * Transform Style + * @see https://tailwindcss.com/docs/transform-style + */ + "transform-style": [{ + transform: ["3d", "flat"] + }], + /** + * Translate + * @see https://tailwindcss.com/docs/translate + */ + translate: [{ + translate: scaleTranslate() + }], + /** + * Translate X + * @see https://tailwindcss.com/docs/translate + */ + "translate-x": [{ + "translate-x": scaleTranslate() + }], + /** + * Translate Y + * @see https://tailwindcss.com/docs/translate + */ + "translate-y": [{ + "translate-y": scaleTranslate() + }], + /** + * Translate Z + * @see https://tailwindcss.com/docs/translate + */ + "translate-z": [{ + "translate-z": scaleTranslate() + }], + /** + * Translate None + * @see https://tailwindcss.com/docs/translate + */ + "translate-none": ["translate-none"], + // --------------------- + // --- Interactivity --- + // --------------------- + /** + * Accent Color + * @see https://tailwindcss.com/docs/accent-color + */ + accent: [{ + accent: scaleColor() + }], + /** + * Appearance + * @see https://tailwindcss.com/docs/appearance + */ + appearance: [{ + appearance: ["none", "auto"] + }], + /** + * Caret Color + * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities + */ + "caret-color": [{ + caret: scaleColor() + }], + /** + * Color Scheme + * @see https://tailwindcss.com/docs/color-scheme + */ + "color-scheme": [{ + scheme: ["normal", "dark", "light", "light-dark", "only-dark", "only-light"] + }], + /** + * Cursor + * @see https://tailwindcss.com/docs/cursor + */ + cursor: [{ + cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", isArbitraryVariable, isArbitraryValue] + }], + /** + * Field Sizing + * @see https://tailwindcss.com/docs/field-sizing + */ + "field-sizing": [{ + "field-sizing": ["fixed", "content"] + }], + /** + * Pointer Events + * @see https://tailwindcss.com/docs/pointer-events + */ + "pointer-events": [{ + "pointer-events": ["auto", "none"] + }], + /** + * Resize + * @see https://tailwindcss.com/docs/resize + */ + resize: [{ + resize: ["none", "", "y", "x"] + }], + /** + * Scroll Behavior + * @see https://tailwindcss.com/docs/scroll-behavior + */ + "scroll-behavior": [{ + scroll: ["auto", "smooth"] + }], + /** + * Scroll Margin + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-m": [{ + "scroll-m": scaleUnambiguousSpacing() + }], + /** + * Scroll Margin X + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-mx": [{ + "scroll-mx": scaleUnambiguousSpacing() + }], + /** + * Scroll Margin Y + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-my": [{ + "scroll-my": scaleUnambiguousSpacing() + }], + /** + * Scroll Margin Start + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-ms": [{ + "scroll-ms": scaleUnambiguousSpacing() + }], + /** + * Scroll Margin End + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-me": [{ + "scroll-me": scaleUnambiguousSpacing() + }], + /** + * Scroll Margin Top + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-mt": [{ + "scroll-mt": scaleUnambiguousSpacing() + }], + /** + * Scroll Margin Right + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-mr": [{ + "scroll-mr": scaleUnambiguousSpacing() + }], + /** + * Scroll Margin Bottom + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-mb": [{ + "scroll-mb": scaleUnambiguousSpacing() + }], + /** + * Scroll Margin Left + * @see https://tailwindcss.com/docs/scroll-margin + */ + "scroll-ml": [{ + "scroll-ml": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-p": [{ + "scroll-p": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding X + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-px": [{ + "scroll-px": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding Y + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-py": [{ + "scroll-py": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding Start + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-ps": [{ + "scroll-ps": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding End + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-pe": [{ + "scroll-pe": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding Top + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-pt": [{ + "scroll-pt": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding Right + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-pr": [{ + "scroll-pr": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding Bottom + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-pb": [{ + "scroll-pb": scaleUnambiguousSpacing() + }], + /** + * Scroll Padding Left + * @see https://tailwindcss.com/docs/scroll-padding + */ + "scroll-pl": [{ + "scroll-pl": scaleUnambiguousSpacing() + }], + /** + * Scroll Snap Align + * @see https://tailwindcss.com/docs/scroll-snap-align + */ + "snap-align": [{ + snap: ["start", "end", "center", "align-none"] + }], + /** + * Scroll Snap Stop + * @see https://tailwindcss.com/docs/scroll-snap-stop + */ + "snap-stop": [{ + snap: ["normal", "always"] + }], + /** + * Scroll Snap Type + * @see https://tailwindcss.com/docs/scroll-snap-type + */ + "snap-type": [{ + snap: ["none", "x", "y", "both"] + }], + /** + * Scroll Snap Type Strictness + * @see https://tailwindcss.com/docs/scroll-snap-type + */ + "snap-strictness": [{ + snap: ["mandatory", "proximity"] + }], + /** + * Touch Action + * @see https://tailwindcss.com/docs/touch-action + */ + touch: [{ + touch: ["auto", "none", "manipulation"] + }], + /** + * Touch Action X + * @see https://tailwindcss.com/docs/touch-action + */ + "touch-x": [{ + "touch-pan": ["x", "left", "right"] + }], + /** + * Touch Action Y + * @see https://tailwindcss.com/docs/touch-action + */ + "touch-y": [{ + "touch-pan": ["y", "up", "down"] + }], + /** + * Touch Action Pinch Zoom + * @see https://tailwindcss.com/docs/touch-action + */ + "touch-pz": ["touch-pinch-zoom"], + /** + * User Select + * @see https://tailwindcss.com/docs/user-select + */ + select: [{ + select: ["none", "text", "all", "auto"] + }], + /** + * Will Change + * @see https://tailwindcss.com/docs/will-change + */ + "will-change": [{ + "will-change": ["auto", "scroll", "contents", "transform", isArbitraryVariable, isArbitraryValue] + }], + // ----------- + // --- SVG --- + // ----------- + /** + * Fill + * @see https://tailwindcss.com/docs/fill + */ + fill: [{ + fill: ["none", ...scaleColor()] + }], + /** + * Stroke Width + * @see https://tailwindcss.com/docs/stroke-width + */ + "stroke-w": [{ + stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber] + }], + /** + * Stroke + * @see https://tailwindcss.com/docs/stroke + */ + stroke: [{ + stroke: ["none", ...scaleColor()] + }], + // --------------------- + // --- Accessibility --- + // --------------------- + /** + * Forced Color Adjust + * @see https://tailwindcss.com/docs/forced-color-adjust + */ + "forced-color-adjust": [{ + "forced-color-adjust": ["auto", "none"] + }] + }, + conflictingClassGroups: { + overflow: ["overflow-x", "overflow-y"], + overscroll: ["overscroll-x", "overscroll-y"], + inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"], + "inset-x": ["right", "left"], + "inset-y": ["top", "bottom"], + flex: ["basis", "grow", "shrink"], + gap: ["gap-x", "gap-y"], + p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"], + px: ["pr", "pl"], + py: ["pt", "pb"], + m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"], + mx: ["mr", "ml"], + my: ["mt", "mb"], + size: ["w", "h"], + "font-size": ["leading"], + "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"], + "fvn-ordinal": ["fvn-normal"], + "fvn-slashed-zero": ["fvn-normal"], + "fvn-figure": ["fvn-normal"], + "fvn-spacing": ["fvn-normal"], + "fvn-fraction": ["fvn-normal"], + "line-clamp": ["display", "overflow"], + rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"], + "rounded-s": ["rounded-ss", "rounded-es"], + "rounded-e": ["rounded-se", "rounded-ee"], + "rounded-t": ["rounded-tl", "rounded-tr"], + "rounded-r": ["rounded-tr", "rounded-br"], + "rounded-b": ["rounded-br", "rounded-bl"], + "rounded-l": ["rounded-tl", "rounded-bl"], + "border-spacing": ["border-spacing-x", "border-spacing-y"], + "border-w": ["border-w-x", "border-w-y", "border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"], + "border-w-x": ["border-w-r", "border-w-l"], + "border-w-y": ["border-w-t", "border-w-b"], + "border-color": ["border-color-x", "border-color-y", "border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"], + "border-color-x": ["border-color-r", "border-color-l"], + "border-color-y": ["border-color-t", "border-color-b"], + translate: ["translate-x", "translate-y", "translate-none"], + "translate-none": ["translate", "translate-x", "translate-y", "translate-z"], + "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"], + "scroll-mx": ["scroll-mr", "scroll-ml"], + "scroll-my": ["scroll-mt", "scroll-mb"], + "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"], + "scroll-px": ["scroll-pr", "scroll-pl"], + "scroll-py": ["scroll-pt", "scroll-pb"], + touch: ["touch-x", "touch-y", "touch-pz"], + "touch-x": ["touch"], + "touch-y": ["touch"], + "touch-pz": ["touch"] + }, + conflictingClassGroupModifiers: { + "font-size": ["leading"] + }, + orderSensitiveModifiers: ["*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection"] + }; +}; +var mergeConfigs = (baseConfig, { + cacheSize, + prefix, + experimentalParseClassName, + extend = {}, + override = {} +}) => { + overrideProperty(baseConfig, "cacheSize", cacheSize); + overrideProperty(baseConfig, "prefix", prefix); + overrideProperty(baseConfig, "experimentalParseClassName", experimentalParseClassName); + overrideConfigProperties(baseConfig.theme, override.theme); + overrideConfigProperties(baseConfig.classGroups, override.classGroups); + overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups); + overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers); + overrideProperty(baseConfig, "orderSensitiveModifiers", override.orderSensitiveModifiers); + mergeConfigProperties(baseConfig.theme, extend.theme); + mergeConfigProperties(baseConfig.classGroups, extend.classGroups); + mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups); + mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers); + mergeArrayProperties(baseConfig, extend, "orderSensitiveModifiers"); + return baseConfig; +}; +var overrideProperty = (baseObject, overrideKey, overrideValue) => { + if (overrideValue !== void 0) { + baseObject[overrideKey] = overrideValue; + } +}; +var overrideConfigProperties = (baseObject, overrideObject) => { + if (overrideObject) { + for (const key in overrideObject) { + overrideProperty(baseObject, key, overrideObject[key]); + } + } +}; +var mergeConfigProperties = (baseObject, mergeObject) => { + if (mergeObject) { + for (const key in mergeObject) { + mergeArrayProperties(baseObject, mergeObject, key); + } + } +}; +var mergeArrayProperties = (baseObject, mergeObject, key) => { + const mergeValue = mergeObject[key]; + if (mergeValue !== void 0) { + baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue; + } +}; +var extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === "function" ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig); +var twMerge = createTailwindMerge(getDefaultConfig); + +export { + twJoin, + createTailwindMerge, + fromTheme, + validators, + getDefaultConfig, + mergeConfigs, + extendTailwindMerge, + twMerge +}; +//# sourceMappingURL=chunk-HRPYXN4O.js.map diff --git a/node_modules/.vite/deps/chunk-7NTURTDS.js.map b/node_modules/.vite/deps 4/chunk-J5VS5SBR.js.map similarity index 100% rename from node_modules/.vite/deps/chunk-7NTURTDS.js.map rename to node_modules/.vite/deps 4/chunk-J5VS5SBR.js.map diff --git a/node_modules/.vite/deps 4/chunk-KT36QEZ7.js b/node_modules/.vite/deps 4/chunk-KT36QEZ7.js new file mode 100644 index 00000000..817585db --- /dev/null +++ b/node_modules/.vite/deps 4/chunk-KT36QEZ7.js @@ -0,0 +1,4841 @@ +import { + await_waterfall, + event_handler_invalid, + hydration_mismatch, + state_proxy_equality_mismatch, + svelte_boundary_reset_noop +} from "./chunk-XWATFG4W.js"; +import { + true_default +} from "./chunk-HNWPC2PS.js"; +import { + async_mode_flag, + legacy_mode_flag, + tracing_mode_flag +} from "./chunk-OHYQYV5R.js"; +import { + __privateAdd, + __privateGet, + __privateMethod, + __privateSet, + __publicField +} from "./chunk-UGBVNEQM.js"; + +// node_modules/svelte/src/internal/shared/utils.js +var is_array = Array.isArray; +var index_of = Array.prototype.indexOf; +var includes = Array.prototype.includes; +var array_from = Array.from; +var object_keys = Object.keys; +var define_property = Object.defineProperty; +var get_descriptor = Object.getOwnPropertyDescriptor; +var get_descriptors = Object.getOwnPropertyDescriptors; +var object_prototype = Object.prototype; +var array_prototype = Array.prototype; +var get_prototype_of = Object.getPrototypeOf; +var is_extensible = Object.isExtensible; +function is_function(thing) { + return typeof thing === "function"; +} +var noop = () => { +}; +function is_promise(value) { + return typeof (value == null ? void 0 : value.then) === "function"; +} +function run(fn) { + return fn(); +} +function run_all(arr) { + for (var i = 0; i < arr.length; i++) { + arr[i](); + } +} +function deferred() { + var resolve; + var reject; + var promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + return { promise, resolve, reject }; +} +function fallback(value, fallback2, lazy = false) { + return value === void 0 ? lazy ? ( + /** @type {() => V} */ + fallback2() + ) : ( + /** @type {V} */ + fallback2 + ) : value; +} +function to_array(value, n) { + if (Array.isArray(value)) { + return value; + } + if (n === void 0 || !(Symbol.iterator in value)) { + return Array.from(value); + } + const array = []; + for (const element of value) { + array.push(element); + if (array.length === n) break; + } + return array; +} + +// node_modules/svelte/src/internal/client/constants.js +var DERIVED = 1 << 1; +var EFFECT = 1 << 2; +var RENDER_EFFECT = 1 << 3; +var MANAGED_EFFECT = 1 << 24; +var BLOCK_EFFECT = 1 << 4; +var BRANCH_EFFECT = 1 << 5; +var ROOT_EFFECT = 1 << 6; +var BOUNDARY_EFFECT = 1 << 7; +var CONNECTED = 1 << 9; +var CLEAN = 1 << 10; +var DIRTY = 1 << 11; +var MAYBE_DIRTY = 1 << 12; +var INERT = 1 << 13; +var DESTROYED = 1 << 14; +var REACTION_RAN = 1 << 15; +var EFFECT_TRANSPARENT = 1 << 16; +var EAGER_EFFECT = 1 << 17; +var HEAD_EFFECT = 1 << 18; +var EFFECT_PRESERVED = 1 << 19; +var USER_EFFECT = 1 << 20; +var EFFECT_OFFSCREEN = 1 << 25; +var WAS_MARKED = 1 << 16; +var REACTION_IS_UPDATING = 1 << 21; +var ASYNC = 1 << 22; +var ERROR_VALUE = 1 << 23; +var STATE_SYMBOL = Symbol("$state"); +var LEGACY_PROPS = Symbol("legacy props"); +var LOADING_ATTR_SYMBOL = Symbol(""); +var PROXY_PATH_SYMBOL = Symbol("proxy path"); +var STALE_REACTION = new class StaleReactionError extends Error { + constructor() { + super(...arguments); + __publicField(this, "name", "StaleReactionError"); + __publicField(this, "message", "The reaction that called `getAbortSignal()` was re-run or destroyed"); + } +}(); +var _a; +var IS_XHTML = ( + // We gotta write it like this because after downleveling the pure comment may end up in the wrong location + !!((_a = globalThis.document) == null ? void 0 : _a.contentType) && globalThis.document.contentType.includes("xml") +); +var ELEMENT_NODE = 1; +var TEXT_NODE = 3; +var COMMENT_NODE = 8; +var DOCUMENT_FRAGMENT_NODE = 11; + +// node_modules/svelte/src/internal/shared/errors.js +function experimental_async_required(name) { + if (true_default) { + const error = new Error(`experimental_async_required +Cannot use \`${name}(...)\` unless the \`experimental.async\` compiler option is \`true\` +https://svelte.dev/e/experimental_async_required`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/experimental_async_required`); + } +} +function invalid_default_snippet() { + if (true_default) { + const error = new Error(`invalid_default_snippet +Cannot use \`{@render children(...)}\` if the parent component uses \`let:\` directives. Consider using a named snippet instead +https://svelte.dev/e/invalid_default_snippet`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/invalid_default_snippet`); + } +} +function invalid_snippet_arguments() { + if (true_default) { + const error = new Error(`invalid_snippet_arguments +A snippet function was passed invalid arguments. Snippets should only be instantiated via \`{@render ...}\` +https://svelte.dev/e/invalid_snippet_arguments`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/invalid_snippet_arguments`); + } +} +function lifecycle_outside_component(name) { + if (true_default) { + const error = new Error(`lifecycle_outside_component +\`${name}(...)\` can only be used during component initialisation +https://svelte.dev/e/lifecycle_outside_component`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/lifecycle_outside_component`); + } +} +function missing_context() { + if (true_default) { + const error = new Error(`missing_context +Context was not set in a parent component +https://svelte.dev/e/missing_context`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/missing_context`); + } +} +function snippet_without_render_tag() { + if (true_default) { + const error = new Error(`snippet_without_render_tag +Attempted to render a snippet without a \`{@render}\` block. This would cause the snippet code to be stringified instead of its content being rendered to the DOM. To fix this, change \`{snippet}\` to \`{@render snippet()}\`. +https://svelte.dev/e/snippet_without_render_tag`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/snippet_without_render_tag`); + } +} +function store_invalid_shape(name) { + if (true_default) { + const error = new Error(`store_invalid_shape +\`${name}\` is not a store with a \`subscribe\` method +https://svelte.dev/e/store_invalid_shape`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/store_invalid_shape`); + } +} +function svelte_element_invalid_this_value() { + if (true_default) { + const error = new Error(`svelte_element_invalid_this_value +The \`this\` prop on \`\` must be a string, if defined +https://svelte.dev/e/svelte_element_invalid_this_value`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/svelte_element_invalid_this_value`); + } +} + +// node_modules/svelte/src/internal/client/errors.js +function async_derived_orphan() { + if (true_default) { + const error = new Error(`async_derived_orphan +Cannot create a \`$derived(...)\` with an \`await\` expression outside of an effect tree +https://svelte.dev/e/async_derived_orphan`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/async_derived_orphan`); + } +} +function bind_invalid_checkbox_value() { + if (true_default) { + const error = new Error(`bind_invalid_checkbox_value +Using \`bind:value\` together with a checkbox input is not allowed. Use \`bind:checked\` instead +https://svelte.dev/e/bind_invalid_checkbox_value`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/bind_invalid_checkbox_value`); + } +} +function component_api_changed(method, component) { + if (true_default) { + const error = new Error(`component_api_changed +Calling \`${method}\` on a component instance (of ${component}) is no longer valid in Svelte 5 +https://svelte.dev/e/component_api_changed`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/component_api_changed`); + } +} +function component_api_invalid_new(component, name) { + if (true_default) { + const error = new Error(`component_api_invalid_new +Attempted to instantiate ${component} with \`new ${name}\`, which is no longer valid in Svelte 5. If this component is not under your control, set the \`compatibility.componentApi\` compiler option to \`4\` to keep it working. +https://svelte.dev/e/component_api_invalid_new`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/component_api_invalid_new`); + } +} +function derived_references_self() { + if (true_default) { + const error = new Error(`derived_references_self +A derived value cannot reference itself recursively +https://svelte.dev/e/derived_references_self`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/derived_references_self`); + } +} +function each_key_duplicate(a, b, value) { + if (true_default) { + const error = new Error(`each_key_duplicate +${value ? `Keyed each block has duplicate key \`${value}\` at indexes ${a} and ${b}` : `Keyed each block has duplicate key at indexes ${a} and ${b}`} +https://svelte.dev/e/each_key_duplicate`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/each_key_duplicate`); + } +} +function effect_in_teardown(rune) { + if (true_default) { + const error = new Error(`effect_in_teardown +\`${rune}\` cannot be used inside an effect cleanup function +https://svelte.dev/e/effect_in_teardown`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/effect_in_teardown`); + } +} +function effect_in_unowned_derived() { + if (true_default) { + const error = new Error(`effect_in_unowned_derived +Effect cannot be created inside a \`$derived\` value that was not itself created inside an effect +https://svelte.dev/e/effect_in_unowned_derived`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/effect_in_unowned_derived`); + } +} +function effect_orphan(rune) { + if (true_default) { + const error = new Error(`effect_orphan +\`${rune}\` can only be used inside an effect (e.g. during component initialisation) +https://svelte.dev/e/effect_orphan`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/effect_orphan`); + } +} +function effect_pending_outside_reaction() { + if (true_default) { + const error = new Error(`effect_pending_outside_reaction +\`$effect.pending()\` can only be called inside an effect or derived +https://svelte.dev/e/effect_pending_outside_reaction`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/effect_pending_outside_reaction`); + } +} +function effect_update_depth_exceeded() { + if (true_default) { + const error = new Error(`effect_update_depth_exceeded +Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state +https://svelte.dev/e/effect_update_depth_exceeded`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/effect_update_depth_exceeded`); + } +} +function fork_discarded() { + if (true_default) { + const error = new Error(`fork_discarded +Cannot commit a fork that was already discarded +https://svelte.dev/e/fork_discarded`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/fork_discarded`); + } +} +function fork_timing() { + if (true_default) { + const error = new Error(`fork_timing +Cannot create a fork inside an effect or when state changes are pending +https://svelte.dev/e/fork_timing`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/fork_timing`); + } +} +function get_abort_signal_outside_reaction() { + if (true_default) { + const error = new Error(`get_abort_signal_outside_reaction +\`getAbortSignal()\` can only be called inside an effect or derived +https://svelte.dev/e/get_abort_signal_outside_reaction`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/get_abort_signal_outside_reaction`); + } +} +function hydratable_missing_but_required(key) { + if (true_default) { + const error = new Error(`hydratable_missing_but_required +Expected to find a hydratable with key \`${key}\` during hydration, but did not. +https://svelte.dev/e/hydratable_missing_but_required`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/hydratable_missing_but_required`); + } +} +function hydration_failed() { + if (true_default) { + const error = new Error(`hydration_failed +Failed to hydrate the application +https://svelte.dev/e/hydration_failed`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/hydration_failed`); + } +} +function invalid_snippet() { + if (true_default) { + const error = new Error(`invalid_snippet +Could not \`{@render}\` snippet due to the expression being \`null\` or \`undefined\`. Consider using optional chaining \`{@render snippet?.()}\` +https://svelte.dev/e/invalid_snippet`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/invalid_snippet`); + } +} +function lifecycle_legacy_only(name) { + if (true_default) { + const error = new Error(`lifecycle_legacy_only +\`${name}(...)\` cannot be used in runes mode +https://svelte.dev/e/lifecycle_legacy_only`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/lifecycle_legacy_only`); + } +} +function props_invalid_value(key) { + if (true_default) { + const error = new Error(`props_invalid_value +Cannot do \`bind:${key}={undefined}\` when \`${key}\` has a fallback value +https://svelte.dev/e/props_invalid_value`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/props_invalid_value`); + } +} +function props_rest_readonly(property) { + if (true_default) { + const error = new Error(`props_rest_readonly +Rest element properties of \`$props()\` such as \`${property}\` are readonly +https://svelte.dev/e/props_rest_readonly`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/props_rest_readonly`); + } +} +function rune_outside_svelte(rune) { + if (true_default) { + const error = new Error(`rune_outside_svelte +The \`${rune}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files +https://svelte.dev/e/rune_outside_svelte`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/rune_outside_svelte`); + } +} +function set_context_after_init() { + if (true_default) { + const error = new Error(`set_context_after_init +\`setContext\` must be called when a component first initializes, not in a subsequent effect or after an \`await\` expression +https://svelte.dev/e/set_context_after_init`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/set_context_after_init`); + } +} +function state_descriptors_fixed() { + if (true_default) { + const error = new Error(`state_descriptors_fixed +Property descriptors defined on \`$state\` objects must contain \`value\` and always be \`enumerable\`, \`configurable\` and \`writable\`. +https://svelte.dev/e/state_descriptors_fixed`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/state_descriptors_fixed`); + } +} +function state_prototype_fixed() { + if (true_default) { + const error = new Error(`state_prototype_fixed +Cannot set prototype of \`$state\` object +https://svelte.dev/e/state_prototype_fixed`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/state_prototype_fixed`); + } +} +function state_unsafe_mutation() { + if (true_default) { + const error = new Error(`state_unsafe_mutation +Updating state inside \`$derived(...)\`, \`$inspect(...)\` or a template expression is forbidden. If the value should not be reactive, declare it without \`$state\` +https://svelte.dev/e/state_unsafe_mutation`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/state_unsafe_mutation`); + } +} +function svelte_boundary_reset_onerror() { + if (true_default) { + const error = new Error(`svelte_boundary_reset_onerror +A \`\` \`reset\` function cannot be called while an error is still being handled +https://svelte.dev/e/svelte_boundary_reset_onerror`); + error.name = "Svelte error"; + throw error; + } else { + throw new Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`); + } +} + +// node_modules/svelte/src/constants.js +var EACH_ITEM_REACTIVE = 1; +var EACH_INDEX_REACTIVE = 1 << 1; +var EACH_IS_CONTROLLED = 1 << 2; +var EACH_IS_ANIMATED = 1 << 3; +var EACH_ITEM_IMMUTABLE = 1 << 4; +var PROPS_IS_IMMUTABLE = 1; +var PROPS_IS_RUNES = 1 << 1; +var PROPS_IS_UPDATED = 1 << 2; +var PROPS_IS_BINDABLE = 1 << 3; +var PROPS_IS_LAZY_INITIAL = 1 << 4; +var TRANSITION_IN = 1; +var TRANSITION_OUT = 1 << 1; +var TRANSITION_GLOBAL = 1 << 2; +var TEMPLATE_FRAGMENT = 1; +var TEMPLATE_USE_IMPORT_NODE = 1 << 1; +var TEMPLATE_USE_SVG = 1 << 2; +var TEMPLATE_USE_MATHML = 1 << 3; +var HYDRATION_START = "["; +var HYDRATION_START_ELSE = "[!"; +var HYDRATION_END = "]"; +var HYDRATION_ERROR = {}; +var ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1; +var ELEMENT_IS_INPUT = 1 << 2; +var UNINITIALIZED = Symbol(); +var FILENAME = Symbol("filename"); +var HMR = Symbol("hmr"); +var NAMESPACE_HTML = "http://www.w3.org/1999/xhtml"; +var NAMESPACE_SVG = "http://www.w3.org/2000/svg"; +var NAMESPACE_MATHML = "http://www.w3.org/1998/Math/MathML"; +var ATTACHMENT_KEY = "@attach"; + +// node_modules/svelte/src/internal/client/context.js +var component_context = null; +function set_component_context(context) { + component_context = context; +} +var dev_stack = null; +function set_dev_stack(stack2) { + dev_stack = stack2; +} +function add_svelte_meta(callback, type, component, line, column, additional) { + const parent = dev_stack; + dev_stack = { + type, + file: component[FILENAME], + line, + column, + parent, + ...additional + }; + try { + return callback(); + } finally { + dev_stack = parent; + } +} +var dev_current_component_function = null; +function set_dev_current_component_function(fn) { + dev_current_component_function = fn; +} +function createContext() { + const key = {}; + return [ + () => { + if (!hasContext(key)) { + missing_context(); + } + return getContext(key); + }, + (context) => setContext(key, context) + ]; +} +function getContext(key) { + const context_map = get_or_init_context_map("getContext"); + const result = ( + /** @type {T} */ + context_map.get(key) + ); + return result; +} +function setContext(key, context) { + const context_map = get_or_init_context_map("setContext"); + if (async_mode_flag) { + var flags2 = ( + /** @type {Effect} */ + active_effect.f + ); + var valid = !active_reaction && (flags2 & BRANCH_EFFECT) !== 0 && // pop() runs synchronously, so this indicates we're setting context after an await + !/** @type {ComponentContext} */ + component_context.i; + if (!valid) { + set_context_after_init(); + } + } + context_map.set(key, context); + return context; +} +function hasContext(key) { + const context_map = get_or_init_context_map("hasContext"); + return context_map.has(key); +} +function getAllContexts() { + const context_map = get_or_init_context_map("getAllContexts"); + return ( + /** @type {T} */ + context_map + ); +} +function push(props, runes = false, fn) { + component_context = { + p: component_context, + i: false, + c: null, + e: null, + s: props, + x: null, + l: legacy_mode_flag && !runes ? { s: null, u: null, $: [] } : null + }; + if (true_default) { + component_context.function = fn; + dev_current_component_function = fn; + } +} +function pop(component) { + var context = ( + /** @type {ComponentContext} */ + component_context + ); + var effects = context.e; + if (effects !== null) { + context.e = null; + for (var fn of effects) { + create_user_effect(fn); + } + } + if (component !== void 0) { + context.x = component; + } + context.i = true; + component_context = context.p; + if (true_default) { + dev_current_component_function = (component_context == null ? void 0 : component_context.function) ?? null; + } + return component ?? /** @type {T} */ + {}; +} +function is_runes() { + return !legacy_mode_flag || component_context !== null && component_context.l === null; +} +function get_or_init_context_map(name) { + if (component_context === null) { + lifecycle_outside_component(name); + } + return component_context.c ?? (component_context.c = new Map(get_parent_context(component_context) || void 0)); +} +function get_parent_context(component_context2) { + let parent = component_context2.p; + while (parent !== null) { + const context_map = parent.c; + if (context_map !== null) { + return context_map; + } + parent = parent.p; + } + return null; +} + +// node_modules/svelte/src/internal/client/dom/task.js +var micro_tasks = []; +function run_micro_tasks() { + var tasks = micro_tasks; + micro_tasks = []; + run_all(tasks); +} +function queue_micro_task(fn) { + if (micro_tasks.length === 0 && !is_flushing_sync) { + var tasks = micro_tasks; + queueMicrotask(() => { + if (tasks === micro_tasks) run_micro_tasks(); + }); + } + micro_tasks.push(fn); +} +function flush_tasks() { + while (micro_tasks.length > 0) { + run_micro_tasks(); + } +} + +// node_modules/svelte/src/internal/client/error-handling.js +var adjustments = /* @__PURE__ */ new WeakMap(); +function handle_error(error) { + var effect2 = active_effect; + if (effect2 === null) { + active_reaction.f |= ERROR_VALUE; + return error; + } + if (true_default && error instanceof Error && !adjustments.has(error)) { + adjustments.set(error, get_adjustments(error, effect2)); + } + if ((effect2.f & REACTION_RAN) === 0 && (effect2.f & EFFECT) === 0) { + if (true_default && !effect2.parent && error instanceof Error) { + apply_adjustments(error); + } + throw error; + } + invoke_error_boundary(error, effect2); +} +function invoke_error_boundary(error, effect2) { + while (effect2 !== null) { + if ((effect2.f & BOUNDARY_EFFECT) !== 0) { + if ((effect2.f & REACTION_RAN) === 0) { + throw error; + } + try { + effect2.b.error(error); + return; + } catch (e) { + error = e; + } + } + effect2 = effect2.parent; + } + if (true_default && error instanceof Error) { + apply_adjustments(error); + } + throw error; +} +function get_adjustments(error, effect2) { + var _a2, _b, _c; + const message_descriptor = get_descriptor(error, "message"); + if (message_descriptor && !message_descriptor.configurable) return; + var indent = is_firefox ? " " : " "; + var component_stack = ` +${indent}in ${((_a2 = effect2.fn) == null ? void 0 : _a2.name) || ""}`; + var context = effect2.ctx; + while (context !== null) { + component_stack += ` +${indent}in ${(_b = context.function) == null ? void 0 : _b[FILENAME].split("/").pop()}`; + context = context.p; + } + return { + message: error.message + ` +${component_stack} +`, + stack: (_c = error.stack) == null ? void 0 : _c.split("\n").filter((line) => !line.includes("svelte/src/internal")).join("\n") + }; +} +function apply_adjustments(error) { + const adjusted = adjustments.get(error); + if (adjusted) { + define_property(error, "message", { + value: adjusted.message + }); + define_property(error, "stack", { + value: adjusted.stack + }); + } +} + +// node_modules/svelte/src/internal/client/reactivity/equality.js +function equals(value) { + return value === this.v; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function"; +} +function safe_equals(value) { + return !safe_not_equal(value, this.v); +} + +// node_modules/svelte/src/internal/shared/warnings.js +var bold = "font-weight: bold"; +var normal = "font-weight: normal"; +function dynamic_void_element_content(tag2) { + if (true_default) { + console.warn(`%c[svelte] dynamic_void_element_content +%c\`\` is a void element — it cannot have content +https://svelte.dev/e/dynamic_void_element_content`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/dynamic_void_element_content`); + } +} +function state_snapshot_uncloneable(properties) { + if (true_default) { + console.warn( + `%c[svelte] state_snapshot_uncloneable +%c${properties ? `The following properties cannot be cloned with \`$state.snapshot\` — the return value contains the originals: + +${properties}` : "Value cannot be cloned with `$state.snapshot` — the original value was returned"} +https://svelte.dev/e/state_snapshot_uncloneable`, + bold, + normal + ); + } else { + console.warn(`https://svelte.dev/e/state_snapshot_uncloneable`); + } +} + +// node_modules/svelte/src/internal/shared/clone.js +var empty = []; +function snapshot(value, skip_warning = false, no_tojson = false) { + if (true_default && !skip_warning) { + const paths = []; + const copy = clone(value, /* @__PURE__ */ new Map(), "", paths, null, no_tojson); + if (paths.length === 1 && paths[0] === "") { + state_snapshot_uncloneable(); + } else if (paths.length > 0) { + const slice = paths.length > 10 ? paths.slice(0, 7) : paths.slice(0, 10); + const excess = paths.length - slice.length; + let uncloned = slice.map((path) => `- ${path}`).join("\n"); + if (excess > 0) uncloned += ` +- ...and ${excess} more`; + state_snapshot_uncloneable(uncloned); + } + return copy; + } + return clone(value, /* @__PURE__ */ new Map(), "", empty, null, no_tojson); +} +function clone(value, cloned, path, paths, original = null, no_tojson = false) { + if (typeof value === "object" && value !== null) { + var unwrapped = cloned.get(value); + if (unwrapped !== void 0) return unwrapped; + if (value instanceof Map) return ( + /** @type {Snapshot} */ + new Map(value) + ); + if (value instanceof Set) return ( + /** @type {Snapshot} */ + new Set(value) + ); + if (is_array(value)) { + var copy = ( + /** @type {Snapshot} */ + Array(value.length) + ); + cloned.set(value, copy); + if (original !== null) { + cloned.set(original, copy); + } + for (var i = 0; i < value.length; i += 1) { + var element = value[i]; + if (i in value) { + copy[i] = clone(element, cloned, true_default ? `${path}[${i}]` : path, paths, null, no_tojson); + } + } + return copy; + } + if (get_prototype_of(value) === object_prototype) { + copy = {}; + cloned.set(value, copy); + if (original !== null) { + cloned.set(original, copy); + } + for (var key in value) { + copy[key] = clone( + // @ts-expect-error + value[key], + cloned, + true_default ? `${path}.${key}` : path, + paths, + null, + no_tojson + ); + } + return copy; + } + if (value instanceof Date) { + return ( + /** @type {Snapshot} */ + structuredClone(value) + ); + } + if (typeof /** @type {T & { toJSON?: any } } */ + value.toJSON === "function" && !no_tojson) { + return clone( + /** @type {T & { toJSON(): any } } */ + value.toJSON(), + cloned, + true_default ? `${path}.toJSON()` : path, + paths, + // Associate the instance with the toJSON clone + value + ); + } + } + if (value instanceof EventTarget) { + return ( + /** @type {Snapshot} */ + value + ); + } + try { + return ( + /** @type {Snapshot} */ + structuredClone(value) + ); + } catch (e) { + if (true_default) { + paths.push(path); + } + return ( + /** @type {Snapshot} */ + value + ); + } +} + +// node_modules/svelte/src/internal/client/dev/tracing.js +var tracing_expressions = null; +function log_entry(signal, entry) { + const value = signal.v; + if (value === UNINITIALIZED) { + return; + } + const type = get_type(signal); + const current_reaction = ( + /** @type {Reaction} */ + active_reaction + ); + const dirty = signal.wv > current_reaction.wv || current_reaction.wv === 0; + const style = dirty ? "color: CornflowerBlue; font-weight: bold" : "color: grey; font-weight: normal"; + console.groupCollapsed( + signal.label ? `%c${type}%c ${signal.label}` : `%c${type}%c`, + style, + dirty ? "font-weight: normal" : style, + typeof value === "object" && value !== null && STATE_SYMBOL in value ? snapshot(value, true) : value + ); + if (type === "$derived") { + const deps = new Set( + /** @type {Derived} */ + signal.deps + ); + for (const dep of deps) { + log_entry(dep); + } + } + if (signal.created) { + console.log(signal.created); + } + if (dirty && signal.updated) { + for (const updated of signal.updated.values()) { + if (updated.error) { + console.log(updated.error); + } + } + } + if (entry) { + for (var trace2 of entry.traces) { + console.log(trace2); + } + } + console.groupEnd(); +} +function get_type(signal) { + var _a2; + if ((signal.f & (DERIVED | ASYNC)) !== 0) return "$derived"; + return ((_a2 = signal.label) == null ? void 0 : _a2.startsWith("$")) ? "store" : "$state"; +} +function trace(label2, fn) { + var previously_tracing_expressions = tracing_expressions; + try { + tracing_expressions = { entries: /* @__PURE__ */ new Map(), reaction: active_reaction }; + var start = performance.now(); + var value = fn(); + var time = (performance.now() - start).toFixed(2); + var prefix = untrack(label2); + if (!effect_tracking()) { + console.log(`${prefix} %cran outside of an effect (${time}ms)`, "color: grey"); + } else if (tracing_expressions.entries.size === 0) { + console.log(`${prefix} %cno reactive dependencies (${time}ms)`, "color: grey"); + } else { + console.group(`${prefix} %c(${time}ms)`, "color: grey"); + var entries = tracing_expressions.entries; + untrack(() => { + for (const [signal, traces] of entries) { + log_entry(signal, traces); + } + }); + tracing_expressions = null; + console.groupEnd(); + } + return value; + } finally { + tracing_expressions = previously_tracing_expressions; + } +} +function tag(source2, label2) { + source2.label = label2; + tag_proxy(source2.v, label2); + return source2; +} +function tag_proxy(value, label2) { + var _a2; + (_a2 = value == null ? void 0 : value[PROXY_PATH_SYMBOL]) == null ? void 0 : _a2.call(value, label2); + return value; +} +function label(value) { + if (typeof value === "symbol") return `Symbol(${value.description})`; + if (typeof value === "function") return ""; + if (typeof value === "object" && value) return ""; + return String(value); +} + +// node_modules/svelte/src/internal/shared/dev.js +function get_error(label2) { + const error = new Error(); + const stack2 = get_stack(); + if (stack2.length === 0) { + return null; + } + stack2.unshift("\n"); + define_property(error, "stack", { + value: stack2.join("\n") + }); + define_property(error, "name", { + value: label2 + }); + return ( + /** @type {Error & { stack: string }} */ + error + ); +} +function get_stack() { + const limit = Error.stackTraceLimit; + Error.stackTraceLimit = Infinity; + const stack2 = new Error().stack; + Error.stackTraceLimit = limit; + if (!stack2) return []; + const lines = stack2.split("\n"); + const new_lines = []; + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const posixified = line.replaceAll("\\", "/"); + if (line.trim() === "Error") { + continue; + } + if (line.includes("validate_each_keys")) { + return []; + } + if (posixified.includes("svelte/src/internal") || posixified.includes("node_modules/.vite")) { + continue; + } + new_lines.push(line); + } + return new_lines; +} + +// node_modules/svelte/src/reactivity/create-subscriber.js +function createSubscriber(start) { + let subscribers = 0; + let version = source(0); + let stop; + if (true_default) { + tag(version, "createSubscriber version"); + } + return () => { + if (effect_tracking()) { + get(version); + render_effect(() => { + if (subscribers === 0) { + stop = untrack(() => start(() => increment(version))); + } + subscribers += 1; + return () => { + queue_micro_task(() => { + subscribers -= 1; + if (subscribers === 0) { + stop == null ? void 0 : stop(); + stop = void 0; + increment(version); + } + }); + }; + }); + } + }; +} + +// node_modules/svelte/src/internal/client/reactivity/status.js +var STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN); +function set_signal_status(signal, status) { + signal.f = signal.f & STATUS_MASK | status; +} +function update_derived_status(derived2) { + if ((derived2.f & CONNECTED) !== 0 || derived2.deps === null) { + set_signal_status(derived2, CLEAN); + } else { + set_signal_status(derived2, MAYBE_DIRTY); + } +} + +// node_modules/svelte/src/internal/client/reactivity/utils.js +function clear_marked(deps) { + if (deps === null) return; + for (const dep of deps) { + if ((dep.f & DERIVED) === 0 || (dep.f & WAS_MARKED) === 0) { + continue; + } + dep.f ^= WAS_MARKED; + clear_marked( + /** @type {Derived} */ + dep.deps + ); + } +} +function defer_effect(effect2, dirty_effects, maybe_dirty_effects) { + if ((effect2.f & DIRTY) !== 0) { + dirty_effects.add(effect2); + } else if ((effect2.f & MAYBE_DIRTY) !== 0) { + maybe_dirty_effects.add(effect2); + } + clear_marked(effect2.deps); + set_signal_status(effect2, CLEAN); +} + +// node_modules/svelte/src/internal/client/dom/blocks/boundary.js +var flags = EFFECT_TRANSPARENT | EFFECT_PRESERVED; +function boundary(node, props, children) { + new Boundary(node, props, children); +} +var _anchor, _hydrate_open, _props, _children, _effect, _main_effect, _pending_effect, _failed_effect, _offscreen_fragment, _local_pending_count, _pending_count, _pending_count_update_queued, _dirty_effects, _maybe_dirty_effects, _effect_pending, _effect_pending_subscriber, _Boundary_instances, hydrate_resolved_content_fn, hydrate_pending_content_fn, render_fn, run_fn, update_pending_count_fn; +var Boundary = class { + /** + * @param {TemplateNode} node + * @param {BoundaryProps} props + * @param {((anchor: Node) => void)} children + */ + constructor(node, props, children) { + __privateAdd(this, _Boundary_instances); + /** @type {Boundary | null} */ + __publicField(this, "parent"); + __publicField(this, "is_pending", false); + /** @type {TemplateNode} */ + __privateAdd(this, _anchor); + /** @type {TemplateNode | null} */ + __privateAdd(this, _hydrate_open, hydrating ? hydrate_node : null); + /** @type {BoundaryProps} */ + __privateAdd(this, _props); + /** @type {((anchor: Node) => void)} */ + __privateAdd(this, _children); + /** @type {Effect} */ + __privateAdd(this, _effect); + /** @type {Effect | null} */ + __privateAdd(this, _main_effect, null); + /** @type {Effect | null} */ + __privateAdd(this, _pending_effect, null); + /** @type {Effect | null} */ + __privateAdd(this, _failed_effect, null); + /** @type {DocumentFragment | null} */ + __privateAdd(this, _offscreen_fragment, null); + __privateAdd(this, _local_pending_count, 0); + __privateAdd(this, _pending_count, 0); + __privateAdd(this, _pending_count_update_queued, false); + /** @type {Set} */ + __privateAdd(this, _dirty_effects, /* @__PURE__ */ new Set()); + /** @type {Set} */ + __privateAdd(this, _maybe_dirty_effects, /* @__PURE__ */ new Set()); + /** + * A source containing the number of pending async deriveds/expressions. + * Only created if `$effect.pending()` is used inside the boundary, + * otherwise updating the source results in needless `Batch.ensure()` + * calls followed by no-op flushes + * @type {Source | null} + */ + __privateAdd(this, _effect_pending, null); + __privateAdd(this, _effect_pending_subscriber, createSubscriber(() => { + __privateSet(this, _effect_pending, source(__privateGet(this, _local_pending_count))); + if (true_default) { + tag(__privateGet(this, _effect_pending), "$effect.pending()"); + } + return () => { + __privateSet(this, _effect_pending, null); + }; + })); + __privateSet(this, _anchor, node); + __privateSet(this, _props, props); + __privateSet(this, _children, (anchor) => { + var effect2 = ( + /** @type {Effect} */ + active_effect + ); + effect2.b = this; + effect2.f |= BOUNDARY_EFFECT; + children(anchor); + }); + this.parent = /** @type {Effect} */ + active_effect.b; + __privateSet(this, _effect, block(() => { + if (hydrating) { + const comment = ( + /** @type {Comment} */ + __privateGet(this, _hydrate_open) + ); + hydrate_next(); + if (comment.data === HYDRATION_START_ELSE) { + __privateMethod(this, _Boundary_instances, hydrate_pending_content_fn).call(this); + } else { + __privateMethod(this, _Boundary_instances, hydrate_resolved_content_fn).call(this); + } + } else { + __privateMethod(this, _Boundary_instances, render_fn).call(this); + } + }, flags)); + if (hydrating) { + __privateSet(this, _anchor, hydrate_node); + } + } + /** + * Defer an effect inside a pending boundary until the boundary resolves + * @param {Effect} effect + */ + defer_effect(effect2) { + defer_effect(effect2, __privateGet(this, _dirty_effects), __privateGet(this, _maybe_dirty_effects)); + } + /** + * Returns `false` if the effect exists inside a boundary whose pending snippet is shown + * @returns {boolean} + */ + is_rendered() { + return !this.is_pending && (!this.parent || this.parent.is_rendered()); + } + has_pending_snippet() { + return !!__privateGet(this, _props).pending; + } + /** + * Update the source that powers `$effect.pending()` inside this boundary, + * and controls when the current `pending` snippet (if any) is removed. + * Do not call from inside the class + * @param {1 | -1} d + */ + update_pending_count(d) { + __privateMethod(this, _Boundary_instances, update_pending_count_fn).call(this, d); + __privateSet(this, _local_pending_count, __privateGet(this, _local_pending_count) + d); + if (!__privateGet(this, _effect_pending) || __privateGet(this, _pending_count_update_queued)) return; + __privateSet(this, _pending_count_update_queued, true); + queue_micro_task(() => { + __privateSet(this, _pending_count_update_queued, false); + if (__privateGet(this, _effect_pending)) { + internal_set(__privateGet(this, _effect_pending), __privateGet(this, _local_pending_count)); + } + }); + } + get_effect_pending() { + __privateGet(this, _effect_pending_subscriber).call(this); + return get( + /** @type {Source} */ + __privateGet(this, _effect_pending) + ); + } + /** @param {unknown} error */ + error(error) { + var onerror = __privateGet(this, _props).onerror; + let failed = __privateGet(this, _props).failed; + if (!onerror && !failed) { + throw error; + } + if (__privateGet(this, _main_effect)) { + destroy_effect(__privateGet(this, _main_effect)); + __privateSet(this, _main_effect, null); + } + if (__privateGet(this, _pending_effect)) { + destroy_effect(__privateGet(this, _pending_effect)); + __privateSet(this, _pending_effect, null); + } + if (__privateGet(this, _failed_effect)) { + destroy_effect(__privateGet(this, _failed_effect)); + __privateSet(this, _failed_effect, null); + } + if (hydrating) { + set_hydrate_node( + /** @type {TemplateNode} */ + __privateGet(this, _hydrate_open) + ); + next(); + set_hydrate_node(skip_nodes()); + } + var did_reset = false; + var calling_on_error = false; + const reset2 = () => { + if (did_reset) { + svelte_boundary_reset_noop(); + return; + } + did_reset = true; + if (calling_on_error) { + svelte_boundary_reset_onerror(); + } + if (__privateGet(this, _failed_effect) !== null) { + pause_effect(__privateGet(this, _failed_effect), () => { + __privateSet(this, _failed_effect, null); + }); + } + __privateMethod(this, _Boundary_instances, run_fn).call(this, () => { + Batch.ensure(); + __privateMethod(this, _Boundary_instances, render_fn).call(this); + }); + }; + queue_micro_task(() => { + try { + calling_on_error = true; + onerror == null ? void 0 : onerror(error, reset2); + calling_on_error = false; + } catch (error2) { + invoke_error_boundary(error2, __privateGet(this, _effect) && __privateGet(this, _effect).parent); + } + if (failed) { + __privateSet(this, _failed_effect, __privateMethod(this, _Boundary_instances, run_fn).call(this, () => { + Batch.ensure(); + try { + return branch(() => { + var effect2 = ( + /** @type {Effect} */ + active_effect + ); + effect2.b = this; + effect2.f |= BOUNDARY_EFFECT; + failed( + __privateGet(this, _anchor), + () => error, + () => reset2 + ); + }); + } catch (error2) { + invoke_error_boundary( + error2, + /** @type {Effect} */ + __privateGet(this, _effect).parent + ); + return null; + } + })); + } + }); + } +}; +_anchor = new WeakMap(); +_hydrate_open = new WeakMap(); +_props = new WeakMap(); +_children = new WeakMap(); +_effect = new WeakMap(); +_main_effect = new WeakMap(); +_pending_effect = new WeakMap(); +_failed_effect = new WeakMap(); +_offscreen_fragment = new WeakMap(); +_local_pending_count = new WeakMap(); +_pending_count = new WeakMap(); +_pending_count_update_queued = new WeakMap(); +_dirty_effects = new WeakMap(); +_maybe_dirty_effects = new WeakMap(); +_effect_pending = new WeakMap(); +_effect_pending_subscriber = new WeakMap(); +_Boundary_instances = new WeakSet(); +hydrate_resolved_content_fn = function() { + try { + __privateSet(this, _main_effect, branch(() => __privateGet(this, _children).call(this, __privateGet(this, _anchor)))); + } catch (error) { + this.error(error); + } +}; +hydrate_pending_content_fn = function() { + const pending2 = __privateGet(this, _props).pending; + if (!pending2) return; + this.is_pending = true; + __privateSet(this, _pending_effect, branch(() => pending2(__privateGet(this, _anchor)))); + queue_micro_task(() => { + var fragment = __privateSet(this, _offscreen_fragment, document.createDocumentFragment()); + var anchor = create_text(); + fragment.append(anchor); + __privateSet(this, _main_effect, __privateMethod(this, _Boundary_instances, run_fn).call(this, () => { + Batch.ensure(); + return branch(() => __privateGet(this, _children).call(this, anchor)); + })); + if (__privateGet(this, _pending_count) === 0) { + __privateGet(this, _anchor).before(fragment); + __privateSet(this, _offscreen_fragment, null); + pause_effect( + /** @type {Effect} */ + __privateGet(this, _pending_effect), + () => { + __privateSet(this, _pending_effect, null); + } + ); + this.is_pending = false; + } + }); +}; +render_fn = function() { + try { + this.is_pending = this.has_pending_snippet(); + __privateSet(this, _pending_count, 0); + __privateSet(this, _local_pending_count, 0); + __privateSet(this, _main_effect, branch(() => { + __privateGet(this, _children).call(this, __privateGet(this, _anchor)); + })); + if (__privateGet(this, _pending_count) > 0) { + var fragment = __privateSet(this, _offscreen_fragment, document.createDocumentFragment()); + move_effect(__privateGet(this, _main_effect), fragment); + const pending2 = ( + /** @type {(anchor: Node) => void} */ + __privateGet(this, _props).pending + ); + __privateSet(this, _pending_effect, branch(() => pending2(__privateGet(this, _anchor)))); + } else { + this.is_pending = false; + } + } catch (error) { + this.error(error); + } +}; +/** + * @template T + * @param {() => T} fn + */ +run_fn = function(fn) { + var previous_effect = active_effect; + var previous_reaction = active_reaction; + var previous_ctx = component_context; + set_active_effect(__privateGet(this, _effect)); + set_active_reaction(__privateGet(this, _effect)); + set_component_context(__privateGet(this, _effect).ctx); + try { + return fn(); + } catch (e) { + handle_error(e); + return null; + } finally { + set_active_effect(previous_effect); + set_active_reaction(previous_reaction); + set_component_context(previous_ctx); + } +}; +/** + * Updates the pending count associated with the currently visible pending snippet, + * if any, such that we can replace the snippet with content once work is done + * @param {1 | -1} d + */ +update_pending_count_fn = function(d) { + var _a2; + if (!this.has_pending_snippet()) { + if (this.parent) { + __privateMethod(_a2 = this.parent, _Boundary_instances, update_pending_count_fn).call(_a2, d); + } + return; + } + __privateSet(this, _pending_count, __privateGet(this, _pending_count) + d); + if (__privateGet(this, _pending_count) === 0) { + this.is_pending = false; + for (const e of __privateGet(this, _dirty_effects)) { + set_signal_status(e, DIRTY); + schedule_effect(e); + } + for (const e of __privateGet(this, _maybe_dirty_effects)) { + set_signal_status(e, MAYBE_DIRTY); + schedule_effect(e); + } + __privateGet(this, _dirty_effects).clear(); + __privateGet(this, _maybe_dirty_effects).clear(); + if (__privateGet(this, _pending_effect)) { + pause_effect(__privateGet(this, _pending_effect), () => { + __privateSet(this, _pending_effect, null); + }); + } + if (__privateGet(this, _offscreen_fragment)) { + __privateGet(this, _anchor).before(__privateGet(this, _offscreen_fragment)); + __privateSet(this, _offscreen_fragment, null); + } + } +}; +function get_boundary() { + return ( + /** @type {Boundary} */ + /** @type {Effect} */ + active_effect.b + ); +} +function pending() { + if (active_effect === null) { + effect_pending_outside_reaction(); + } + var boundary2 = active_effect.b; + if (boundary2 === null) { + return 0; + } + return boundary2.get_effect_pending(); +} + +// node_modules/svelte/src/internal/client/reactivity/async.js +function flatten(blockers, sync, async, fn) { + const d = is_runes() ? derived : derived_safe_equal; + var pending2 = blockers.filter((b) => !b.settled); + if (async.length === 0 && pending2.length === 0) { + fn(sync.map(d)); + return; + } + var batch = current_batch; + var parent = ( + /** @type {Effect} */ + active_effect + ); + var restore = capture(); + var blocker_promise = pending2.length === 1 ? pending2[0].promise : pending2.length > 1 ? Promise.all(pending2.map((b) => b.promise)) : null; + function finish(values) { + restore(); + try { + fn(values); + } catch (error) { + if ((parent.f & DESTROYED) === 0) { + invoke_error_boundary(error, parent); + } + } + batch == null ? void 0 : batch.deactivate(); + unset_context(); + } + if (async.length === 0) { + blocker_promise.then(() => finish(sync.map(d))); + return; + } + function run3() { + restore(); + Promise.all(async.map((expression) => async_derived(expression))).then((result) => finish([...sync.map(d), ...result])).catch((error) => invoke_error_boundary(error, parent)); + } + if (blocker_promise) { + blocker_promise.then(run3); + } else { + run3(); + } +} +function run_after_blockers(blockers, fn) { + flatten(blockers, [], [], fn); +} +function capture() { + var previous_effect = active_effect; + var previous_reaction = active_reaction; + var previous_component_context = component_context; + var previous_batch2 = current_batch; + if (true_default) { + var previous_dev_stack = dev_stack; + } + return function restore(activate_batch = true) { + set_active_effect(previous_effect); + set_active_reaction(previous_reaction); + set_component_context(previous_component_context); + if (activate_batch) previous_batch2 == null ? void 0 : previous_batch2.activate(); + if (true_default) { + set_from_async_derived(null); + set_dev_stack(previous_dev_stack); + } + }; +} +async function save(promise) { + var restore = capture(); + var value = await promise; + return () => { + restore(); + return value; + }; +} +async function track_reactivity_loss(promise) { + var previous_async_effect = current_async_effect; + var value = await promise; + return () => { + set_from_async_derived(previous_async_effect); + return value; + }; +} +async function* for_await_track_reactivity_loss(iterable) { + var _a2, _b; + const iterator = ((_a2 = iterable[Symbol.asyncIterator]) == null ? void 0 : _a2.call(iterable)) ?? ((_b = iterable[Symbol.iterator]) == null ? void 0 : _b.call(iterable)); + if (iterator === void 0) { + throw new TypeError("value is not async iterable"); + } + let normal_completion = false; + try { + while (true) { + const { done, value } = (await track_reactivity_loss(iterator.next()))(); + if (done) { + normal_completion = true; + break; + } + yield value; + } + } finally { + if (normal_completion && iterator.return !== void 0) { + return ( + /** @type {TReturn} */ + (await track_reactivity_loss(iterator.return()))().value + ); + } + } +} +function unset_context() { + set_active_effect(null); + set_active_reaction(null); + set_component_context(null); + if (true_default) { + set_from_async_derived(null); + set_dev_stack(null); + } +} +function run2(thunks) { + const restore = capture(); + var boundary2 = get_boundary(); + var batch = ( + /** @type {Batch} */ + current_batch + ); + var blocking = boundary2.is_rendered(); + boundary2.update_pending_count(1); + batch.increment(blocking); + var active = ( + /** @type {Effect} */ + active_effect + ); + var errored = null; + const handle_error2 = (error) => { + errored = { error }; + if (!aborted(active)) { + invoke_error_boundary(error, active); + } + }; + var promise = Promise.resolve(thunks[0]()).catch(handle_error2); + var blocker = { promise, settled: false }; + var blockers = [blocker]; + promise.finally(() => { + blocker.settled = true; + }); + for (const fn of thunks.slice(1)) { + promise = promise.then(() => { + if (errored) { + throw errored.error; + } + if (aborted(active)) { + throw STALE_REACTION; + } + restore(); + return fn(); + }).catch(handle_error2); + const blocker2 = { promise, settled: false }; + blockers.push(blocker2); + promise.finally(() => { + var _a2; + blocker2.settled = true; + unset_context(); + (_a2 = current_batch) == null ? void 0 : _a2.deactivate(); + }); + } + promise.then(() => Promise.resolve()).finally(() => { + boundary2.update_pending_count(-1); + batch.decrement(blocking); + }); + return blockers; +} +function wait(blockers) { + return Promise.all(blockers.map((b) => b.promise)); +} + +// node_modules/svelte/src/internal/client/reactivity/deriveds.js +var current_async_effect = null; +function set_from_async_derived(v) { + current_async_effect = v; +} +var recent_async_deriveds = /* @__PURE__ */ new Set(); +function derived(fn) { + var flags2 = DERIVED | DIRTY; + var parent_derived = active_reaction !== null && (active_reaction.f & DERIVED) !== 0 ? ( + /** @type {Derived} */ + active_reaction + ) : null; + if (active_effect !== null) { + active_effect.f |= EFFECT_PRESERVED; + } + const signal = { + ctx: component_context, + deps: null, + effects: null, + equals, + f: flags2, + fn, + reactions: null, + rv: 0, + v: ( + /** @type {V} */ + UNINITIALIZED + ), + wv: 0, + parent: parent_derived ?? active_effect, + ac: null + }; + if (true_default && tracing_mode_flag) { + signal.created = get_error("created at"); + } + return signal; +} +function async_derived(fn, label2, location) { + let parent = ( + /** @type {Effect | null} */ + active_effect + ); + if (parent === null) { + async_derived_orphan(); + } + var boundary2 = ( + /** @type {Boundary} */ + parent.b + ); + var promise = ( + /** @type {Promise} */ + /** @type {unknown} */ + void 0 + ); + var signal = source( + /** @type {V} */ + UNINITIALIZED + ); + if (true_default) signal.label = label2; + var should_suspend = !active_reaction; + var deferreds = /* @__PURE__ */ new Map(); + async_effect(() => { + var _a2; + if (true_default) current_async_effect = active_effect; + var d = deferred(); + promise = d.promise; + try { + Promise.resolve(fn()).then(d.resolve, d.reject).then(() => { + if (batch === current_batch && batch.committed) { + batch.deactivate(); + } + unset_context(); + }); + } catch (error) { + d.reject(error); + unset_context(); + } + if (true_default) current_async_effect = null; + var batch = ( + /** @type {Batch} */ + current_batch + ); + if (should_suspend) { + var blocking = boundary2.is_rendered(); + boundary2.update_pending_count(1); + batch.increment(blocking); + (_a2 = deferreds.get(batch)) == null ? void 0 : _a2.reject(STALE_REACTION); + deferreds.delete(batch); + deferreds.set(batch, d); + } + const handler = (value, error = void 0) => { + current_async_effect = null; + batch.activate(); + if (error) { + if (error !== STALE_REACTION) { + signal.f |= ERROR_VALUE; + internal_set(signal, error); + } + } else { + if ((signal.f & ERROR_VALUE) !== 0) { + signal.f ^= ERROR_VALUE; + } + internal_set(signal, value); + for (const [b, d2] of deferreds) { + deferreds.delete(b); + if (b === batch) break; + d2.reject(STALE_REACTION); + } + if (true_default && location !== void 0) { + recent_async_deriveds.add(signal); + setTimeout(() => { + if (recent_async_deriveds.has(signal)) { + await_waterfall( + /** @type {string} */ + signal.label, + location + ); + recent_async_deriveds.delete(signal); + } + }); + } + } + if (should_suspend) { + boundary2.update_pending_count(-1); + batch.decrement(blocking); + } + }; + d.promise.then(handler, (e) => handler(null, e || "unknown")); + }); + teardown(() => { + for (const d of deferreds.values()) { + d.reject(STALE_REACTION); + } + }); + if (true_default) { + signal.f |= ASYNC; + } + return new Promise((fulfil) => { + function next2(p) { + function go() { + if (p === promise) { + fulfil(signal); + } else { + next2(promise); + } + } + p.then(go, go); + } + next2(promise); + }); +} +function user_derived(fn) { + const d = derived(fn); + if (!async_mode_flag) push_reaction_value(d); + return d; +} +function derived_safe_equal(fn) { + const signal = derived(fn); + signal.equals = safe_equals; + return signal; +} +function destroy_derived_effects(derived2) { + var effects = derived2.effects; + if (effects !== null) { + derived2.effects = null; + for (var i = 0; i < effects.length; i += 1) { + destroy_effect( + /** @type {Effect} */ + effects[i] + ); + } + } +} +var stack = []; +function get_derived_parent_effect(derived2) { + var parent = derived2.parent; + while (parent !== null) { + if ((parent.f & DERIVED) === 0) { + return (parent.f & DESTROYED) === 0 ? ( + /** @type {Effect} */ + parent + ) : null; + } + parent = parent.parent; + } + return null; +} +function execute_derived(derived2) { + var value; + var prev_active_effect = active_effect; + set_active_effect(get_derived_parent_effect(derived2)); + if (true_default) { + let prev_eager_effects = eager_effects; + set_eager_effects(/* @__PURE__ */ new Set()); + try { + if (includes.call(stack, derived2)) { + derived_references_self(); + } + stack.push(derived2); + derived2.f &= ~WAS_MARKED; + destroy_derived_effects(derived2); + value = update_reaction(derived2); + } finally { + set_active_effect(prev_active_effect); + set_eager_effects(prev_eager_effects); + stack.pop(); + } + } else { + try { + derived2.f &= ~WAS_MARKED; + destroy_derived_effects(derived2); + value = update_reaction(derived2); + } finally { + set_active_effect(prev_active_effect); + } + } + return value; +} +function update_derived(derived2) { + var _a2, _b; + var value = execute_derived(derived2); + if (!derived2.equals(value)) { + derived2.wv = increment_write_version(); + if (!((_a2 = current_batch) == null ? void 0 : _a2.is_fork) || derived2.deps === null) { + derived2.v = value; + if (derived2.deps === null) { + set_signal_status(derived2, CLEAN); + return; + } + } + } + if (is_destroying_effect) { + return; + } + if (batch_values !== null) { + if (effect_tracking() || ((_b = current_batch) == null ? void 0 : _b.is_fork)) { + batch_values.set(derived2, value); + } + } else { + update_derived_status(derived2); + } +} +function freeze_derived_effects(derived2) { + var _a2, _b; + if (derived2.effects === null) return; + for (const e of derived2.effects) { + if (e.teardown || e.ac) { + (_a2 = e.teardown) == null ? void 0 : _a2.call(e); + (_b = e.ac) == null ? void 0 : _b.abort(STALE_REACTION); + e.teardown = noop; + e.ac = null; + remove_reactions(e, 0); + destroy_effect_children(e); + } + } +} +function unfreeze_derived_effects(derived2) { + if (derived2.effects === null) return; + for (const e of derived2.effects) { + if (e.teardown) { + update_effect(e); + } + } +} + +// node_modules/svelte/src/internal/client/reactivity/sources.js +var eager_effects = /* @__PURE__ */ new Set(); +var old_values = /* @__PURE__ */ new Map(); +function set_eager_effects(v) { + eager_effects = v; +} +var eager_effects_deferred = false; +function set_eager_effects_deferred() { + eager_effects_deferred = true; +} +function source(v, stack2) { + var signal = { + f: 0, + // TODO ideally we could skip this altogether, but it causes type errors + v, + reactions: null, + equals, + rv: 0, + wv: 0 + }; + if (true_default && tracing_mode_flag) { + signal.created = stack2 ?? get_error("created at"); + signal.updated = null; + signal.set_during_effect = false; + signal.trace = null; + } + return signal; +} +function state(v, stack2) { + const s = source(v, stack2); + push_reaction_value(s); + return s; +} +function mutable_source(initial_value, immutable = false, trackable = true) { + var _a2; + const s = source(initial_value); + if (!immutable) { + s.equals = safe_equals; + } + if (legacy_mode_flag && trackable && component_context !== null && component_context.l !== null) { + ((_a2 = component_context.l).s ?? (_a2.s = [])).push(s); + } + return s; +} +function mutate(source2, value) { + set( + source2, + untrack(() => get(source2)) + ); + return value; +} +function set(source2, value, should_proxy = false) { + if (active_reaction !== null && // since we are untracking the function inside `$inspect.with` we need to add this check + // to ensure we error if state is set inside an inspect effect + (!untracking || (active_reaction.f & EAGER_EFFECT) !== 0) && is_runes() && (active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | EAGER_EFFECT)) !== 0 && (current_sources === null || !includes.call(current_sources, source2))) { + state_unsafe_mutation(); + } + let new_value = should_proxy ? proxy(value) : value; + if (true_default) { + tag_proxy( + new_value, + /** @type {string} */ + source2.label + ); + } + return internal_set(source2, new_value); +} +function internal_set(source2, value) { + var _a2; + if (!source2.equals(value)) { + var old_value = source2.v; + if (is_destroying_effect) { + old_values.set(source2, value); + } else { + old_values.set(source2, old_value); + } + source2.v = value; + var batch = Batch.ensure(); + batch.capture(source2, old_value); + if (true_default) { + if (tracing_mode_flag || active_effect !== null) { + source2.updated ?? (source2.updated = /* @__PURE__ */ new Map()); + const count = (((_a2 = source2.updated.get("")) == null ? void 0 : _a2.count) ?? 0) + 1; + source2.updated.set("", { error: ( + /** @type {any} */ + null + ), count }); + if (tracing_mode_flag || count > 5) { + const error = get_error("updated at"); + if (error !== null) { + let entry = source2.updated.get(error.stack); + if (!entry) { + entry = { error, count: 0 }; + source2.updated.set(error.stack, entry); + } + entry.count++; + } + } + } + if (active_effect !== null) { + source2.set_during_effect = true; + } + } + if ((source2.f & DERIVED) !== 0) { + const derived2 = ( + /** @type {Derived} */ + source2 + ); + if ((source2.f & DIRTY) !== 0) { + execute_derived(derived2); + } + update_derived_status(derived2); + } + source2.wv = increment_write_version(); + mark_reactions(source2, DIRTY); + if (is_runes() && active_effect !== null && (active_effect.f & CLEAN) !== 0 && (active_effect.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0) { + if (untracked_writes === null) { + set_untracked_writes([source2]); + } else { + untracked_writes.push(source2); + } + } + if (!batch.is_fork && eager_effects.size > 0 && !eager_effects_deferred) { + flush_eager_effects(); + } + } + return value; +} +function flush_eager_effects() { + eager_effects_deferred = false; + for (const effect2 of eager_effects) { + if ((effect2.f & CLEAN) !== 0) { + set_signal_status(effect2, MAYBE_DIRTY); + } + if (is_dirty(effect2)) { + update_effect(effect2); + } + } + eager_effects.clear(); +} +function update(source2, d = 1) { + var value = get(source2); + var result = d === 1 ? value++ : value--; + set(source2, value); + return result; +} +function update_pre(source2, d = 1) { + var value = get(source2); + return set(source2, d === 1 ? ++value : --value); +} +function increment(source2) { + set(source2, source2.v + 1); +} +function mark_reactions(signal, status) { + var _a2; + var reactions = signal.reactions; + if (reactions === null) return; + var runes = is_runes(); + var length = reactions.length; + for (var i = 0; i < length; i++) { + var reaction = reactions[i]; + var flags2 = reaction.f; + if (!runes && reaction === active_effect) continue; + if (true_default && (flags2 & EAGER_EFFECT) !== 0) { + eager_effects.add(reaction); + continue; + } + var not_dirty = (flags2 & DIRTY) === 0; + if (not_dirty) { + set_signal_status(reaction, status); + } + if ((flags2 & DERIVED) !== 0) { + var derived2 = ( + /** @type {Derived} */ + reaction + ); + (_a2 = batch_values) == null ? void 0 : _a2.delete(derived2); + if ((flags2 & WAS_MARKED) === 0) { + if (flags2 & CONNECTED) { + reaction.f |= WAS_MARKED; + } + mark_reactions(derived2, MAYBE_DIRTY); + } + } else if (not_dirty) { + if ((flags2 & BLOCK_EFFECT) !== 0 && eager_block_effects !== null) { + eager_block_effects.add( + /** @type {Effect} */ + reaction + ); + } + schedule_effect( + /** @type {Effect} */ + reaction + ); + } + } +} + +// node_modules/svelte/src/internal/client/reactivity/batch.js +var batches = /* @__PURE__ */ new Set(); +var current_batch = null; +var previous_batch = null; +var batch_values = null; +var queued_root_effects = []; +var last_scheduled_effect = null; +var is_flushing = false; +var is_flushing_sync = false; +var _commit_callbacks, _discard_callbacks, _pending, _blocking_pending, _deferred, _dirty_effects2, _maybe_dirty_effects2, _skipped_branches, _decrement_queued, _Batch_instances, traverse_effect_tree_fn, defer_effects_fn, commit_fn; +var _Batch = class _Batch { + constructor() { + __privateAdd(this, _Batch_instances); + __publicField(this, "committed", false); + /** + * The current values of any sources that are updated in this batch + * They keys of this map are identical to `this.#previous` + * @type {Map} + */ + __publicField(this, "current", /* @__PURE__ */ new Map()); + /** + * The values of any sources that are updated in this batch _before_ those updates took place. + * They keys of this map are identical to `this.#current` + * @type {Map} + */ + __publicField(this, "previous", /* @__PURE__ */ new Map()); + /** + * When the batch is committed (and the DOM is updated), we need to remove old branches + * and append new ones by calling the functions added inside (if/each/key/etc) blocks + * @type {Set<() => void>} + */ + __privateAdd(this, _commit_callbacks, /* @__PURE__ */ new Set()); + /** + * If a fork is discarded, we need to destroy any effects that are no longer needed + * @type {Set<(batch: Batch) => void>} + */ + __privateAdd(this, _discard_callbacks, /* @__PURE__ */ new Set()); + /** + * The number of async effects that are currently in flight + */ + __privateAdd(this, _pending, 0); + /** + * The number of async effects that are currently in flight, _not_ inside a pending boundary + */ + __privateAdd(this, _blocking_pending, 0); + /** + * A deferred that resolves when the batch is committed, used with `settled()` + * TODO replace with Promise.withResolvers once supported widely enough + * @type {{ promise: Promise, resolve: (value?: any) => void, reject: (reason: unknown) => void } | null} + */ + __privateAdd(this, _deferred, null); + /** + * Deferred effects (which run after async work has completed) that are DIRTY + * @type {Set} + */ + __privateAdd(this, _dirty_effects2, /* @__PURE__ */ new Set()); + /** + * Deferred effects that are MAYBE_DIRTY + * @type {Set} + */ + __privateAdd(this, _maybe_dirty_effects2, /* @__PURE__ */ new Set()); + /** + * A map of branches that still exist, but will be destroyed when this batch + * is committed — we skip over these during `process`. + * The value contains child effects that were dirty/maybe_dirty before being reset, + * so they can be rescheduled if the branch survives. + * @type {Map} + */ + __privateAdd(this, _skipped_branches, /* @__PURE__ */ new Map()); + __publicField(this, "is_fork", false); + __privateAdd(this, _decrement_queued, false); + } + is_deferred() { + return this.is_fork || __privateGet(this, _blocking_pending) > 0; + } + /** + * Add an effect to the #skipped_branches map and reset its children + * @param {Effect} effect + */ + skip_effect(effect2) { + if (!__privateGet(this, _skipped_branches).has(effect2)) { + __privateGet(this, _skipped_branches).set(effect2, { d: [], m: [] }); + } + } + /** + * Remove an effect from the #skipped_branches map and reschedule + * any tracked dirty/maybe_dirty child effects + * @param {Effect} effect + */ + unskip_effect(effect2) { + var tracked = __privateGet(this, _skipped_branches).get(effect2); + if (tracked) { + __privateGet(this, _skipped_branches).delete(effect2); + for (var e of tracked.d) { + set_signal_status(e, DIRTY); + schedule_effect(e); + } + for (e of tracked.m) { + set_signal_status(e, MAYBE_DIRTY); + schedule_effect(e); + } + } + } + /** + * + * @param {Effect[]} root_effects + */ + process(root_effects) { + var _a2; + queued_root_effects = []; + this.apply(); + var effects = []; + var render_effects = []; + for (const root of root_effects) { + __privateMethod(this, _Batch_instances, traverse_effect_tree_fn).call(this, root, effects, render_effects); + } + if (this.is_deferred()) { + __privateMethod(this, _Batch_instances, defer_effects_fn).call(this, render_effects); + __privateMethod(this, _Batch_instances, defer_effects_fn).call(this, effects); + for (const [e, t] of __privateGet(this, _skipped_branches)) { + reset_branch(e, t); + } + } else { + for (const fn of __privateGet(this, _commit_callbacks)) fn(); + __privateGet(this, _commit_callbacks).clear(); + if (__privateGet(this, _pending) === 0) { + __privateMethod(this, _Batch_instances, commit_fn).call(this); + } + previous_batch = this; + current_batch = null; + flush_queued_effects(render_effects); + flush_queued_effects(effects); + previous_batch = null; + (_a2 = __privateGet(this, _deferred)) == null ? void 0 : _a2.resolve(); + } + batch_values = null; + } + /** + * Associate a change to a given source with the current + * batch, noting its previous and current values + * @param {Source} source + * @param {any} value + */ + capture(source2, value) { + if (value !== UNINITIALIZED && !this.previous.has(source2)) { + this.previous.set(source2, value); + } + if ((source2.f & ERROR_VALUE) === 0) { + this.current.set(source2, source2.v); + batch_values == null ? void 0 : batch_values.set(source2, source2.v); + } + } + activate() { + current_batch = this; + this.apply(); + } + deactivate() { + if (current_batch !== this) return; + current_batch = null; + batch_values = null; + } + flush() { + this.activate(); + if (queued_root_effects.length > 0) { + flush_effects(); + if (current_batch !== null && current_batch !== this) { + return; + } + } else if (__privateGet(this, _pending) === 0) { + this.process([]); + } + this.deactivate(); + } + discard() { + for (const fn of __privateGet(this, _discard_callbacks)) fn(this); + __privateGet(this, _discard_callbacks).clear(); + } + /** + * + * @param {boolean} blocking + */ + increment(blocking) { + __privateSet(this, _pending, __privateGet(this, _pending) + 1); + if (blocking) __privateSet(this, _blocking_pending, __privateGet(this, _blocking_pending) + 1); + } + /** + * + * @param {boolean} blocking + */ + decrement(blocking) { + __privateSet(this, _pending, __privateGet(this, _pending) - 1); + if (blocking) __privateSet(this, _blocking_pending, __privateGet(this, _blocking_pending) - 1); + if (__privateGet(this, _decrement_queued)) return; + __privateSet(this, _decrement_queued, true); + queue_micro_task(() => { + __privateSet(this, _decrement_queued, false); + if (!this.is_deferred()) { + this.revive(); + } else if (queued_root_effects.length > 0) { + this.flush(); + } + }); + } + revive() { + for (const e of __privateGet(this, _dirty_effects2)) { + __privateGet(this, _maybe_dirty_effects2).delete(e); + set_signal_status(e, DIRTY); + schedule_effect(e); + } + for (const e of __privateGet(this, _maybe_dirty_effects2)) { + set_signal_status(e, MAYBE_DIRTY); + schedule_effect(e); + } + this.flush(); + } + /** @param {() => void} fn */ + oncommit(fn) { + __privateGet(this, _commit_callbacks).add(fn); + } + /** @param {(batch: Batch) => void} fn */ + ondiscard(fn) { + __privateGet(this, _discard_callbacks).add(fn); + } + settled() { + return (__privateGet(this, _deferred) ?? __privateSet(this, _deferred, deferred())).promise; + } + static ensure() { + if (current_batch === null) { + const batch = current_batch = new _Batch(); + batches.add(current_batch); + if (!is_flushing_sync) { + queue_micro_task(() => { + if (current_batch !== batch) { + return; + } + batch.flush(); + }); + } + } + return current_batch; + } + apply() { + if (!async_mode_flag || !this.is_fork && batches.size === 1) return; + batch_values = new Map(this.current); + for (const batch of batches) { + if (batch === this) continue; + for (const [source2, previous] of batch.previous) { + if (!batch_values.has(source2)) { + batch_values.set(source2, previous); + } + } + } + } +}; +_commit_callbacks = new WeakMap(); +_discard_callbacks = new WeakMap(); +_pending = new WeakMap(); +_blocking_pending = new WeakMap(); +_deferred = new WeakMap(); +_dirty_effects2 = new WeakMap(); +_maybe_dirty_effects2 = new WeakMap(); +_skipped_branches = new WeakMap(); +_decrement_queued = new WeakMap(); +_Batch_instances = new WeakSet(); +/** + * Traverse the effect tree, executing effects or stashing + * them for later execution as appropriate + * @param {Effect} root + * @param {Effect[]} effects + * @param {Effect[]} render_effects + */ +traverse_effect_tree_fn = function(root, effects, render_effects) { + var _a2; + root.f ^= CLEAN; + var effect2 = root.first; + var pending_boundary = null; + while (effect2 !== null) { + var flags2 = effect2.f; + var is_branch = (flags2 & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0; + var is_skippable_branch = is_branch && (flags2 & CLEAN) !== 0; + var skip = is_skippable_branch || (flags2 & INERT) !== 0 || __privateGet(this, _skipped_branches).has(effect2); + if (async_mode_flag && pending_boundary === null && (flags2 & BOUNDARY_EFFECT) !== 0 && ((_a2 = effect2.b) == null ? void 0 : _a2.is_pending)) { + pending_boundary = effect2; + } + if (!skip && effect2.fn !== null) { + if (is_branch) { + effect2.f ^= CLEAN; + } else if (pending_boundary !== null && (flags2 & (EFFECT | RENDER_EFFECT | MANAGED_EFFECT)) !== 0) { + pending_boundary.b.defer_effect(effect2); + } else if ((flags2 & EFFECT) !== 0) { + effects.push(effect2); + } else if (async_mode_flag && (flags2 & (RENDER_EFFECT | MANAGED_EFFECT)) !== 0) { + render_effects.push(effect2); + } else if (is_dirty(effect2)) { + if ((flags2 & BLOCK_EFFECT) !== 0) __privateGet(this, _maybe_dirty_effects2).add(effect2); + update_effect(effect2); + } + var child2 = effect2.first; + if (child2 !== null) { + effect2 = child2; + continue; + } + } + while (effect2 !== null) { + if (effect2 === pending_boundary) { + pending_boundary = null; + } + var next2 = effect2.next; + if (next2 !== null) { + effect2 = next2; + break; + } + effect2 = effect2.parent; + } + } +}; +/** + * @param {Effect[]} effects + */ +defer_effects_fn = function(effects) { + for (var i = 0; i < effects.length; i += 1) { + defer_effect(effects[i], __privateGet(this, _dirty_effects2), __privateGet(this, _maybe_dirty_effects2)); + } +}; +commit_fn = function() { + var _a2; + if (batches.size > 1) { + this.previous.clear(); + var previous_batch_values = batch_values; + var is_earlier = true; + for (const batch of batches) { + if (batch === this) { + is_earlier = false; + continue; + } + const sources = []; + for (const [source2, value] of this.current) { + if (batch.current.has(source2)) { + if (is_earlier && value !== batch.current.get(source2)) { + batch.current.set(source2, value); + } else { + continue; + } + } + sources.push(source2); + } + if (sources.length === 0) { + continue; + } + const others = [...batch.current.keys()].filter((s) => !this.current.has(s)); + if (others.length > 0) { + var prev_queued_root_effects = queued_root_effects; + queued_root_effects = []; + const marked = /* @__PURE__ */ new Set(); + const checked = /* @__PURE__ */ new Map(); + for (const source2 of sources) { + mark_effects(source2, others, marked, checked); + } + if (queued_root_effects.length > 0) { + current_batch = batch; + batch.apply(); + for (const root of queued_root_effects) { + __privateMethod(_a2 = batch, _Batch_instances, traverse_effect_tree_fn).call(_a2, root, [], []); + } + batch.deactivate(); + } + queued_root_effects = prev_queued_root_effects; + } + } + current_batch = null; + batch_values = previous_batch_values; + } + this.committed = true; + batches.delete(this); +}; +var Batch = _Batch; +function flushSync(fn) { + var was_flushing_sync = is_flushing_sync; + is_flushing_sync = true; + try { + var result; + if (fn) { + if (current_batch !== null) { + flush_effects(); + } + result = fn(); + } + while (true) { + flush_tasks(); + if (queued_root_effects.length === 0) { + current_batch == null ? void 0 : current_batch.flush(); + if (queued_root_effects.length === 0) { + last_scheduled_effect = null; + return ( + /** @type {T} */ + result + ); + } + } + flush_effects(); + } + } finally { + is_flushing_sync = was_flushing_sync; + } +} +function flush_effects() { + is_flushing = true; + var source_stacks = true_default ? /* @__PURE__ */ new Set() : null; + try { + var flush_count = 0; + while (queued_root_effects.length > 0) { + var batch = Batch.ensure(); + if (flush_count++ > 1e3) { + if (true_default) { + var updates = /* @__PURE__ */ new Map(); + for (const source2 of batch.current.keys()) { + for (const [stack2, update2] of source2.updated ?? []) { + var entry = updates.get(stack2); + if (!entry) { + entry = { error: update2.error, count: 0 }; + updates.set(stack2, entry); + } + entry.count += update2.count; + } + } + for (const update2 of updates.values()) { + if (update2.error) { + console.error(update2.error); + } + } + } + infinite_loop_guard(); + } + batch.process(queued_root_effects); + old_values.clear(); + if (true_default) { + for (const source2 of batch.current.keys()) { + source_stacks.add(source2); + } + } + } + } finally { + queued_root_effects = []; + is_flushing = false; + last_scheduled_effect = null; + if (true_default) { + for ( + const source2 of + /** @type {Set} */ + source_stacks + ) { + source2.updated = null; + } + } + } +} +function infinite_loop_guard() { + try { + effect_update_depth_exceeded(); + } catch (error) { + if (true_default) { + define_property(error, "stack", { value: "" }); + } + invoke_error_boundary(error, last_scheduled_effect); + } +} +var eager_block_effects = null; +function flush_queued_effects(effects) { + var length = effects.length; + if (length === 0) return; + var i = 0; + while (i < length) { + var effect2 = effects[i++]; + if ((effect2.f & (DESTROYED | INERT)) === 0 && is_dirty(effect2)) { + eager_block_effects = /* @__PURE__ */ new Set(); + update_effect(effect2); + if (effect2.deps === null && effect2.first === null && effect2.nodes === null && effect2.teardown === null && effect2.ac === null) { + unlink_effect(effect2); + } + if ((eager_block_effects == null ? void 0 : eager_block_effects.size) > 0) { + old_values.clear(); + for (const e of eager_block_effects) { + if ((e.f & (DESTROYED | INERT)) !== 0) continue; + const ordered_effects = [e]; + let ancestor = e.parent; + while (ancestor !== null) { + if (eager_block_effects.has(ancestor)) { + eager_block_effects.delete(ancestor); + ordered_effects.push(ancestor); + } + ancestor = ancestor.parent; + } + for (let j = ordered_effects.length - 1; j >= 0; j--) { + const e2 = ordered_effects[j]; + if ((e2.f & (DESTROYED | INERT)) !== 0) continue; + update_effect(e2); + } + } + eager_block_effects.clear(); + } + } + } + eager_block_effects = null; +} +function mark_effects(value, sources, marked, checked) { + if (marked.has(value)) return; + marked.add(value); + if (value.reactions !== null) { + for (const reaction of value.reactions) { + const flags2 = reaction.f; + if ((flags2 & DERIVED) !== 0) { + mark_effects( + /** @type {Derived} */ + reaction, + sources, + marked, + checked + ); + } else if ((flags2 & (ASYNC | BLOCK_EFFECT)) !== 0 && (flags2 & DIRTY) === 0 && depends_on(reaction, sources, checked)) { + set_signal_status(reaction, DIRTY); + schedule_effect( + /** @type {Effect} */ + reaction + ); + } + } + } +} +function mark_eager_effects(value, effects) { + if (value.reactions === null) return; + for (const reaction of value.reactions) { + const flags2 = reaction.f; + if ((flags2 & DERIVED) !== 0) { + mark_eager_effects( + /** @type {Derived} */ + reaction, + effects + ); + } else if ((flags2 & EAGER_EFFECT) !== 0) { + set_signal_status(reaction, DIRTY); + effects.add( + /** @type {Effect} */ + reaction + ); + } + } +} +function depends_on(reaction, sources, checked) { + const depends = checked.get(reaction); + if (depends !== void 0) return depends; + if (reaction.deps !== null) { + for (const dep of reaction.deps) { + if (includes.call(sources, dep)) { + return true; + } + if ((dep.f & DERIVED) !== 0 && depends_on( + /** @type {Derived} */ + dep, + sources, + checked + )) { + checked.set( + /** @type {Derived} */ + dep, + true + ); + return true; + } + } + } + checked.set(reaction, false); + return false; +} +function schedule_effect(signal) { + var effect2 = last_scheduled_effect = signal; + while (effect2.parent !== null) { + effect2 = effect2.parent; + var flags2 = effect2.f; + if (is_flushing && effect2 === active_effect && (flags2 & BLOCK_EFFECT) !== 0 && (flags2 & HEAD_EFFECT) === 0) { + return; + } + if ((flags2 & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) { + if ((flags2 & CLEAN) === 0) return; + effect2.f ^= CLEAN; + } + } + queued_root_effects.push(effect2); +} +var eager_versions = []; +function eager_flush() { + try { + flushSync(() => { + for (const version of eager_versions) { + update(version); + } + }); + } finally { + eager_versions = []; + } +} +function eager(fn) { + var version = source(0); + var initial = true; + var value = ( + /** @type {T} */ + void 0 + ); + get(version); + eager_effect(() => { + if (initial) { + var previous_batch_values = batch_values; + try { + batch_values = null; + value = fn(); + } finally { + batch_values = previous_batch_values; + } + return; + } + if (eager_versions.length === 0) { + queue_micro_task(eager_flush); + } + eager_versions.push(version); + }); + initial = false; + return value; +} +function reset_branch(effect2, tracked) { + if ((effect2.f & BRANCH_EFFECT) !== 0 && (effect2.f & CLEAN) !== 0) { + return; + } + if ((effect2.f & DIRTY) !== 0) { + tracked.d.push(effect2); + } else if ((effect2.f & MAYBE_DIRTY) !== 0) { + tracked.m.push(effect2); + } + set_signal_status(effect2, CLEAN); + var e = effect2.first; + while (e !== null) { + reset_branch(e, tracked); + e = e.next; + } +} +function fork(fn) { + if (!async_mode_flag) { + experimental_async_required("fork"); + } + if (current_batch !== null) { + fork_timing(); + } + var batch = Batch.ensure(); + batch.is_fork = true; + batch_values = /* @__PURE__ */ new Map(); + var committed = false; + var settled2 = batch.settled(); + flushSync(fn); + for (var [source2, value] of batch.previous) { + source2.v = value; + } + for (source2 of batch.current.keys()) { + if ((source2.f & DERIVED) !== 0) { + set_signal_status(source2, DIRTY); + } + } + return { + commit: async () => { + if (committed) { + await settled2; + return; + } + if (!batches.has(batch)) { + fork_discarded(); + } + committed = true; + batch.is_fork = false; + for (var [source3, value2] of batch.current) { + source3.v = value2; + source3.wv = increment_write_version(); + } + flushSync(() => { + var eager_effects2 = /* @__PURE__ */ new Set(); + for (var source4 of batch.current.keys()) { + mark_eager_effects(source4, eager_effects2); + } + set_eager_effects(eager_effects2); + flush_eager_effects(); + }); + batch.revive(); + await settled2; + }, + discard: () => { + for (var source3 of batch.current.keys()) { + source3.wv = increment_write_version(); + } + if (!committed && batches.has(batch)) { + batches.delete(batch); + batch.discard(); + } + } + }; +} + +// node_modules/svelte/src/internal/client/dom/elements/misc.js +function autofocus(dom, value) { + if (value) { + const body = document.body; + dom.autofocus = true; + queue_micro_task(() => { + if (document.activeElement === body) { + dom.focus(); + } + }); + } +} +function remove_textarea_child(dom) { + if (hydrating && get_first_child(dom) !== null) { + clear_text_content(dom); + } +} +var listening_to_form_reset = false; +function add_form_reset_listener() { + if (!listening_to_form_reset) { + listening_to_form_reset = true; + document.addEventListener( + "reset", + (evt) => { + Promise.resolve().then(() => { + var _a2; + if (!evt.defaultPrevented) { + for ( + const e of + /**@type {HTMLFormElement} */ + evt.target.elements + ) { + (_a2 = e.__on_r) == null ? void 0 : _a2.call(e); + } + } + }); + }, + // In the capture phase to guarantee we get noticed of it (no possibility of stopPropagation) + { capture: true } + ); + } +} + +// node_modules/svelte/src/internal/client/dom/elements/bindings/shared.js +function listen(target, events, handler, call_handler_immediately = true) { + if (call_handler_immediately) { + handler(); + } + for (var name of events) { + target.addEventListener(name, handler); + } + teardown(() => { + for (var name2 of events) { + target.removeEventListener(name2, handler); + } + }); +} +function without_reactive_context(fn) { + var previous_reaction = active_reaction; + var previous_effect = active_effect; + set_active_reaction(null); + set_active_effect(null); + try { + return fn(); + } finally { + set_active_reaction(previous_reaction); + set_active_effect(previous_effect); + } +} +function listen_to_event_and_reset_event(element, event2, handler, on_reset = handler) { + element.addEventListener(event2, () => without_reactive_context(handler)); + const prev = element.__on_r; + if (prev) { + element.__on_r = () => { + prev(); + on_reset(true); + }; + } else { + element.__on_r = () => on_reset(true); + } + add_form_reset_listener(); +} + +// node_modules/svelte/src/internal/client/reactivity/effects.js +function validate_effect(rune) { + if (active_effect === null) { + if (active_reaction === null) { + effect_orphan(rune); + } + effect_in_unowned_derived(); + } + if (is_destroying_effect) { + effect_in_teardown(rune); + } +} +function push_effect(effect2, parent_effect) { + var parent_last = parent_effect.last; + if (parent_last === null) { + parent_effect.last = parent_effect.first = effect2; + } else { + parent_last.next = effect2; + effect2.prev = parent_last; + parent_effect.last = effect2; + } +} +function create_effect(type, fn, sync) { + var parent = active_effect; + if (true_default) { + while (parent !== null && (parent.f & EAGER_EFFECT) !== 0) { + parent = parent.parent; + } + } + if (parent !== null && (parent.f & INERT) !== 0) { + type |= INERT; + } + var effect2 = { + ctx: component_context, + deps: null, + nodes: null, + f: type | DIRTY | CONNECTED, + first: null, + fn, + last: null, + next: null, + parent, + b: parent && parent.b, + prev: null, + teardown: null, + wv: 0, + ac: null + }; + if (true_default) { + effect2.component_function = dev_current_component_function; + } + if (sync) { + try { + update_effect(effect2); + } catch (e2) { + destroy_effect(effect2); + throw e2; + } + } else if (fn !== null) { + schedule_effect(effect2); + } + var e = effect2; + if (sync && e.deps === null && e.teardown === null && e.nodes === null && e.first === e.last && // either `null`, or a singular child + (e.f & EFFECT_PRESERVED) === 0) { + e = e.first; + if ((type & BLOCK_EFFECT) !== 0 && (type & EFFECT_TRANSPARENT) !== 0 && e !== null) { + e.f |= EFFECT_TRANSPARENT; + } + } + if (e !== null) { + e.parent = parent; + if (parent !== null) { + push_effect(e, parent); + } + if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0 && (type & ROOT_EFFECT) === 0) { + var derived2 = ( + /** @type {Derived} */ + active_reaction + ); + (derived2.effects ?? (derived2.effects = [])).push(e); + } + } + return effect2; +} +function effect_tracking() { + return active_reaction !== null && !untracking; +} +function teardown(fn) { + const effect2 = create_effect(RENDER_EFFECT, null, false); + set_signal_status(effect2, CLEAN); + effect2.teardown = fn; + return effect2; +} +function user_effect(fn) { + validate_effect("$effect"); + if (true_default) { + define_property(fn, "name", { + value: "$effect" + }); + } + var flags2 = ( + /** @type {Effect} */ + active_effect.f + ); + var defer = !active_reaction && (flags2 & BRANCH_EFFECT) !== 0 && (flags2 & REACTION_RAN) === 0; + if (defer) { + var context = ( + /** @type {ComponentContext} */ + component_context + ); + (context.e ?? (context.e = [])).push(fn); + } else { + return create_user_effect(fn); + } +} +function create_user_effect(fn) { + return create_effect(EFFECT | USER_EFFECT, fn, false); +} +function user_pre_effect(fn) { + validate_effect("$effect.pre"); + if (true_default) { + define_property(fn, "name", { + value: "$effect.pre" + }); + } + return create_effect(RENDER_EFFECT | USER_EFFECT, fn, true); +} +function eager_effect(fn) { + return create_effect(EAGER_EFFECT, fn, true); +} +function effect_root(fn) { + Batch.ensure(); + const effect2 = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true); + return () => { + destroy_effect(effect2); + }; +} +function component_root(fn) { + Batch.ensure(); + const effect2 = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true); + return (options = {}) => { + return new Promise((fulfil) => { + if (options.outro) { + pause_effect(effect2, () => { + destroy_effect(effect2); + fulfil(void 0); + }); + } else { + destroy_effect(effect2); + fulfil(void 0); + } + }); + }; +} +function effect(fn) { + return create_effect(EFFECT, fn, false); +} +function legacy_pre_effect(deps, fn) { + var context = ( + /** @type {ComponentContextLegacy} */ + component_context + ); + var token = { effect: null, ran: false, deps }; + context.l.$.push(token); + token.effect = render_effect(() => { + deps(); + if (token.ran) return; + token.ran = true; + untrack(fn); + }); +} +function legacy_pre_effect_reset() { + var context = ( + /** @type {ComponentContextLegacy} */ + component_context + ); + render_effect(() => { + for (var token of context.l.$) { + token.deps(); + var effect2 = token.effect; + if ((effect2.f & CLEAN) !== 0 && effect2.deps !== null) { + set_signal_status(effect2, MAYBE_DIRTY); + } + if (is_dirty(effect2)) { + update_effect(effect2); + } + token.ran = false; + } + }); +} +function async_effect(fn) { + return create_effect(ASYNC | EFFECT_PRESERVED, fn, true); +} +function render_effect(fn, flags2 = 0) { + return create_effect(RENDER_EFFECT | flags2, fn, true); +} +function template_effect(fn, sync = [], async = [], blockers = []) { + flatten(blockers, sync, async, (values) => { + create_effect(RENDER_EFFECT, () => fn(...values.map(get)), true); + }); +} +function deferred_template_effect(fn, sync = [], async = [], blockers = []) { + var batch = ( + /** @type {Batch} */ + current_batch + ); + var is_async = async.length > 0 || blockers.length > 0; + if (is_async) batch.increment(true); + flatten(blockers, sync, async, (values) => { + create_effect(EFFECT, () => fn(...values.map(get)), false); + if (is_async) batch.decrement(true); + }); +} +function block(fn, flags2 = 0) { + var effect2 = create_effect(BLOCK_EFFECT | flags2, fn, true); + if (true_default) { + effect2.dev_stack = dev_stack; + } + return effect2; +} +function managed(fn, flags2 = 0) { + var effect2 = create_effect(MANAGED_EFFECT | flags2, fn, true); + if (true_default) { + effect2.dev_stack = dev_stack; + } + return effect2; +} +function branch(fn) { + return create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn, true); +} +function execute_effect_teardown(effect2) { + var teardown2 = effect2.teardown; + if (teardown2 !== null) { + const previously_destroying_effect = is_destroying_effect; + const previous_reaction = active_reaction; + set_is_destroying_effect(true); + set_active_reaction(null); + try { + teardown2.call(null); + } finally { + set_is_destroying_effect(previously_destroying_effect); + set_active_reaction(previous_reaction); + } + } +} +function destroy_effect_children(signal, remove_dom = false) { + var effect2 = signal.first; + signal.first = signal.last = null; + while (effect2 !== null) { + const controller = effect2.ac; + if (controller !== null) { + without_reactive_context(() => { + controller.abort(STALE_REACTION); + }); + } + var next2 = effect2.next; + if ((effect2.f & ROOT_EFFECT) !== 0) { + effect2.parent = null; + } else { + destroy_effect(effect2, remove_dom); + } + effect2 = next2; + } +} +function destroy_block_effect_children(signal) { + var effect2 = signal.first; + while (effect2 !== null) { + var next2 = effect2.next; + if ((effect2.f & BRANCH_EFFECT) === 0) { + destroy_effect(effect2); + } + effect2 = next2; + } +} +function destroy_effect(effect2, remove_dom = true) { + var removed = false; + if ((remove_dom || (effect2.f & HEAD_EFFECT) !== 0) && effect2.nodes !== null && effect2.nodes.end !== null) { + remove_effect_dom( + effect2.nodes.start, + /** @type {TemplateNode} */ + effect2.nodes.end + ); + removed = true; + } + destroy_effect_children(effect2, remove_dom && !removed); + remove_reactions(effect2, 0); + set_signal_status(effect2, DESTROYED); + var transitions = effect2.nodes && effect2.nodes.t; + if (transitions !== null) { + for (const transition of transitions) { + transition.stop(); + } + } + execute_effect_teardown(effect2); + var parent = effect2.parent; + if (parent !== null && parent.first !== null) { + unlink_effect(effect2); + } + if (true_default) { + effect2.component_function = null; + } + effect2.next = effect2.prev = effect2.teardown = effect2.ctx = effect2.deps = effect2.fn = effect2.nodes = effect2.ac = null; +} +function remove_effect_dom(node, end) { + while (node !== null) { + var next2 = node === end ? null : get_next_sibling(node); + node.remove(); + node = next2; + } +} +function unlink_effect(effect2) { + var parent = effect2.parent; + var prev = effect2.prev; + var next2 = effect2.next; + if (prev !== null) prev.next = next2; + if (next2 !== null) next2.prev = prev; + if (parent !== null) { + if (parent.first === effect2) parent.first = next2; + if (parent.last === effect2) parent.last = prev; + } +} +function pause_effect(effect2, callback, destroy = true) { + var transitions = []; + pause_children(effect2, transitions, true); + var fn = () => { + if (destroy) destroy_effect(effect2); + if (callback) callback(); + }; + var remaining = transitions.length; + if (remaining > 0) { + var check = () => --remaining || fn(); + for (var transition of transitions) { + transition.out(check); + } + } else { + fn(); + } +} +function pause_children(effect2, transitions, local) { + if ((effect2.f & INERT) !== 0) return; + effect2.f ^= INERT; + var t = effect2.nodes && effect2.nodes.t; + if (t !== null) { + for (const transition of t) { + if (transition.is_global || local) { + transitions.push(transition); + } + } + } + var child2 = effect2.first; + while (child2 !== null) { + var sibling2 = child2.next; + var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || // If this is a branch effect without a block effect parent, + // it means the parent block effect was pruned. In that case, + // transparency information was transferred to the branch effect. + (child2.f & BRANCH_EFFECT) !== 0 && (effect2.f & BLOCK_EFFECT) !== 0; + pause_children(child2, transitions, transparent ? local : false); + child2 = sibling2; + } +} +function resume_effect(effect2) { + resume_children(effect2, true); +} +function resume_children(effect2, local) { + if ((effect2.f & INERT) === 0) return; + effect2.f ^= INERT; + if ((effect2.f & CLEAN) === 0) { + set_signal_status(effect2, DIRTY); + schedule_effect(effect2); + } + var child2 = effect2.first; + while (child2 !== null) { + var sibling2 = child2.next; + var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || (child2.f & BRANCH_EFFECT) !== 0; + resume_children(child2, transparent ? local : false); + child2 = sibling2; + } + var t = effect2.nodes && effect2.nodes.t; + if (t !== null) { + for (const transition of t) { + if (transition.is_global || local) { + transition.in(); + } + } + } +} +function aborted(effect2 = ( + /** @type {Effect} */ + active_effect +)) { + return (effect2.f & DESTROYED) !== 0; +} +function move_effect(effect2, fragment) { + if (!effect2.nodes) return; + var node = effect2.nodes.start; + var end = effect2.nodes.end; + while (node !== null) { + var next2 = node === end ? null : get_next_sibling(node); + fragment.append(node); + node = next2; + } +} + +// node_modules/svelte/src/internal/client/legacy.js +var captured_signals = null; +function capture_signals(fn) { + var previous_captured_signals = captured_signals; + try { + captured_signals = /* @__PURE__ */ new Set(); + untrack(fn); + if (previous_captured_signals !== null) { + for (var signal of captured_signals) { + previous_captured_signals.add(signal); + } + } + return captured_signals; + } finally { + captured_signals = previous_captured_signals; + } +} +function invalidate_inner_signals(fn) { + for (var signal of capture_signals(fn)) { + internal_set(signal, signal.v); + } +} + +// node_modules/svelte/src/internal/client/runtime.js +var is_updating_effect = false; +var is_destroying_effect = false; +function set_is_destroying_effect(value) { + is_destroying_effect = value; +} +var active_reaction = null; +var untracking = false; +function set_active_reaction(reaction) { + active_reaction = reaction; +} +var active_effect = null; +function set_active_effect(effect2) { + active_effect = effect2; +} +var current_sources = null; +function push_reaction_value(value) { + if (active_reaction !== null && (!async_mode_flag || (active_reaction.f & DERIVED) !== 0)) { + if (current_sources === null) { + current_sources = [value]; + } else { + current_sources.push(value); + } + } +} +var new_deps = null; +var skipped_deps = 0; +var untracked_writes = null; +function set_untracked_writes(value) { + untracked_writes = value; +} +var write_version = 1; +var read_version = 0; +var update_version = read_version; +function set_update_version(value) { + update_version = value; +} +function increment_write_version() { + return ++write_version; +} +function is_dirty(reaction) { + var flags2 = reaction.f; + if ((flags2 & DIRTY) !== 0) { + return true; + } + if (flags2 & DERIVED) { + reaction.f &= ~WAS_MARKED; + } + if ((flags2 & MAYBE_DIRTY) !== 0) { + var dependencies = ( + /** @type {Value[]} */ + reaction.deps + ); + var length = dependencies.length; + for (var i = 0; i < length; i++) { + var dependency = dependencies[i]; + if (is_dirty( + /** @type {Derived} */ + dependency + )) { + update_derived( + /** @type {Derived} */ + dependency + ); + } + if (dependency.wv > reaction.wv) { + return true; + } + } + if ((flags2 & CONNECTED) !== 0 && // During time traveling we don't want to reset the status so that + // traversal of the graph in the other batches still happens + batch_values === null) { + set_signal_status(reaction, CLEAN); + } + } + return false; +} +function schedule_possible_effect_self_invalidation(signal, effect2, root = true) { + var reactions = signal.reactions; + if (reactions === null) return; + if (!async_mode_flag && current_sources !== null && includes.call(current_sources, signal)) { + return; + } + for (var i = 0; i < reactions.length; i++) { + var reaction = reactions[i]; + if ((reaction.f & DERIVED) !== 0) { + schedule_possible_effect_self_invalidation( + /** @type {Derived} */ + reaction, + effect2, + false + ); + } else if (effect2 === reaction) { + if (root) { + set_signal_status(reaction, DIRTY); + } else if ((reaction.f & CLEAN) !== 0) { + set_signal_status(reaction, MAYBE_DIRTY); + } + schedule_effect( + /** @type {Effect} */ + reaction + ); + } + } +} +function update_reaction(reaction) { + var _a2, _b; + var previous_deps = new_deps; + var previous_skipped_deps = skipped_deps; + var previous_untracked_writes = untracked_writes; + var previous_reaction = active_reaction; + var previous_sources = current_sources; + var previous_component_context = component_context; + var previous_untracking = untracking; + var previous_update_version = update_version; + var flags2 = reaction.f; + new_deps = /** @type {null | Value[]} */ + null; + skipped_deps = 0; + untracked_writes = null; + active_reaction = (flags2 & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null; + current_sources = null; + set_component_context(reaction.ctx); + untracking = false; + update_version = ++read_version; + if (reaction.ac !== null) { + without_reactive_context(() => { + reaction.ac.abort(STALE_REACTION); + }); + reaction.ac = null; + } + try { + reaction.f |= REACTION_IS_UPDATING; + var fn = ( + /** @type {Function} */ + reaction.fn + ); + var result = fn(); + reaction.f |= REACTION_RAN; + var deps = reaction.deps; + var is_fork = (_a2 = current_batch) == null ? void 0 : _a2.is_fork; + if (new_deps !== null) { + var i; + if (!is_fork) { + remove_reactions(reaction, skipped_deps); + } + if (deps !== null && skipped_deps > 0) { + deps.length = skipped_deps + new_deps.length; + for (i = 0; i < new_deps.length; i++) { + deps[skipped_deps + i] = new_deps[i]; + } + } else { + reaction.deps = deps = new_deps; + } + if (effect_tracking() && (reaction.f & CONNECTED) !== 0) { + for (i = skipped_deps; i < deps.length; i++) { + ((_b = deps[i]).reactions ?? (_b.reactions = [])).push(reaction); + } + } + } else if (!is_fork && deps !== null && skipped_deps < deps.length) { + remove_reactions(reaction, skipped_deps); + deps.length = skipped_deps; + } + if (is_runes() && untracked_writes !== null && !untracking && deps !== null && (reaction.f & (DERIVED | MAYBE_DIRTY | DIRTY)) === 0) { + for (i = 0; i < /** @type {Source[]} */ + untracked_writes.length; i++) { + schedule_possible_effect_self_invalidation( + untracked_writes[i], + /** @type {Effect} */ + reaction + ); + } + } + if (previous_reaction !== null && previous_reaction !== reaction) { + read_version++; + if (previous_reaction.deps !== null) { + for (let i2 = 0; i2 < previous_skipped_deps; i2 += 1) { + previous_reaction.deps[i2].rv = read_version; + } + } + if (previous_deps !== null) { + for (const dep of previous_deps) { + dep.rv = read_version; + } + } + if (untracked_writes !== null) { + if (previous_untracked_writes === null) { + previous_untracked_writes = untracked_writes; + } else { + previous_untracked_writes.push(.../** @type {Source[]} */ + untracked_writes); + } + } + } + if ((reaction.f & ERROR_VALUE) !== 0) { + reaction.f ^= ERROR_VALUE; + } + return result; + } catch (error) { + return handle_error(error); + } finally { + reaction.f ^= REACTION_IS_UPDATING; + new_deps = previous_deps; + skipped_deps = previous_skipped_deps; + untracked_writes = previous_untracked_writes; + active_reaction = previous_reaction; + current_sources = previous_sources; + set_component_context(previous_component_context); + untracking = previous_untracking; + update_version = previous_update_version; + } +} +function remove_reaction(signal, dependency) { + let reactions = dependency.reactions; + if (reactions !== null) { + var index = index_of.call(reactions, signal); + if (index !== -1) { + var new_length = reactions.length - 1; + if (new_length === 0) { + reactions = dependency.reactions = null; + } else { + reactions[index] = reactions[new_length]; + reactions.pop(); + } + } + } + if (reactions === null && (dependency.f & DERIVED) !== 0 && // Destroying a child effect while updating a parent effect can cause a dependency to appear + // to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps` + // allows us to skip the expensive work of disconnecting and immediately reconnecting it + (new_deps === null || !includes.call(new_deps, dependency))) { + var derived2 = ( + /** @type {Derived} */ + dependency + ); + if ((derived2.f & CONNECTED) !== 0) { + derived2.f ^= CONNECTED; + derived2.f &= ~WAS_MARKED; + } + update_derived_status(derived2); + freeze_derived_effects(derived2); + remove_reactions(derived2, 0); + } +} +function remove_reactions(signal, start_index) { + var dependencies = signal.deps; + if (dependencies === null) return; + for (var i = start_index; i < dependencies.length; i++) { + remove_reaction(signal, dependencies[i]); + } +} +function update_effect(effect2) { + var flags2 = effect2.f; + if ((flags2 & DESTROYED) !== 0) { + return; + } + set_signal_status(effect2, CLEAN); + var previous_effect = active_effect; + var was_updating_effect = is_updating_effect; + active_effect = effect2; + is_updating_effect = true; + if (true_default) { + var previous_component_fn = dev_current_component_function; + set_dev_current_component_function(effect2.component_function); + var previous_stack = ( + /** @type {any} */ + dev_stack + ); + set_dev_stack(effect2.dev_stack ?? dev_stack); + } + try { + if ((flags2 & (BLOCK_EFFECT | MANAGED_EFFECT)) !== 0) { + destroy_block_effect_children(effect2); + } else { + destroy_effect_children(effect2); + } + execute_effect_teardown(effect2); + var teardown2 = update_reaction(effect2); + effect2.teardown = typeof teardown2 === "function" ? teardown2 : null; + effect2.wv = write_version; + if (true_default && tracing_mode_flag && (effect2.f & DIRTY) !== 0 && effect2.deps !== null) { + for (var dep of effect2.deps) { + if (dep.set_during_effect) { + dep.wv = increment_write_version(); + dep.set_during_effect = false; + } + } + } + } finally { + is_updating_effect = was_updating_effect; + active_effect = previous_effect; + if (true_default) { + set_dev_current_component_function(previous_component_fn); + set_dev_stack(previous_stack); + } + } +} +async function tick() { + if (async_mode_flag) { + return new Promise((f) => { + requestAnimationFrame(() => f()); + setTimeout(() => f()); + }); + } + await Promise.resolve(); + flushSync(); +} +function settled() { + return Batch.ensure().settled(); +} +function get(signal) { + var _a2, _b; + var flags2 = signal.f; + var is_derived = (flags2 & DERIVED) !== 0; + (_a2 = captured_signals) == null ? void 0 : _a2.add(signal); + if (active_reaction !== null && !untracking) { + var destroyed = active_effect !== null && (active_effect.f & DESTROYED) !== 0; + if (!destroyed && (current_sources === null || !includes.call(current_sources, signal))) { + var deps = active_reaction.deps; + if ((active_reaction.f & REACTION_IS_UPDATING) !== 0) { + if (signal.rv < read_version) { + signal.rv = read_version; + if (new_deps === null && deps !== null && deps[skipped_deps] === signal) { + skipped_deps++; + } else if (new_deps === null) { + new_deps = [signal]; + } else { + new_deps.push(signal); + } + } + } else { + (active_reaction.deps ?? (active_reaction.deps = [])).push(signal); + var reactions = signal.reactions; + if (reactions === null) { + signal.reactions = [active_reaction]; + } else if (!includes.call(reactions, active_reaction)) { + reactions.push(active_reaction); + } + } + } + } + if (true_default) { + recent_async_deriveds.delete(signal); + if (tracing_mode_flag && !untracking && tracing_expressions !== null && active_reaction !== null && tracing_expressions.reaction === active_reaction) { + if (signal.trace) { + signal.trace(); + } else { + var trace2 = get_error("traced at"); + if (trace2) { + var entry = tracing_expressions.entries.get(signal); + if (entry === void 0) { + entry = { traces: [] }; + tracing_expressions.entries.set(signal, entry); + } + var last = entry.traces[entry.traces.length - 1]; + if (trace2.stack !== (last == null ? void 0 : last.stack)) { + entry.traces.push(trace2); + } + } + } + } + } + if (is_destroying_effect && old_values.has(signal)) { + return old_values.get(signal); + } + if (is_derived) { + var derived2 = ( + /** @type {Derived} */ + signal + ); + if (is_destroying_effect) { + var value = derived2.v; + if ((derived2.f & CLEAN) === 0 && derived2.reactions !== null || depends_on_old_values(derived2)) { + value = execute_derived(derived2); + } + old_values.set(derived2, value); + return value; + } + var should_connect = (derived2.f & CONNECTED) === 0 && !untracking && active_reaction !== null && (is_updating_effect || (active_reaction.f & CONNECTED) !== 0); + var is_new = (derived2.f & REACTION_RAN) === 0; + if (is_dirty(derived2)) { + if (should_connect) { + derived2.f |= CONNECTED; + } + update_derived(derived2); + } + if (should_connect && !is_new) { + unfreeze_derived_effects(derived2); + reconnect(derived2); + } + } + if ((_b = batch_values) == null ? void 0 : _b.has(signal)) { + return batch_values.get(signal); + } + if ((signal.f & ERROR_VALUE) !== 0) { + throw signal.v; + } + return signal.v; +} +function reconnect(derived2) { + derived2.f |= CONNECTED; + if (derived2.deps === null) return; + for (const dep of derived2.deps) { + (dep.reactions ?? (dep.reactions = [])).push(derived2); + if ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) { + unfreeze_derived_effects( + /** @type {Derived} */ + dep + ); + reconnect( + /** @type {Derived} */ + dep + ); + } + } +} +function depends_on_old_values(derived2) { + if (derived2.v === UNINITIALIZED) return true; + if (derived2.deps === null) return false; + for (const dep of derived2.deps) { + if (old_values.has(dep)) { + return true; + } + if ((dep.f & DERIVED) !== 0 && depends_on_old_values( + /** @type {Derived} */ + dep + )) { + return true; + } + } + return false; +} +function safe_get(signal) { + return signal && get(signal); +} +function untrack(fn) { + var previous_untracking = untracking; + try { + untracking = true; + return fn(); + } finally { + untracking = previous_untracking; + } +} +function exclude_from_object(obj, keys) { + var result = {}; + for (var key in obj) { + if (!keys.includes(key)) { + result[key] = obj[key]; + } + } + for (var symbol of Object.getOwnPropertySymbols(obj)) { + if (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) { + result[symbol] = obj[symbol]; + } + } + return result; +} +function deep_read_state(value) { + if (typeof value !== "object" || !value || value instanceof EventTarget) { + return; + } + if (STATE_SYMBOL in value) { + deep_read(value); + } else if (!Array.isArray(value)) { + for (let key in value) { + const prop = value[key]; + if (typeof prop === "object" && prop && STATE_SYMBOL in prop) { + deep_read(prop); + } + } + } +} +function deep_read(value, visited = /* @__PURE__ */ new Set()) { + if (typeof value === "object" && value !== null && // We don't want to traverse DOM elements + !(value instanceof EventTarget) && !visited.has(value)) { + visited.add(value); + if (value instanceof Date) { + value.getTime(); + } + for (let key in value) { + try { + deep_read(value[key], visited); + } catch (e) { + } + } + const proto = get_prototype_of(value); + if (proto !== Object.prototype && proto !== Array.prototype && proto !== Map.prototype && proto !== Set.prototype && proto !== Date.prototype) { + const descriptors = get_descriptors(proto); + for (let key in descriptors) { + const get2 = descriptors[key].get; + if (get2) { + try { + get2.call(value); + } catch (e) { + } + } + } + } + } +} + +// node_modules/svelte/src/internal/client/proxy.js +var regex_is_valid_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/; +function proxy(value) { + if (typeof value !== "object" || value === null || STATE_SYMBOL in value) { + return value; + } + const prototype = get_prototype_of(value); + if (prototype !== object_prototype && prototype !== array_prototype) { + return value; + } + var sources = /* @__PURE__ */ new Map(); + var is_proxied_array = is_array(value); + var version = state(0); + var stack2 = true_default && tracing_mode_flag ? get_error("created at") : null; + var parent_version = update_version; + var with_parent = (fn) => { + if (update_version === parent_version) { + return fn(); + } + var reaction = active_reaction; + var version2 = update_version; + set_active_reaction(null); + set_update_version(parent_version); + var result = fn(); + set_active_reaction(reaction); + set_update_version(version2); + return result; + }; + if (is_proxied_array) { + sources.set("length", state( + /** @type {any[]} */ + value.length, + stack2 + )); + if (true_default) { + value = /** @type {any} */ + inspectable_array( + /** @type {any[]} */ + value + ); + } + } + var path = ""; + let updating = false; + function update_path(new_path) { + if (updating) return; + updating = true; + path = new_path; + tag(version, `${path} version`); + for (const [prop, source2] of sources) { + tag(source2, get_label(path, prop)); + } + updating = false; + } + return new Proxy( + /** @type {any} */ + value, + { + defineProperty(_, prop, descriptor) { + if (!("value" in descriptor) || descriptor.configurable === false || descriptor.enumerable === false || descriptor.writable === false) { + state_descriptors_fixed(); + } + var s = sources.get(prop); + if (s === void 0) { + with_parent(() => { + var s2 = state(descriptor.value, stack2); + sources.set(prop, s2); + if (true_default && typeof prop === "string") { + tag(s2, get_label(path, prop)); + } + return s2; + }); + } else { + set(s, descriptor.value, true); + } + return true; + }, + deleteProperty(target, prop) { + var s = sources.get(prop); + if (s === void 0) { + if (prop in target) { + const s2 = with_parent(() => state(UNINITIALIZED, stack2)); + sources.set(prop, s2); + increment(version); + if (true_default) { + tag(s2, get_label(path, prop)); + } + } + } else { + set(s, UNINITIALIZED); + increment(version); + } + return true; + }, + get(target, prop, receiver) { + var _a2; + if (prop === STATE_SYMBOL) { + return value; + } + if (true_default && prop === PROXY_PATH_SYMBOL) { + return update_path; + } + var s = sources.get(prop); + var exists = prop in target; + if (s === void 0 && (!exists || ((_a2 = get_descriptor(target, prop)) == null ? void 0 : _a2.writable))) { + s = with_parent(() => { + var p = proxy(exists ? target[prop] : UNINITIALIZED); + var s2 = state(p, stack2); + if (true_default) { + tag(s2, get_label(path, prop)); + } + return s2; + }); + sources.set(prop, s); + } + if (s !== void 0) { + var v = get(s); + return v === UNINITIALIZED ? void 0 : v; + } + return Reflect.get(target, prop, receiver); + }, + getOwnPropertyDescriptor(target, prop) { + var descriptor = Reflect.getOwnPropertyDescriptor(target, prop); + if (descriptor && "value" in descriptor) { + var s = sources.get(prop); + if (s) descriptor.value = get(s); + } else if (descriptor === void 0) { + var source2 = sources.get(prop); + var value2 = source2 == null ? void 0 : source2.v; + if (source2 !== void 0 && value2 !== UNINITIALIZED) { + return { + enumerable: true, + configurable: true, + value: value2, + writable: true + }; + } + } + return descriptor; + }, + has(target, prop) { + var _a2; + if (prop === STATE_SYMBOL) { + return true; + } + var s = sources.get(prop); + var has = s !== void 0 && s.v !== UNINITIALIZED || Reflect.has(target, prop); + if (s !== void 0 || active_effect !== null && (!has || ((_a2 = get_descriptor(target, prop)) == null ? void 0 : _a2.writable))) { + if (s === void 0) { + s = with_parent(() => { + var p = has ? proxy(target[prop]) : UNINITIALIZED; + var s2 = state(p, stack2); + if (true_default) { + tag(s2, get_label(path, prop)); + } + return s2; + }); + sources.set(prop, s); + } + var value2 = get(s); + if (value2 === UNINITIALIZED) { + return false; + } + } + return has; + }, + set(target, prop, value2, receiver) { + var _a2; + var s = sources.get(prop); + var has = prop in target; + if (is_proxied_array && prop === "length") { + for (var i = value2; i < /** @type {Source} */ + s.v; i += 1) { + var other_s = sources.get(i + ""); + if (other_s !== void 0) { + set(other_s, UNINITIALIZED); + } else if (i in target) { + other_s = with_parent(() => state(UNINITIALIZED, stack2)); + sources.set(i + "", other_s); + if (true_default) { + tag(other_s, get_label(path, i)); + } + } + } + } + if (s === void 0) { + if (!has || ((_a2 = get_descriptor(target, prop)) == null ? void 0 : _a2.writable)) { + s = with_parent(() => state(void 0, stack2)); + if (true_default) { + tag(s, get_label(path, prop)); + } + set(s, proxy(value2)); + sources.set(prop, s); + } + } else { + has = s.v !== UNINITIALIZED; + var p = with_parent(() => proxy(value2)); + set(s, p); + } + var descriptor = Reflect.getOwnPropertyDescriptor(target, prop); + if (descriptor == null ? void 0 : descriptor.set) { + descriptor.set.call(receiver, value2); + } + if (!has) { + if (is_proxied_array && typeof prop === "string") { + var ls = ( + /** @type {Source} */ + sources.get("length") + ); + var n = Number(prop); + if (Number.isInteger(n) && n >= ls.v) { + set(ls, n + 1); + } + } + increment(version); + } + return true; + }, + ownKeys(target) { + get(version); + var own_keys = Reflect.ownKeys(target).filter((key2) => { + var source3 = sources.get(key2); + return source3 === void 0 || source3.v !== UNINITIALIZED; + }); + for (var [key, source2] of sources) { + if (source2.v !== UNINITIALIZED && !(key in target)) { + own_keys.push(key); + } + } + return own_keys; + }, + setPrototypeOf() { + state_prototype_fixed(); + } + } + ); +} +function get_label(path, prop) { + if (typeof prop === "symbol") return `${path}[Symbol(${prop.description ?? ""})]`; + if (regex_is_valid_identifier.test(prop)) return `${path}.${prop}`; + return /^\d+$/.test(prop) ? `${path}[${prop}]` : `${path}['${prop}']`; +} +function get_proxied_value(value) { + try { + if (value !== null && typeof value === "object" && STATE_SYMBOL in value) { + return value[STATE_SYMBOL]; + } + } catch { + } + return value; +} +function is(a, b) { + return Object.is(get_proxied_value(a), get_proxied_value(b)); +} +var ARRAY_MUTATING_METHODS = /* @__PURE__ */ new Set([ + "copyWithin", + "fill", + "pop", + "push", + "reverse", + "shift", + "sort", + "splice", + "unshift" +]); +function inspectable_array(array) { + return new Proxy(array, { + get(target, prop, receiver) { + var value = Reflect.get(target, prop, receiver); + if (!ARRAY_MUTATING_METHODS.has( + /** @type {string} */ + prop + )) { + return value; + } + return function(...args) { + set_eager_effects_deferred(); + var result = value.apply(this, args); + flush_eager_effects(); + return result; + }; + } + }); +} + +// node_modules/svelte/src/internal/client/dev/equality.js +function init_array_prototype_warnings() { + const array_prototype2 = Array.prototype; + const cleanup = Array.__svelte_cleanup; + if (cleanup) { + cleanup(); + } + const { indexOf, lastIndexOf, includes: includes2 } = array_prototype2; + array_prototype2.indexOf = function(item, from_index) { + const index = indexOf.call(this, item, from_index); + if (index === -1) { + for (let i = from_index ?? 0; i < this.length; i += 1) { + if (get_proxied_value(this[i]) === item) { + state_proxy_equality_mismatch("array.indexOf(...)"); + break; + } + } + } + return index; + }; + array_prototype2.lastIndexOf = function(item, from_index) { + const index = lastIndexOf.call(this, item, from_index ?? this.length - 1); + if (index === -1) { + for (let i = 0; i <= (from_index ?? this.length - 1); i += 1) { + if (get_proxied_value(this[i]) === item) { + state_proxy_equality_mismatch("array.lastIndexOf(...)"); + break; + } + } + } + return index; + }; + array_prototype2.includes = function(item, from_index) { + const has = includes2.call(this, item, from_index); + if (!has) { + for (let i = 0; i < this.length; i += 1) { + if (get_proxied_value(this[i]) === item) { + state_proxy_equality_mismatch("array.includes(...)"); + break; + } + } + } + return has; + }; + Array.__svelte_cleanup = () => { + array_prototype2.indexOf = indexOf; + array_prototype2.lastIndexOf = lastIndexOf; + array_prototype2.includes = includes2; + }; +} +function strict_equals(a, b, equal = true) { + try { + if (a === b !== (get_proxied_value(a) === get_proxied_value(b))) { + state_proxy_equality_mismatch(equal ? "===" : "!=="); + } + } catch { + } + return a === b === equal; +} +function equals2(a, b, equal = true) { + if (a == b !== (get_proxied_value(a) == get_proxied_value(b))) { + state_proxy_equality_mismatch(equal ? "==" : "!="); + } + return a == b === equal; +} + +// node_modules/svelte/src/internal/client/dom/operations.js +var $window; +var $document; +var is_firefox; +var first_child_getter; +var next_sibling_getter; +function init_operations() { + if ($window !== void 0) { + return; + } + $window = window; + $document = document; + is_firefox = /Firefox/.test(navigator.userAgent); + var element_prototype = Element.prototype; + var node_prototype = Node.prototype; + var text_prototype = Text.prototype; + first_child_getter = get_descriptor(node_prototype, "firstChild").get; + next_sibling_getter = get_descriptor(node_prototype, "nextSibling").get; + if (is_extensible(element_prototype)) { + element_prototype.__click = void 0; + element_prototype.__className = void 0; + element_prototype.__attributes = null; + element_prototype.__style = void 0; + element_prototype.__e = void 0; + } + if (is_extensible(text_prototype)) { + text_prototype.__t = void 0; + } + if (true_default) { + element_prototype.__svelte_meta = null; + init_array_prototype_warnings(); + } +} +function create_text(value = "") { + return document.createTextNode(value); +} +function get_first_child(node) { + return ( + /** @type {TemplateNode | null} */ + first_child_getter.call(node) + ); +} +function get_next_sibling(node) { + return ( + /** @type {TemplateNode | null} */ + next_sibling_getter.call(node) + ); +} +function child(node, is_text) { + if (!hydrating) { + return get_first_child(node); + } + var child2 = get_first_child(hydrate_node); + if (child2 === null) { + child2 = hydrate_node.appendChild(create_text()); + } else if (is_text && child2.nodeType !== TEXT_NODE) { + var text = create_text(); + child2 == null ? void 0 : child2.before(text); + set_hydrate_node(text); + return text; + } + if (is_text) { + merge_text_nodes( + /** @type {Text} */ + child2 + ); + } + set_hydrate_node(child2); + return child2; +} +function first_child(node, is_text = false) { + var _a2, _b; + if (!hydrating) { + var first = get_first_child(node); + if (first instanceof Comment && first.data === "") return get_next_sibling(first); + return first; + } + if (is_text) { + if (((_a2 = hydrate_node) == null ? void 0 : _a2.nodeType) !== TEXT_NODE) { + var text = create_text(); + (_b = hydrate_node) == null ? void 0 : _b.before(text); + set_hydrate_node(text); + return text; + } + merge_text_nodes( + /** @type {Text} */ + hydrate_node + ); + } + return hydrate_node; +} +function sibling(node, count = 1, is_text = false) { + let next_sibling = hydrating ? hydrate_node : node; + var last_sibling; + while (count--) { + last_sibling = next_sibling; + next_sibling = /** @type {TemplateNode} */ + get_next_sibling(next_sibling); + } + if (!hydrating) { + return next_sibling; + } + if (is_text) { + if ((next_sibling == null ? void 0 : next_sibling.nodeType) !== TEXT_NODE) { + var text = create_text(); + if (next_sibling === null) { + last_sibling == null ? void 0 : last_sibling.after(text); + } else { + next_sibling.before(text); + } + set_hydrate_node(text); + return text; + } + merge_text_nodes( + /** @type {Text} */ + next_sibling + ); + } + set_hydrate_node(next_sibling); + return next_sibling; +} +function clear_text_content(node) { + node.textContent = ""; +} +function should_defer_append() { + if (!async_mode_flag) return false; + if (eager_block_effects !== null) return false; + var flags2 = ( + /** @type {Effect} */ + active_effect.f + ); + return (flags2 & REACTION_RAN) !== 0; +} +function create_element(tag2, namespace, is2) { + let options = is2 ? { is: is2 } : void 0; + return ( + /** @type {T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element} */ + document.createElementNS(namespace ?? NAMESPACE_HTML, tag2, options) + ); +} +function create_fragment() { + return document.createDocumentFragment(); +} +function create_comment(data = "") { + return document.createComment(data); +} +function set_attribute(element, key, value = "") { + if (key.startsWith("xlink:")) { + element.setAttributeNS("http://www.w3.org/1999/xlink", key, value); + return; + } + return element.setAttribute(key, value); +} +function merge_text_nodes(text) { + if ( + /** @type {string} */ + text.nodeValue.length < 65536 + ) { + return; + } + let next2 = text.nextSibling; + while (next2 !== null && next2.nodeType === TEXT_NODE) { + next2.remove(); + text.nodeValue += /** @type {string} */ + next2.nodeValue; + next2 = text.nextSibling; + } +} + +// node_modules/svelte/src/internal/client/dom/hydration.js +var hydrating = false; +function set_hydrating(value) { + hydrating = value; +} +var hydrate_node; +function set_hydrate_node(node) { + if (node === null) { + hydration_mismatch(); + throw HYDRATION_ERROR; + } + return hydrate_node = node; +} +function hydrate_next() { + return set_hydrate_node(get_next_sibling(hydrate_node)); +} +function reset(node) { + if (!hydrating) return; + if (get_next_sibling(hydrate_node) !== null) { + hydration_mismatch(); + throw HYDRATION_ERROR; + } + hydrate_node = node; +} +function hydrate_template(template) { + if (hydrating) { + hydrate_node = template.content; + } +} +function next(count = 1) { + if (hydrating) { + var i = count; + var node = hydrate_node; + while (i--) { + node = /** @type {TemplateNode} */ + get_next_sibling(node); + } + hydrate_node = node; + } +} +function skip_nodes(remove = true) { + var depth = 0; + var node = hydrate_node; + while (true) { + if (node.nodeType === COMMENT_NODE) { + var data = ( + /** @type {Comment} */ + node.data + ); + if (data === HYDRATION_END) { + if (depth === 0) return node; + depth -= 1; + } else if (data === HYDRATION_START || data === HYDRATION_START_ELSE || // "[1", "[2", etc. for if blocks + data[0] === "[" && !isNaN(Number(data.slice(1)))) { + depth += 1; + } + } + var next2 = ( + /** @type {TemplateNode} */ + get_next_sibling(node) + ); + if (remove) node.remove(); + node = next2; + } +} +function read_hydration_instruction(node) { + if (!node || node.nodeType !== COMMENT_NODE) { + hydration_mismatch(); + throw HYDRATION_ERROR; + } + return ( + /** @type {Comment} */ + node.data + ); +} + +// node_modules/svelte/src/internal/client/dom/elements/events.js +var event_symbol = Symbol("events"); +var all_registered_events = /* @__PURE__ */ new Set(); +var root_event_handles = /* @__PURE__ */ new Set(); +function replay_events(dom) { + if (!hydrating) return; + dom.removeAttribute("onload"); + dom.removeAttribute("onerror"); + const event2 = dom.__e; + if (event2 !== void 0) { + dom.__e = void 0; + queueMicrotask(() => { + if (dom.isConnected) { + dom.dispatchEvent(event2); + } + }); + } +} +function create_event(event_name, dom, handler, options = {}) { + function target_handler(event2) { + if (!options.capture) { + handle_event_propagation.call(dom, event2); + } + if (!event2.cancelBubble) { + return without_reactive_context(() => { + return handler == null ? void 0 : handler.call(this, event2); + }); + } + } + if (event_name.startsWith("pointer") || event_name.startsWith("touch") || event_name === "wheel") { + queue_micro_task(() => { + dom.addEventListener(event_name, target_handler, options); + }); + } else { + dom.addEventListener(event_name, target_handler, options); + } + return target_handler; +} +function on(element, type, handler, options = {}) { + var target_handler = create_event(type, element, handler, options); + return () => { + element.removeEventListener(type, target_handler, options); + }; +} +function event(event_name, dom, handler, capture2, passive) { + var options = { capture: capture2, passive }; + var target_handler = create_event(event_name, dom, handler, options); + if (dom === document.body || // @ts-ignore + dom === window || // @ts-ignore + dom === document || // Firefox has quirky behavior, it can happen that we still get "canplay" events when the element is already removed + dom instanceof HTMLMediaElement) { + teardown(() => { + dom.removeEventListener(event_name, target_handler, options); + }); + } +} +function delegated(event_name, element, handler) { + (element[event_symbol] ?? (element[event_symbol] = {}))[event_name] = handler; +} +function delegate(events) { + for (var i = 0; i < events.length; i++) { + all_registered_events.add(events[i]); + } + for (var fn of root_event_handles) { + fn(events); + } +} +var last_propagated_event = null; +function handle_event_propagation(event2) { + var _a2, _b; + var handler_element = this; + var owner_document = ( + /** @type {Node} */ + handler_element.ownerDocument + ); + var event_name = event2.type; + var path = ((_a2 = event2.composedPath) == null ? void 0 : _a2.call(event2)) || []; + var current_target = ( + /** @type {null | Element} */ + path[0] || event2.target + ); + last_propagated_event = event2; + var path_idx = 0; + var handled_at = last_propagated_event === event2 && event2[event_symbol]; + if (handled_at) { + var at_idx = path.indexOf(handled_at); + if (at_idx !== -1 && (handler_element === document || handler_element === /** @type {any} */ + window)) { + event2[event_symbol] = handler_element; + return; + } + var handler_idx = path.indexOf(handler_element); + if (handler_idx === -1) { + return; + } + if (at_idx <= handler_idx) { + path_idx = at_idx; + } + } + current_target = /** @type {Element} */ + path[path_idx] || event2.target; + if (current_target === handler_element) return; + define_property(event2, "currentTarget", { + configurable: true, + get() { + return current_target || owner_document; + } + }); + var previous_reaction = active_reaction; + var previous_effect = active_effect; + set_active_reaction(null); + set_active_effect(null); + try { + var throw_error; + var other_errors = []; + while (current_target !== null) { + var parent_element = current_target.assignedSlot || current_target.parentNode || /** @type {any} */ + current_target.host || null; + try { + var delegated2 = (_b = current_target[event_symbol]) == null ? void 0 : _b[event_name]; + if (delegated2 != null && (!/** @type {any} */ + current_target.disabled || // DOM could've been updated already by the time this is reached, so we check this as well + // -> the target could not have been disabled because it emits the event in the first place + event2.target === current_target)) { + delegated2.call(current_target, event2); + } + } catch (error) { + if (throw_error) { + other_errors.push(error); + } else { + throw_error = error; + } + } + if (event2.cancelBubble || parent_element === handler_element || parent_element === null) { + break; + } + current_target = parent_element; + } + if (throw_error) { + for (let error of other_errors) { + queueMicrotask(() => { + throw error; + }); + } + throw throw_error; + } + } finally { + event2[event_symbol] = handler_element; + delete event2.currentTarget; + set_active_reaction(previous_reaction); + set_active_effect(previous_effect); + } +} +function apply(thunk, element, args, component, loc, has_side_effects = false, remove_parens = false) { + var _a2, _b; + let handler; + let error; + try { + handler = thunk(); + } catch (e) { + error = e; + } + if (typeof handler !== "function" && (has_side_effects || handler != null || error)) { + const filename = component == null ? void 0 : component[FILENAME]; + const location = loc ? ` at ${filename}:${loc[0]}:${loc[1]}` : ` in ${filename}`; + const phase = ((_a2 = args[0]) == null ? void 0 : _a2.eventPhase) < Event.BUBBLING_PHASE ? "capture" : ""; + const event_name = ((_b = args[0]) == null ? void 0 : _b.type) + phase; + const description = `\`${event_name}\` handler${location}`; + const suggestion = remove_parens ? "remove the trailing `()`" : "add a leading `() =>`"; + event_handler_invalid(description, suggestion); + if (error) { + throw error; + } + } + handler == null ? void 0 : handler.apply(element, args); +} + +export { + is_array, + array_from, + object_keys, + define_property, + get_descriptor, + get_descriptors, + get_prototype_of, + is_function, + noop, + is_promise, + run, + run_all, + deferred, + fallback, + to_array, + BLOCK_EFFECT, + BRANCH_EFFECT, + DIRTY, + MAYBE_DIRTY, + INERT, + DESTROYED, + REACTION_RAN, + EFFECT_TRANSPARENT, + HEAD_EFFECT, + EFFECT_OFFSCREEN, + STATE_SYMBOL, + LEGACY_PROPS, + LOADING_ATTR_SYMBOL, + IS_XHTML, + ELEMENT_NODE, + TEXT_NODE, + COMMENT_NODE, + DOCUMENT_FRAGMENT_NODE, + experimental_async_required, + invalid_default_snippet, + invalid_snippet_arguments, + lifecycle_outside_component, + snippet_without_render_tag, + store_invalid_shape, + svelte_element_invalid_this_value, + bind_invalid_checkbox_value, + component_api_changed, + component_api_invalid_new, + each_key_duplicate, + get_abort_signal_outside_reaction, + hydratable_missing_but_required, + hydration_failed, + invalid_snippet, + lifecycle_legacy_only, + props_invalid_value, + props_rest_readonly, + rune_outside_svelte, + EACH_ITEM_REACTIVE, + EACH_INDEX_REACTIVE, + EACH_IS_CONTROLLED, + EACH_IS_ANIMATED, + EACH_ITEM_IMMUTABLE, + PROPS_IS_IMMUTABLE, + PROPS_IS_RUNES, + PROPS_IS_UPDATED, + PROPS_IS_BINDABLE, + PROPS_IS_LAZY_INITIAL, + TRANSITION_IN, + TRANSITION_OUT, + TRANSITION_GLOBAL, + TEMPLATE_FRAGMENT, + TEMPLATE_USE_IMPORT_NODE, + TEMPLATE_USE_SVG, + TEMPLATE_USE_MATHML, + HYDRATION_START, + HYDRATION_START_ELSE, + HYDRATION_END, + HYDRATION_ERROR, + UNINITIALIZED, + FILENAME, + HMR, + NAMESPACE_HTML, + NAMESPACE_SVG, + NAMESPACE_MATHML, + ATTACHMENT_KEY, + hydrating, + set_hydrating, + hydrate_node, + set_hydrate_node, + hydrate_next, + reset, + hydrate_template, + next, + skip_nodes, + read_hydration_instruction, + safe_not_equal, + dynamic_void_element_content, + snapshot, + trace, + tag, + tag_proxy, + label, + get_error, + component_context, + dev_stack, + add_svelte_meta, + dev_current_component_function, + set_dev_current_component_function, + createContext, + getContext, + setContext, + hasContext, + getAllContexts, + push, + pop, + is_runes, + queue_micro_task, + invoke_error_boundary, + set_signal_status, + current_batch, + previous_batch, + is_flushing_sync, + Batch, + flushSync, + eager, + fork, + createSubscriber, + boundary, + get_boundary, + pending, + flatten, + run_after_blockers, + capture, + save, + track_reactivity_loss, + for_await_track_reactivity_loss, + unset_context, + run2, + wait, + derived, + async_derived, + user_derived, + derived_safe_equal, + source, + state, + mutable_source, + mutate, + set, + internal_set, + update, + update_pre, + increment, + proxy, + is, + strict_equals, + equals2 as equals, + $window, + $document, + is_firefox, + init_operations, + create_text, + get_first_child, + get_next_sibling, + child, + first_child, + sibling, + clear_text_content, + should_defer_append, + create_element, + create_fragment, + create_comment, + set_attribute, + merge_text_nodes, + autofocus, + remove_textarea_child, + add_form_reset_listener, + listen, + without_reactive_context, + listen_to_event_and_reset_event, + validate_effect, + effect_tracking, + teardown, + user_effect, + user_pre_effect, + eager_effect, + effect_root, + component_root, + effect, + legacy_pre_effect, + legacy_pre_effect_reset, + render_effect, + template_effect, + deferred_template_effect, + block, + managed, + branch, + destroy_effect, + remove_effect_dom, + pause_effect, + resume_effect, + aborted, + move_effect, + invalidate_inner_signals, + is_destroying_effect, + active_reaction, + set_active_reaction, + active_effect, + set_active_effect, + update_version, + tick, + settled, + get, + safe_get, + untrack, + exclude_from_object, + deep_read_state, + deep_read, + all_registered_events, + root_event_handles, + replay_events, + create_event, + on, + event, + delegated, + delegate, + handle_event_propagation, + apply +}; +//# sourceMappingURL=chunk-KT36QEZ7.js.map diff --git a/node_modules/.vite/deps 4/chunk-KU4QGBNN.js b/node_modules/.vite/deps 4/chunk-KU4QGBNN.js new file mode 100644 index 00000000..76f7d353 --- /dev/null +++ b/node_modules/.vite/deps 4/chunk-KU4QGBNN.js @@ -0,0 +1,736 @@ +import { + ReactiveValue +} from "./chunk-3XCL4SSM.js"; +import { + active_reaction, + get, + increment, + label, + on, + set, + set_active_reaction, + source, + state, + tag, + update_version, + user_derived +} from "./chunk-KT36QEZ7.js"; +import { + true_default +} from "./chunk-HNWPC2PS.js"; +import { + __privateAdd, + __privateGet, + __privateMethod, + __privateSet, + __superGet +} from "./chunk-UGBVNEQM.js"; + +// node_modules/svelte/src/reactivity/date.js +var inited = false; +var _time, _deriveds, _reaction, _SvelteDate_instances, init_fn; +var _SvelteDate = class _SvelteDate extends Date { + /** @param {any[]} params */ + constructor(...params) { + super(...params); + __privateAdd(this, _SvelteDate_instances); + __privateAdd(this, _time, state(super.getTime())); + /** @type {Map>} */ + __privateAdd(this, _deriveds, /* @__PURE__ */ new Map()); + __privateAdd(this, _reaction, active_reaction); + if (true_default) { + tag(__privateGet(this, _time), "SvelteDate.#time"); + } + if (!inited) __privateMethod(this, _SvelteDate_instances, init_fn).call(this); + } +}; +_time = new WeakMap(); +_deriveds = new WeakMap(); +_reaction = new WeakMap(); +_SvelteDate_instances = new WeakSet(); +init_fn = function() { + inited = true; + var proto = _SvelteDate.prototype; + var date_proto = Date.prototype; + var methods = ( + /** @type {Array} */ + Object.getOwnPropertyNames(date_proto) + ); + for (const method of methods) { + if (method.startsWith("get") || method.startsWith("to") || method === "valueOf") { + proto[method] = function(...args) { + if (args.length > 0) { + get(__privateGet(this, _time)); + return date_proto[method].apply(this, args); + } + var d = __privateGet(this, _deriveds).get(method); + if (d === void 0) { + const reaction = active_reaction; + set_active_reaction(__privateGet(this, _reaction)); + d = user_derived(() => { + get(__privateGet(this, _time)); + return date_proto[method].apply(this, args); + }); + __privateGet(this, _deriveds).set(method, d); + set_active_reaction(reaction); + } + return get(d); + }; + } + if (method.startsWith("set")) { + proto[method] = function(...args) { + var result = date_proto[method].apply(this, args); + set(__privateGet(this, _time), date_proto.getTime.call(this)); + return result; + }; + } + } +}; +var SvelteDate = _SvelteDate; + +// node_modules/svelte/src/reactivity/set.js +var read_methods = ["forEach", "isDisjointFrom", "isSubsetOf", "isSupersetOf"]; +var set_like_methods = ["difference", "intersection", "symmetricDifference", "union"]; +var inited2 = false; +var _sources, _version, _size, _update_version, _SvelteSet_instances, source_fn, init_fn2; +var _SvelteSet = class _SvelteSet extends Set { + /** + * @param {Iterable | null | undefined} [value] + */ + constructor(value) { + super(); + __privateAdd(this, _SvelteSet_instances); + /** @type {Map>} */ + __privateAdd(this, _sources, /* @__PURE__ */ new Map()); + __privateAdd(this, _version, state(0)); + __privateAdd(this, _size, state(0)); + __privateAdd(this, _update_version, update_version || -1); + if (true_default) { + value = new Set(value); + tag(__privateGet(this, _version), "SvelteSet version"); + tag(__privateGet(this, _size), "SvelteSet.size"); + } + if (value) { + for (var element of value) { + super.add(element); + } + __privateGet(this, _size).v = super.size; + } + if (!inited2) __privateMethod(this, _SvelteSet_instances, init_fn2).call(this); + } + /** @param {T} value */ + has(value) { + var has = super.has(value); + var sources = __privateGet(this, _sources); + var s = sources.get(value); + if (s === void 0) { + if (!has) { + get(__privateGet(this, _version)); + return false; + } + s = __privateMethod(this, _SvelteSet_instances, source_fn).call(this, true); + if (true_default) { + tag(s, `SvelteSet has(${label(value)})`); + } + sources.set(value, s); + } + get(s); + return has; + } + /** @param {T} value */ + add(value) { + if (!super.has(value)) { + super.add(value); + set(__privateGet(this, _size), super.size); + increment(__privateGet(this, _version)); + } + return this; + } + /** @param {T} value */ + delete(value) { + var deleted = super.delete(value); + var sources = __privateGet(this, _sources); + var s = sources.get(value); + if (s !== void 0) { + sources.delete(value); + set(s, false); + } + if (deleted) { + set(__privateGet(this, _size), super.size); + increment(__privateGet(this, _version)); + } + return deleted; + } + clear() { + if (super.size === 0) { + return; + } + super.clear(); + var sources = __privateGet(this, _sources); + for (var s of sources.values()) { + set(s, false); + } + sources.clear(); + set(__privateGet(this, _size), 0); + increment(__privateGet(this, _version)); + } + keys() { + return this.values(); + } + values() { + get(__privateGet(this, _version)); + return super.values(); + } + entries() { + get(__privateGet(this, _version)); + return super.entries(); + } + [Symbol.iterator]() { + return this.keys(); + } + get size() { + return get(__privateGet(this, _size)); + } +}; +_sources = new WeakMap(); +_version = new WeakMap(); +_size = new WeakMap(); +_update_version = new WeakMap(); +_SvelteSet_instances = new WeakSet(); +/** + * If the source is being created inside the same reaction as the SvelteSet instance, + * we use `state` so that it will not be a dependency of the reaction. Otherwise we + * use `source` so it will be. + * + * @template T + * @param {T} value + * @returns {Source} + */ +source_fn = function(value) { + return update_version === __privateGet(this, _update_version) ? state(value) : source(value); +}; +// We init as part of the first instance so that we can treeshake this class +init_fn2 = function() { + inited2 = true; + var proto = _SvelteSet.prototype; + var set_proto = Set.prototype; + for (const method of read_methods) { + proto[method] = function(...v) { + get(__privateGet(this, _version)); + return set_proto[method].apply(this, v); + }; + } + for (const method of set_like_methods) { + proto[method] = function(...v) { + get(__privateGet(this, _version)); + var set2 = ( + /** @type {Set} */ + set_proto[method].apply(this, v) + ); + return new _SvelteSet(set2); + }; + } +}; +var SvelteSet = _SvelteSet; + +// node_modules/svelte/src/reactivity/map.js +var _sources2, _version2, _size2, _update_version2, _SvelteMap_instances, source_fn2, read_all_fn; +var _SvelteMap = class _SvelteMap extends Map { + /** + * @param {Iterable | null | undefined} [value] + */ + constructor(value) { + super(); + __privateAdd(this, _SvelteMap_instances); + /** @type {Map>} */ + __privateAdd(this, _sources2, /* @__PURE__ */ new Map()); + __privateAdd(this, _version2, state(0)); + __privateAdd(this, _size2, state(0)); + __privateAdd(this, _update_version2, update_version || -1); + if (true_default) { + value = new Map(value); + tag(__privateGet(this, _version2), "SvelteMap version"); + tag(__privateGet(this, _size2), "SvelteMap.size"); + } + if (value) { + for (var [key, v] of value) { + super.set(key, v); + } + __privateGet(this, _size2).v = super.size; + } + } + /** @param {K} key */ + has(key) { + var sources = __privateGet(this, _sources2); + var s = sources.get(key); + if (s === void 0) { + var ret = super.get(key); + if (ret !== void 0) { + s = __privateMethod(this, _SvelteMap_instances, source_fn2).call(this, 0); + if (true_default) { + tag(s, `SvelteMap get(${label(key)})`); + } + sources.set(key, s); + } else { + get(__privateGet(this, _version2)); + return false; + } + } + get(s); + return true; + } + /** + * @param {(value: V, key: K, map: Map) => void} callbackfn + * @param {any} [this_arg] + */ + forEach(callbackfn, this_arg) { + __privateMethod(this, _SvelteMap_instances, read_all_fn).call(this); + super.forEach(callbackfn, this_arg); + } + /** @param {K} key */ + get(key) { + var sources = __privateGet(this, _sources2); + var s = sources.get(key); + if (s === void 0) { + var ret = super.get(key); + if (ret !== void 0) { + s = __privateMethod(this, _SvelteMap_instances, source_fn2).call(this, 0); + if (true_default) { + tag(s, `SvelteMap get(${label(key)})`); + } + sources.set(key, s); + } else { + get(__privateGet(this, _version2)); + return void 0; + } + } + get(s); + return super.get(key); + } + /** + * @param {K} key + * @param {V} value + * */ + set(key, value) { + var _a; + var sources = __privateGet(this, _sources2); + var s = sources.get(key); + var prev_res = super.get(key); + var res = super.set(key, value); + var version = __privateGet(this, _version2); + if (s === void 0) { + s = __privateMethod(this, _SvelteMap_instances, source_fn2).call(this, 0); + if (true_default) { + tag(s, `SvelteMap get(${label(key)})`); + } + sources.set(key, s); + set(__privateGet(this, _size2), super.size); + increment(version); + } else if (prev_res !== value) { + increment(s); + var v_reactions = version.reactions === null ? null : new Set(version.reactions); + var needs_version_increase = v_reactions === null || !((_a = s.reactions) == null ? void 0 : _a.every( + (r) => ( + /** @type {NonNullable} */ + v_reactions.has(r) + ) + )); + if (needs_version_increase) { + increment(version); + } + } + return res; + } + /** @param {K} key */ + delete(key) { + var sources = __privateGet(this, _sources2); + var s = sources.get(key); + var res = super.delete(key); + if (s !== void 0) { + sources.delete(key); + set(__privateGet(this, _size2), super.size); + set(s, -1); + increment(__privateGet(this, _version2)); + } + return res; + } + clear() { + if (super.size === 0) { + return; + } + super.clear(); + var sources = __privateGet(this, _sources2); + set(__privateGet(this, _size2), 0); + for (var s of sources.values()) { + set(s, -1); + } + increment(__privateGet(this, _version2)); + sources.clear(); + } + keys() { + get(__privateGet(this, _version2)); + return super.keys(); + } + values() { + __privateMethod(this, _SvelteMap_instances, read_all_fn).call(this); + return super.values(); + } + entries() { + __privateMethod(this, _SvelteMap_instances, read_all_fn).call(this); + return super.entries(); + } + [Symbol.iterator]() { + return this.entries(); + } + get size() { + get(__privateGet(this, _size2)); + return super.size; + } +}; +_sources2 = new WeakMap(); +_version2 = new WeakMap(); +_size2 = new WeakMap(); +_update_version2 = new WeakMap(); +_SvelteMap_instances = new WeakSet(); +/** + * If the source is being created inside the same reaction as the SvelteMap instance, + * we use `state` so that it will not be a dependency of the reaction. Otherwise we + * use `source` so it will be. + * + * @template T + * @param {T} value + * @returns {Source} + */ +source_fn2 = function(value) { + return update_version === __privateGet(this, _update_version2) ? state(value) : source(value); +}; +read_all_fn = function() { + get(__privateGet(this, _version2)); + var sources = __privateGet(this, _sources2); + if (__privateGet(this, _size2).v !== sources.size) { + for (var key of __superGet(_SvelteMap.prototype, this, "keys").call(this)) { + if (!sources.has(key)) { + var s = __privateMethod(this, _SvelteMap_instances, source_fn2).call(this, 0); + if (true_default) { + tag(s, `SvelteMap get(${label(key)})`); + } + sources.set(key, s); + } + } + } + for ([, s] of __privateGet(this, _sources2)) { + get(s); + } +}; +var SvelteMap = _SvelteMap; + +// node_modules/svelte/src/reactivity/url-search-params.js +var REPLACE = Symbol(); +var _version3, _url, _updating, _SvelteURLSearchParams_instances, update_url_fn; +var SvelteURLSearchParams = class extends URLSearchParams { + constructor() { + super(...arguments); + __privateAdd(this, _SvelteURLSearchParams_instances); + __privateAdd(this, _version3, true_default ? tag(state(0), "SvelteURLSearchParams version") : state(0)); + __privateAdd(this, _url, get_current_url()); + __privateAdd(this, _updating, false); + } + /** + * @param {URLSearchParams} params + * @internal + */ + [REPLACE](params) { + if (__privateGet(this, _updating)) return; + __privateSet(this, _updating, true); + for (const key of [...super.keys()]) { + super.delete(key); + } + for (const [key, value] of params) { + super.append(key, value); + } + increment(__privateGet(this, _version3)); + __privateSet(this, _updating, false); + } + /** + * @param {string} name + * @param {string} value + * @returns {void} + */ + append(name, value) { + super.append(name, value); + __privateMethod(this, _SvelteURLSearchParams_instances, update_url_fn).call(this); + increment(__privateGet(this, _version3)); + } + /** + * @param {string} name + * @param {string=} value + * @returns {void} + */ + delete(name, value) { + var has_value = super.has(name, value); + super.delete(name, value); + if (has_value) { + __privateMethod(this, _SvelteURLSearchParams_instances, update_url_fn).call(this); + increment(__privateGet(this, _version3)); + } + } + /** + * @param {string} name + * @returns {string|null} + */ + get(name) { + get(__privateGet(this, _version3)); + return super.get(name); + } + /** + * @param {string} name + * @returns {string[]} + */ + getAll(name) { + get(__privateGet(this, _version3)); + return super.getAll(name); + } + /** + * @param {string} name + * @param {string=} value + * @returns {boolean} + */ + has(name, value) { + get(__privateGet(this, _version3)); + return super.has(name, value); + } + keys() { + get(__privateGet(this, _version3)); + return super.keys(); + } + /** + * @param {string} name + * @param {string} value + * @returns {void} + */ + set(name, value) { + var previous = super.getAll(name).join(""); + super.set(name, value); + if (previous !== super.getAll(name).join("")) { + __privateMethod(this, _SvelteURLSearchParams_instances, update_url_fn).call(this); + increment(__privateGet(this, _version3)); + } + } + sort() { + super.sort(); + __privateMethod(this, _SvelteURLSearchParams_instances, update_url_fn).call(this); + increment(__privateGet(this, _version3)); + } + toString() { + get(__privateGet(this, _version3)); + return super.toString(); + } + values() { + get(__privateGet(this, _version3)); + return super.values(); + } + entries() { + get(__privateGet(this, _version3)); + return super.entries(); + } + [Symbol.iterator]() { + return this.entries(); + } + get size() { + get(__privateGet(this, _version3)); + return super.size; + } +}; +_version3 = new WeakMap(); +_url = new WeakMap(); +_updating = new WeakMap(); +_SvelteURLSearchParams_instances = new WeakSet(); +update_url_fn = function() { + if (!__privateGet(this, _url) || __privateGet(this, _updating)) return; + __privateSet(this, _updating, true); + const search = this.toString(); + __privateGet(this, _url).search = search && `?${search}`; + __privateSet(this, _updating, false); +}; + +// node_modules/svelte/src/reactivity/url.js +var current_url = null; +function get_current_url() { + return current_url; +} +var _protocol, _username, _password, _hostname, _port, _pathname, _hash, _search, _searchParams; +var SvelteURL = class extends URL { + /** + * @param {string | URL} url + * @param {string | URL} [base] + */ + constructor(url, base) { + url = new URL(url, base); + super(url); + __privateAdd(this, _protocol, state(super.protocol)); + __privateAdd(this, _username, state(super.username)); + __privateAdd(this, _password, state(super.password)); + __privateAdd(this, _hostname, state(super.hostname)); + __privateAdd(this, _port, state(super.port)); + __privateAdd(this, _pathname, state(super.pathname)); + __privateAdd(this, _hash, state(super.hash)); + __privateAdd(this, _search, state(super.search)); + __privateAdd(this, _searchParams); + if (true_default) { + tag(__privateGet(this, _protocol), "SvelteURL.protocol"); + tag(__privateGet(this, _username), "SvelteURL.username"); + tag(__privateGet(this, _password), "SvelteURL.password"); + tag(__privateGet(this, _hostname), "SvelteURL.hostname"); + tag(__privateGet(this, _port), "SvelteURL.port"); + tag(__privateGet(this, _pathname), "SvelteURL.pathname"); + tag(__privateGet(this, _hash), "SvelteURL.hash"); + tag(__privateGet(this, _search), "SvelteURL.search"); + } + current_url = this; + __privateSet(this, _searchParams, new SvelteURLSearchParams(url.searchParams)); + current_url = null; + } + get hash() { + return get(__privateGet(this, _hash)); + } + set hash(value) { + super.hash = value; + set(__privateGet(this, _hash), super.hash); + } + get host() { + get(__privateGet(this, _hostname)); + get(__privateGet(this, _port)); + return super.host; + } + set host(value) { + super.host = value; + set(__privateGet(this, _hostname), super.hostname); + set(__privateGet(this, _port), super.port); + } + get hostname() { + return get(__privateGet(this, _hostname)); + } + set hostname(value) { + super.hostname = value; + set(__privateGet(this, _hostname), super.hostname); + } + get href() { + get(__privateGet(this, _protocol)); + get(__privateGet(this, _username)); + get(__privateGet(this, _password)); + get(__privateGet(this, _hostname)); + get(__privateGet(this, _port)); + get(__privateGet(this, _pathname)); + get(__privateGet(this, _hash)); + get(__privateGet(this, _search)); + return super.href; + } + set href(value) { + super.href = value; + set(__privateGet(this, _protocol), super.protocol); + set(__privateGet(this, _username), super.username); + set(__privateGet(this, _password), super.password); + set(__privateGet(this, _hostname), super.hostname); + set(__privateGet(this, _port), super.port); + set(__privateGet(this, _pathname), super.pathname); + set(__privateGet(this, _hash), super.hash); + set(__privateGet(this, _search), super.search); + __privateGet(this, _searchParams)[REPLACE](super.searchParams); + } + get password() { + return get(__privateGet(this, _password)); + } + set password(value) { + super.password = value; + set(__privateGet(this, _password), super.password); + } + get pathname() { + return get(__privateGet(this, _pathname)); + } + set pathname(value) { + super.pathname = value; + set(__privateGet(this, _pathname), super.pathname); + } + get port() { + return get(__privateGet(this, _port)); + } + set port(value) { + super.port = value; + set(__privateGet(this, _port), super.port); + } + get protocol() { + return get(__privateGet(this, _protocol)); + } + set protocol(value) { + super.protocol = value; + set(__privateGet(this, _protocol), super.protocol); + } + get search() { + return get(__privateGet(this, _search)); + } + set search(value) { + super.search = value; + set(__privateGet(this, _search), value); + __privateGet(this, _searchParams)[REPLACE](super.searchParams); + } + get username() { + return get(__privateGet(this, _username)); + } + set username(value) { + super.username = value; + set(__privateGet(this, _username), super.username); + } + get origin() { + get(__privateGet(this, _protocol)); + get(__privateGet(this, _hostname)); + get(__privateGet(this, _port)); + return super.origin; + } + get searchParams() { + return __privateGet(this, _searchParams); + } + toString() { + return this.href; + } + toJSON() { + return this.href; + } +}; +_protocol = new WeakMap(); +_username = new WeakMap(); +_password = new WeakMap(); +_hostname = new WeakMap(); +_port = new WeakMap(); +_pathname = new WeakMap(); +_hash = new WeakMap(); +_search = new WeakMap(); +_searchParams = new WeakMap(); + +// node_modules/svelte/src/reactivity/media-query.js +var parenthesis_regex = /\(.+\)/; +var non_parenthesized_keywords = /* @__PURE__ */ new Set(["all", "print", "screen", "and", "or", "not", "only"]); +var MediaQuery = class extends ReactiveValue { + /** + * @param {string} query A media query string + * @param {boolean} [fallback] Fallback value for the server + */ + constructor(query, fallback) { + let final_query = parenthesis_regex.test(query) || // we need to use `some` here because technically this `window.matchMedia('random,screen')` still returns true + query.split(/[\s,]+/).some((keyword) => non_parenthesized_keywords.has(keyword.trim())) ? query : `(${query})`; + const q = window.matchMedia(final_query); + super( + () => q.matches, + (update) => on(q, "change", update) + ); + } +}; + +export { + SvelteDate, + SvelteSet, + SvelteMap, + SvelteURLSearchParams, + SvelteURL, + MediaQuery +}; +//# sourceMappingURL=chunk-KU4QGBNN.js.map diff --git a/node_modules/.vite/deps 4/chunk-UGBVNEQM.js.map b/node_modules/.vite/deps 4/chunk-UGBVNEQM.js.map new file mode 100644 index 00000000..98652118 --- /dev/null +++ b/node_modules/.vite/deps 4/chunk-UGBVNEQM.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": [], + "sourcesContent": [], + "mappings": "", + "names": [] +} diff --git a/node_modules/.vite/deps 4/chunk-XWATFG4W.js b/node_modules/.vite/deps 4/chunk-XWATFG4W.js new file mode 100644 index 00000000..24744078 --- /dev/null +++ b/node_modules/.vite/deps 4/chunk-XWATFG4W.js @@ -0,0 +1,213 @@ +import { + true_default +} from "./chunk-HNWPC2PS.js"; + +// node_modules/svelte/src/internal/client/warnings.js +var bold = "font-weight: bold"; +var normal = "font-weight: normal"; +function assignment_value_stale(property, location) { + if (true_default) { + console.warn(`%c[svelte] assignment_value_stale +%cAssignment to \`${property}\` property (${location}) will evaluate to the right-hand side, not the value of \`${property}\` following the assignment. This may result in unexpected behaviour. +https://svelte.dev/e/assignment_value_stale`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/assignment_value_stale`); + } +} +function await_waterfall(name, location) { + if (true_default) { + console.warn(`%c[svelte] await_waterfall +%cAn async derived, \`${name}\` (${location}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app +https://svelte.dev/e/await_waterfall`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/await_waterfall`); + } +} +function binding_property_non_reactive(binding, location) { + if (true_default) { + console.warn( + `%c[svelte] binding_property_non_reactive +%c${location ? `\`${binding}\` (${location}) is binding to a non-reactive property` : `\`${binding}\` is binding to a non-reactive property`} +https://svelte.dev/e/binding_property_non_reactive`, + bold, + normal + ); + } else { + console.warn(`https://svelte.dev/e/binding_property_non_reactive`); + } +} +function console_log_state(method) { + if (true_default) { + console.warn(`%c[svelte] console_log_state +%cYour \`console.${method}\` contained \`$state\` proxies. Consider using \`$inspect(...)\` or \`$state.snapshot(...)\` instead +https://svelte.dev/e/console_log_state`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/console_log_state`); + } +} +function event_handler_invalid(handler, suggestion) { + if (true_default) { + console.warn(`%c[svelte] event_handler_invalid +%c${handler} should be a function. Did you mean to ${suggestion}? +https://svelte.dev/e/event_handler_invalid`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/event_handler_invalid`); + } +} +function hydratable_missing_but_expected(key) { + if (true_default) { + console.warn(`%c[svelte] hydratable_missing_but_expected +%cExpected to find a hydratable with key \`${key}\` during hydration, but did not. +https://svelte.dev/e/hydratable_missing_but_expected`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/hydratable_missing_but_expected`); + } +} +function hydration_attribute_changed(attribute, html, value) { + if (true_default) { + console.warn(`%c[svelte] hydration_attribute_changed +%cThe \`${attribute}\` attribute on \`${html}\` changed its value between server and client renders. The client value, \`${value}\`, will be ignored in favour of the server value +https://svelte.dev/e/hydration_attribute_changed`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/hydration_attribute_changed`); + } +} +function hydration_html_changed(location) { + if (true_default) { + console.warn( + `%c[svelte] hydration_html_changed +%c${location ? `The value of an \`{@html ...}\` block ${location} changed between server and client renders. The client value will be ignored in favour of the server value` : "The value of an `{@html ...}` block changed between server and client renders. The client value will be ignored in favour of the server value"} +https://svelte.dev/e/hydration_html_changed`, + bold, + normal + ); + } else { + console.warn(`https://svelte.dev/e/hydration_html_changed`); + } +} +function hydration_mismatch(location) { + if (true_default) { + console.warn( + `%c[svelte] hydration_mismatch +%c${location ? `Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${location}` : "Hydration failed because the initial UI does not match what was rendered on the server"} +https://svelte.dev/e/hydration_mismatch`, + bold, + normal + ); + } else { + console.warn(`https://svelte.dev/e/hydration_mismatch`); + } +} +function invalid_raw_snippet_render() { + if (true_default) { + console.warn(`%c[svelte] invalid_raw_snippet_render +%cThe \`render\` function passed to \`createRawSnippet\` should return HTML for a single element +https://svelte.dev/e/invalid_raw_snippet_render`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/invalid_raw_snippet_render`); + } +} +function legacy_recursive_reactive_block(filename) { + if (true_default) { + console.warn(`%c[svelte] legacy_recursive_reactive_block +%cDetected a migrated \`$:\` reactive block in \`${filename}\` that both accesses and updates the same reactive value. This may cause recursive updates when converted to an \`$effect\`. +https://svelte.dev/e/legacy_recursive_reactive_block`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/legacy_recursive_reactive_block`); + } +} +function lifecycle_double_unmount() { + if (true_default) { + console.warn(`%c[svelte] lifecycle_double_unmount +%cTried to unmount a component that was not mounted +https://svelte.dev/e/lifecycle_double_unmount`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/lifecycle_double_unmount`); + } +} +function ownership_invalid_binding(parent, prop, child, owner) { + if (true_default) { + console.warn(`%c[svelte] ownership_invalid_binding +%c${parent} passed property \`${prop}\` to ${child} with \`bind:\`, but its parent component ${owner} did not declare \`${prop}\` as a binding. Consider creating a binding between ${owner} and ${parent} (e.g. \`bind:${prop}={...}\` instead of \`${prop}={...}\`) +https://svelte.dev/e/ownership_invalid_binding`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/ownership_invalid_binding`); + } +} +function ownership_invalid_mutation(name, location, prop, parent) { + if (true_default) { + console.warn(`%c[svelte] ownership_invalid_mutation +%cMutating unbound props (\`${name}\`, at ${location}) is strongly discouraged. Consider using \`bind:${prop}={...}\` in ${parent} (or using a callback) instead +https://svelte.dev/e/ownership_invalid_mutation`, bold, normal); + } else { + console.warn(`https://svelte.dev/e/ownership_invalid_mutation`); + } +} +function select_multiple_invalid_value() { + if (true_default) { + console.warn(`%c[svelte] select_multiple_invalid_value +%cThe \`value\` property of a \`\n * \n * ```\n * @template T\n * @since 5.8.0\n */\nexport class Spring {\n\t#stiffness = state(0.15);\n\t#damping = state(0.8);\n\t#precision = state(0.01);\n\n\t#current;\n\t#target;\n\n\t#last_value = /** @type {T} */ (undefined);\n\t#last_time = 0;\n\n\t#inverse_mass = 1;\n\t#momentum = 0;\n\n\t/** @type {import('../internal/client/types').Task | null} */\n\t#task = null;\n\n\t/** @type {ReturnType | null} */\n\t#deferred = null;\n\n\t/**\n\t * @param {T} value\n\t * @param {SpringOpts} [options]\n\t */\n\tconstructor(value, options = {}) {\n\t\tthis.#current = DEV ? tag(state(value), 'Spring.current') : state(value);\n\t\tthis.#target = DEV ? tag(state(value), 'Spring.target') : state(value);\n\n\t\tif (typeof options.stiffness === 'number') this.#stiffness.v = clamp(options.stiffness, 0, 1);\n\t\tif (typeof options.damping === 'number') this.#damping.v = clamp(options.damping, 0, 1);\n\t\tif (typeof options.precision === 'number') this.#precision.v = options.precision;\n\n\t\tif (DEV) {\n\t\t\ttag(this.#stiffness, 'Spring.stiffness');\n\t\t\ttag(this.#damping, 'Spring.damping');\n\t\t\ttag(this.#precision, 'Spring.precision');\n\t\t\ttag(this.#current, 'Spring.current');\n\t\t\ttag(this.#target, 'Spring.target');\n\t\t}\n\t}\n\n\t/**\n\t * Create a spring whose value is bound to the return value of `fn`. This must be called\n\t * inside an effect root (for example, during component initialisation).\n\t *\n\t * ```svelte\n\t * \n\t * ```\n\t * @template U\n\t * @param {() => U} fn\n\t * @param {SpringOpts} [options]\n\t */\n\tstatic of(fn, options) {\n\t\tconst spring = new Spring(fn(), options);\n\n\t\trender_effect(() => {\n\t\t\tspring.set(fn());\n\t\t});\n\n\t\treturn spring;\n\t}\n\n\t/** @param {T} value */\n\t#update(value) {\n\t\tset(this.#target, value);\n\n\t\tthis.#current.v ??= value;\n\t\tthis.#last_value ??= this.#current.v;\n\n\t\tif (!this.#task) {\n\t\t\tthis.#last_time = raf.now();\n\n\t\t\tvar inv_mass_recovery_rate = 1000 / (this.#momentum * 60);\n\n\t\t\tthis.#task ??= loop((now) => {\n\t\t\t\tthis.#inverse_mass = Math.min(this.#inverse_mass + inv_mass_recovery_rate, 1);\n\n\t\t\t\t// clamp elapsed time to 1/30th of a second, so that longer pauses\n\t\t\t\t// (blocked thread or inactive tab) don't cause the spring to go haywire\n\t\t\t\tconst elapsed = Math.min(now - this.#last_time, 1000 / 30);\n\n\t\t\t\t/** @type {import('./private').TickContext} */\n\t\t\t\tconst ctx = {\n\t\t\t\t\tinv_mass: this.#inverse_mass,\n\t\t\t\t\topts: {\n\t\t\t\t\t\tstiffness: this.#stiffness.v,\n\t\t\t\t\t\tdamping: this.#damping.v,\n\t\t\t\t\t\tprecision: this.#precision.v\n\t\t\t\t\t},\n\t\t\t\t\tsettled: true,\n\t\t\t\t\tdt: (elapsed * 60) / 1000\n\t\t\t\t};\n\n\t\t\t\tvar next = tick_spring(ctx, this.#last_value, this.#current.v, this.#target.v);\n\t\t\t\tthis.#last_value = this.#current.v;\n\t\t\t\tthis.#last_time = now;\n\t\t\t\tset(this.#current, next);\n\n\t\t\t\tif (ctx.settled) {\n\t\t\t\t\tthis.#task = null;\n\t\t\t\t}\n\n\t\t\t\treturn !ctx.settled;\n\t\t\t});\n\t\t}\n\n\t\treturn this.#task.promise;\n\t}\n\n\t/**\n\t * Sets `spring.target` to `value` and returns a `Promise` that resolves if and when `spring.current` catches up to it.\n\t *\n\t * If `options.instant` is `true`, `spring.current` immediately matches `spring.target`.\n\t *\n\t * If `options.preserveMomentum` is provided, the spring will continue on its current trajectory for\n\t * the specified number of milliseconds. This is useful for things like 'fling' gestures.\n\t *\n\t * @param {T} value\n\t * @param {SpringUpdateOpts} [options]\n\t */\n\tset(value, options) {\n\t\tthis.#deferred?.reject(new Error('Aborted'));\n\n\t\tif (options?.instant || this.#current.v === undefined) {\n\t\t\tthis.#task?.abort();\n\t\t\tthis.#task = null;\n\t\t\tset(this.#current, set(this.#target, value));\n\t\t\tthis.#last_value = value;\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tif (options?.preserveMomentum) {\n\t\t\tthis.#inverse_mass = 0;\n\t\t\tthis.#momentum = options.preserveMomentum;\n\t\t}\n\n\t\tvar d = (this.#deferred = deferred());\n\t\td.promise.catch(noop);\n\n\t\tthis.#update(value).then(() => {\n\t\t\tif (d !== this.#deferred) return;\n\t\t\td.resolve(undefined);\n\t\t});\n\n\t\treturn d.promise;\n\t}\n\n\tget current() {\n\t\treturn get(this.#current);\n\t}\n\n\tget damping() {\n\t\treturn get(this.#damping);\n\t}\n\n\tset damping(v) {\n\t\tset(this.#damping, clamp(v, 0, 1));\n\t}\n\n\tget precision() {\n\t\treturn get(this.#precision);\n\t}\n\n\tset precision(v) {\n\t\tset(this.#precision, v);\n\t}\n\n\tget stiffness() {\n\t\treturn get(this.#stiffness);\n\t}\n\n\tset stiffness(v) {\n\t\tset(this.#stiffness, clamp(v, 0, 1));\n\t}\n\n\tget target() {\n\t\treturn get(this.#target);\n\t}\n\n\tset target(v) {\n\t\tthis.set(v);\n\t}\n}\n\n/**\n * @param {number} n\n * @param {number} min\n * @param {number} max\n */\nfunction clamp(n, min, max) {\n\treturn Math.max(min, Math.min(max, n));\n}\n", "/** @import { Task } from '../internal/client/types' */\n/** @import { Tweened } from './public' */\n/** @import { TweenedOptions } from './private' */\nimport { writable } from '../store/shared/index.js';\nimport { raf } from '../internal/client/timing.js';\nimport { loop } from '../internal/client/loop.js';\nimport { linear } from '../easing/index.js';\nimport { is_date } from './utils.js';\nimport { set, state } from '../internal/client/reactivity/sources.js';\nimport { tag } from '../internal/client/dev/tracing.js';\nimport { get, render_effect } from 'svelte/internal/client';\nimport { DEV } from 'esm-env';\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @returns {(t: number) => T}\n */\nfunction get_interpolator(a, b) {\n\tif (a === b || a !== a) return () => a;\n\n\tconst type = typeof a;\n\tif (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n\t\tthrow new Error('Cannot interpolate values of different type');\n\t}\n\n\tif (Array.isArray(a)) {\n\t\tconst arr = /** @type {Array} */ (b).map((bi, i) => {\n\t\t\treturn get_interpolator(/** @type {Array} */ (a)[i], bi);\n\t\t});\n\n\t\t// @ts-ignore\n\t\treturn (t) => arr.map((fn) => fn(t));\n\t}\n\n\tif (type === 'object') {\n\t\tif (!a || !b) {\n\t\t\tthrow new Error('Object cannot be null');\n\t\t}\n\n\t\tif (is_date(a) && is_date(b)) {\n\t\t\tconst an = a.getTime();\n\t\t\tconst bn = b.getTime();\n\t\t\tconst delta = bn - an;\n\n\t\t\t// @ts-ignore\n\t\t\treturn (t) => new Date(an + t * delta);\n\t\t}\n\n\t\tconst keys = Object.keys(b);\n\n\t\t/** @type {Record T>} */\n\t\tconst interpolators = {};\n\t\tkeys.forEach((key) => {\n\t\t\t// @ts-ignore\n\t\t\tinterpolators[key] = get_interpolator(a[key], b[key]);\n\t\t});\n\n\t\t// @ts-ignore\n\t\treturn (t) => {\n\t\t\t/** @type {Record} */\n\t\t\tconst result = {};\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tresult[key] = interpolators[key](t);\n\t\t\t});\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tif (type === 'number') {\n\t\tconst delta = /** @type {number} */ (b) - /** @type {number} */ (a);\n\t\t// @ts-ignore\n\t\treturn (t) => a + t * delta;\n\t}\n\n\t// for non-numeric values, snap to the final value immediately\n\treturn () => b;\n}\n\n/**\n * A tweened store in Svelte is a special type of store that provides smooth transitions between state values over time.\n *\n * @deprecated Use [`Tween`](https://svelte.dev/docs/svelte/svelte-motion#Tween) instead\n * @template T\n * @param {T} [value]\n * @param {TweenedOptions} [defaults]\n * @returns {Tweened}\n */\nexport function tweened(value, defaults = {}) {\n\tconst store = writable(value);\n\t/** @type {Task} */\n\tlet task;\n\tlet target_value = value;\n\t/**\n\t * @param {T} new_value\n\t * @param {TweenedOptions} [opts]\n\t */\n\tfunction set(new_value, opts) {\n\t\ttarget_value = new_value;\n\n\t\tif (value == null) {\n\t\t\tstore.set((value = new_value));\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\t/** @type {Task | null} */\n\t\tlet previous_task = task;\n\n\t\tlet started = false;\n\t\tlet {\n\t\t\tdelay = 0,\n\t\t\tduration = 400,\n\t\t\teasing = linear,\n\t\t\tinterpolate = get_interpolator\n\t\t} = { ...defaults, ...opts };\n\n\t\tif (duration === 0) {\n\t\t\tif (previous_task) {\n\t\t\t\tprevious_task.abort();\n\t\t\t\tprevious_task = null;\n\t\t\t}\n\t\t\tstore.set((value = target_value));\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst start = raf.now() + delay;\n\n\t\t/** @type {(t: number) => T} */\n\t\tlet fn;\n\t\ttask = loop((now) => {\n\t\t\tif (now < start) return true;\n\t\t\tif (!started) {\n\t\t\t\tfn = interpolate(/** @type {any} */ (value), new_value);\n\t\t\t\tif (typeof duration === 'function')\n\t\t\t\t\tduration = duration(/** @type {any} */ (value), new_value);\n\t\t\t\tstarted = true;\n\t\t\t}\n\t\t\tif (previous_task) {\n\t\t\t\tprevious_task.abort();\n\t\t\t\tprevious_task = null;\n\t\t\t}\n\t\t\tconst elapsed = now - start;\n\t\t\tif (elapsed > /** @type {number} */ (duration)) {\n\t\t\t\tstore.set((value = new_value));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// @ts-ignore\n\t\t\tstore.set((value = fn(easing(elapsed / duration))));\n\t\t\treturn true;\n\t\t});\n\t\treturn task.promise;\n\t}\n\treturn {\n\t\tset,\n\t\tupdate: (fn, opts) =>\n\t\t\tset(fn(/** @type {any} */ (target_value), /** @type {any} */ (value)), opts),\n\t\tsubscribe: store.subscribe\n\t};\n}\n\n/**\n * A wrapper for a value that tweens smoothly to its target value. Changes to `tween.target` will cause `tween.current` to\n * move towards it over time, taking account of the `delay`, `duration` and `easing` options.\n *\n * ```svelte\n * \n *\n * \n * \n * ```\n * @template T\n * @since 5.8.0\n */\nexport class Tween {\n\t#current;\n\t#target;\n\n\t/** @type {TweenedOptions} */\n\t#defaults;\n\n\t/** @type {import('../internal/client/types').Task | null} */\n\t#task = null;\n\n\t/**\n\t * @param {T} value\n\t * @param {TweenedOptions} options\n\t */\n\tconstructor(value, options = {}) {\n\t\tthis.#current = state(value);\n\t\tthis.#target = state(value);\n\t\tthis.#defaults = options;\n\n\t\tif (DEV) {\n\t\t\ttag(this.#current, 'Tween.current');\n\t\t\ttag(this.#target, 'Tween.target');\n\t\t}\n\t}\n\n\t/**\n\t * Create a tween whose value is bound to the return value of `fn`. This must be called\n\t * inside an effect root (for example, during component initialisation).\n\t *\n\t * ```svelte\n\t * \n\t * ```\n\t * @template U\n\t * @param {() => U} fn\n\t * @param {TweenedOptions} [options]\n\t */\n\tstatic of(fn, options) {\n\t\tconst tween = new Tween(fn(), options);\n\n\t\trender_effect(() => {\n\t\t\ttween.set(fn());\n\t\t});\n\n\t\treturn tween;\n\t}\n\n\t/**\n\t * Sets `tween.target` to `value` and returns a `Promise` that resolves if and when `tween.current` catches up to it.\n\t *\n\t * If `options` are provided, they will override the tween's defaults.\n\t * @param {T} value\n\t * @param {TweenedOptions} [options]\n\t * @returns\n\t */\n\tset(value, options) {\n\t\tset(this.#target, value);\n\n\t\tlet {\n\t\t\tdelay = 0,\n\t\t\tduration = 400,\n\t\t\teasing = linear,\n\t\t\tinterpolate = get_interpolator\n\t\t} = { ...this.#defaults, ...options };\n\n\t\tif (duration === 0) {\n\t\t\tthis.#task?.abort();\n\t\t\tset(this.#current, value);\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst start = raf.now() + delay;\n\n\t\t/** @type {(t: number) => T} */\n\t\tlet fn;\n\t\tlet started = false;\n\t\tlet previous_task = this.#task;\n\n\t\tthis.#task = loop((now) => {\n\t\t\tif (now < start) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!started) {\n\t\t\t\tstarted = true;\n\n\t\t\t\tconst prev = this.#current.v;\n\n\t\t\t\tfn = interpolate(prev, value);\n\n\t\t\t\tif (typeof duration === 'function') {\n\t\t\t\t\tduration = duration(prev, value);\n\t\t\t\t}\n\n\t\t\t\tprevious_task?.abort();\n\t\t\t}\n\n\t\t\tconst elapsed = now - start;\n\n\t\t\tif (elapsed > /** @type {number} */ (duration)) {\n\t\t\t\tset(this.#current, value);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tset(this.#current, fn(easing(elapsed / /** @type {number} */ (duration))));\n\t\t\treturn true;\n\t\t});\n\n\t\treturn this.#task.promise;\n\t}\n\n\tget current() {\n\t\treturn get(this.#current);\n\t}\n\n\tget target() {\n\t\treturn get(this.#target);\n\t}\n\n\tset target(v) {\n\t\tthis.set(v);\n\t}\n}\n", "import { MediaQuery } from 'svelte/reactivity';\n\nexport * from './spring.js';\nexport * from './tweened.js';\n\n/**\n * A [media query](https://svelte.dev/docs/svelte/svelte-reactivity#MediaQuery) that matches if the user [prefers reduced motion](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion).\n *\n * ```svelte\n * \n *\n * \n *\n * {#if visible}\n * \t

\n * \t\tflies in, unless the user prefers reduced motion\n * \t

\n * {/if}\n * ```\n * @type {MediaQuery}\n * @since 5.7.0\n */\nexport const prefersReducedMotion = /*@__PURE__*/ new MediaQuery(\n\t'(prefers-reduced-motion: reduce)'\n);\n"], + "mappings": "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", + "names": ["spring", "set", "opts", "set", "_current", "_target", "_task"] +} diff --git a/node_modules/.vite/deps 4/svelte_reactivity_window.js b/node_modules/.vite/deps 4/svelte_reactivity_window.js new file mode 100644 index 00000000..f202f10b --- /dev/null +++ b/node_modules/.vite/deps 4/svelte_reactivity_window.js @@ -0,0 +1,131 @@ +import { + ReactiveValue +} from "./chunk-3XCL4SSM.js"; +import "./chunk-7RQDXF5S.js"; +import "./chunk-MFQZTEP2.js"; +import "./chunk-U7P2NEEE.js"; +import "./chunk-J5VS5SBR.js"; +import { + get, + on, + set, + source, + tag +} from "./chunk-KT36QEZ7.js"; +import "./chunk-XWATFG4W.js"; +import { + true_default +} from "./chunk-HNWPC2PS.js"; +import "./chunk-OHYQYV5R.js"; +import { + __privateAdd, + __privateGet, + __privateMethod +} from "./chunk-UGBVNEQM.js"; + +// node_modules/svelte/src/reactivity/window/index.js +var scrollX = new ReactiveValue( + true_default ? () => window.scrollX : () => void 0, + (update) => on(window, "scroll", update) +); +var scrollY = new ReactiveValue( + true_default ? () => window.scrollY : () => void 0, + (update) => on(window, "scroll", update) +); +var innerWidth = new ReactiveValue( + true_default ? () => window.innerWidth : () => void 0, + (update) => on(window, "resize", update) +); +var innerHeight = new ReactiveValue( + true_default ? () => window.innerHeight : () => void 0, + (update) => on(window, "resize", update) +); +var outerWidth = new ReactiveValue( + true_default ? () => window.outerWidth : () => void 0, + (update) => on(window, "resize", update) +); +var outerHeight = new ReactiveValue( + true_default ? () => window.outerHeight : () => void 0, + (update) => on(window, "resize", update) +); +var screenLeft = new ReactiveValue( + true_default ? () => window.screenLeft : () => void 0, + (update) => { + let value = window.screenLeft; + let frame = requestAnimationFrame(function check() { + frame = requestAnimationFrame(check); + if (value !== (value = window.screenLeft)) { + update(); + } + }); + return () => { + cancelAnimationFrame(frame); + }; + } +); +var screenTop = new ReactiveValue( + true_default ? () => window.screenTop : () => void 0, + (update) => { + let value = window.screenTop; + let frame = requestAnimationFrame(function check() { + frame = requestAnimationFrame(check); + if (value !== (value = window.screenTop)) { + update(); + } + }); + return () => { + cancelAnimationFrame(frame); + }; + } +); +var online = new ReactiveValue( + true_default ? () => navigator.onLine : () => void 0, + (update) => { + const unsub_online = on(window, "online", update); + const unsub_offline = on(window, "offline", update); + return () => { + unsub_online(); + unsub_offline(); + }; + } +); +var _dpr, _DevicePixelRatio_instances, update_fn, _a; +var devicePixelRatio = new (_a = class { + constructor() { + __privateAdd(this, _DevicePixelRatio_instances); + __privateAdd(this, _dpr, source(true_default ? window.devicePixelRatio : void 0)); + if (true_default) { + __privateMethod(this, _DevicePixelRatio_instances, update_fn).call(this); + } + if (true_default) { + tag(__privateGet(this, _dpr), "window.devicePixelRatio"); + } + } + get current() { + get(__privateGet(this, _dpr)); + return true_default ? window.devicePixelRatio : void 0; + } +}, _dpr = new WeakMap(), _DevicePixelRatio_instances = new WeakSet(), update_fn = function() { + const off = on( + window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`), + "change", + () => { + set(__privateGet(this, _dpr), window.devicePixelRatio); + off(); + __privateMethod(this, _DevicePixelRatio_instances, update_fn).call(this); + } + ); +}, _a)(); +export { + devicePixelRatio, + innerHeight, + innerWidth, + online, + outerHeight, + outerWidth, + screenLeft, + screenTop, + scrollX, + scrollY +}; +//# sourceMappingURL=svelte_reactivity_window.js.map diff --git a/node_modules/.vite/deps/@lucide_svelte_icons_check.js b/node_modules/.vite/deps/@lucide_svelte_icons_check.js index 4bf0c161..6eae7c21 100644 --- a/node_modules/.vite/deps/@lucide_svelte_icons_check.js +++ b/node_modules/.vite/deps/@lucide_svelte_icons_check.js @@ -1,7 +1,6 @@ import { Icon_default -} from "./chunk-JWZP2TNC.js"; -import "./chunk-2LGM3QYM.js"; +} from "./chunk-6EUZYYI5.js"; import { check_target, hmr, @@ -10,11 +9,12 @@ import { snippet, spread_props, wrap_snippet -} from "./chunk-WTI4ZYPF.js"; +} from "./chunk-EXK7SDUS.js"; +import "./chunk-U7P2NEEE.js"; import { append, comment -} from "./chunk-7NTURTDS.js"; +} from "./chunk-57IKBECK.js"; import { FILENAME, HMR, @@ -23,11 +23,11 @@ import { noop, pop, push -} from "./chunk-5K6HJQUS.js"; -import "./chunk-OHYQYV5R.js"; +} from "./chunk-JC3VXQM7.js"; import "./chunk-XWATFG4W.js"; import "./chunk-HNWPC2PS.js"; -import "./chunk-U7P2NEEE.js"; +import "./chunk-2LGM3QYM.js"; +import "./chunk-OHYQYV5R.js"; import "./chunk-X4VJQ2O3.js"; // node_modules/@lucide/svelte/dist/icons/check.svelte diff --git a/node_modules/.vite/deps/@lucide_svelte_icons_chevron-right.js b/node_modules/.vite/deps/@lucide_svelte_icons_chevron-right.js index ba69de77..581430fc 100644 --- a/node_modules/.vite/deps/@lucide_svelte_icons_chevron-right.js +++ b/node_modules/.vite/deps/@lucide_svelte_icons_chevron-right.js @@ -1,7 +1,6 @@ import { Icon_default -} from "./chunk-JWZP2TNC.js"; -import "./chunk-2LGM3QYM.js"; +} from "./chunk-6EUZYYI5.js"; import { check_target, hmr, @@ -10,11 +9,12 @@ import { snippet, spread_props, wrap_snippet -} from "./chunk-WTI4ZYPF.js"; +} from "./chunk-EXK7SDUS.js"; +import "./chunk-U7P2NEEE.js"; import { append, comment -} from "./chunk-7NTURTDS.js"; +} from "./chunk-57IKBECK.js"; import { FILENAME, HMR, @@ -23,11 +23,11 @@ import { noop, pop, push -} from "./chunk-5K6HJQUS.js"; -import "./chunk-OHYQYV5R.js"; +} from "./chunk-JC3VXQM7.js"; import "./chunk-XWATFG4W.js"; import "./chunk-HNWPC2PS.js"; -import "./chunk-U7P2NEEE.js"; +import "./chunk-2LGM3QYM.js"; +import "./chunk-OHYQYV5R.js"; import "./chunk-X4VJQ2O3.js"; // node_modules/@lucide/svelte/dist/icons/chevron-right.svelte diff --git a/node_modules/.vite/deps/@lucide_svelte_icons_circle.js b/node_modules/.vite/deps/@lucide_svelte_icons_circle.js index 2677ab47..6dee05a4 100644 --- a/node_modules/.vite/deps/@lucide_svelte_icons_circle.js +++ b/node_modules/.vite/deps/@lucide_svelte_icons_circle.js @@ -1,7 +1,6 @@ import { Icon_default -} from "./chunk-JWZP2TNC.js"; -import "./chunk-2LGM3QYM.js"; +} from "./chunk-6EUZYYI5.js"; import { check_target, hmr, @@ -10,11 +9,12 @@ import { snippet, spread_props, wrap_snippet -} from "./chunk-WTI4ZYPF.js"; +} from "./chunk-EXK7SDUS.js"; +import "./chunk-U7P2NEEE.js"; import { append, comment -} from "./chunk-7NTURTDS.js"; +} from "./chunk-57IKBECK.js"; import { FILENAME, HMR, @@ -23,11 +23,11 @@ import { noop, pop, push -} from "./chunk-5K6HJQUS.js"; -import "./chunk-OHYQYV5R.js"; +} from "./chunk-JC3VXQM7.js"; import "./chunk-XWATFG4W.js"; import "./chunk-HNWPC2PS.js"; -import "./chunk-U7P2NEEE.js"; +import "./chunk-2LGM3QYM.js"; +import "./chunk-OHYQYV5R.js"; import "./chunk-X4VJQ2O3.js"; // node_modules/@lucide/svelte/dist/icons/circle.svelte diff --git a/node_modules/.vite/deps/@lucide_svelte_icons_minus.js b/node_modules/.vite/deps/@lucide_svelte_icons_minus.js index 0d37ba42..416aa4b4 100644 --- a/node_modules/.vite/deps/@lucide_svelte_icons_minus.js +++ b/node_modules/.vite/deps/@lucide_svelte_icons_minus.js @@ -1,7 +1,6 @@ import { Icon_default -} from "./chunk-JWZP2TNC.js"; -import "./chunk-2LGM3QYM.js"; +} from "./chunk-6EUZYYI5.js"; import { check_target, hmr, @@ -10,11 +9,12 @@ import { snippet, spread_props, wrap_snippet -} from "./chunk-WTI4ZYPF.js"; +} from "./chunk-EXK7SDUS.js"; +import "./chunk-U7P2NEEE.js"; import { append, comment -} from "./chunk-7NTURTDS.js"; +} from "./chunk-57IKBECK.js"; import { FILENAME, HMR, @@ -23,11 +23,11 @@ import { noop, pop, push -} from "./chunk-5K6HJQUS.js"; -import "./chunk-OHYQYV5R.js"; +} from "./chunk-JC3VXQM7.js"; import "./chunk-XWATFG4W.js"; import "./chunk-HNWPC2PS.js"; -import "./chunk-U7P2NEEE.js"; +import "./chunk-2LGM3QYM.js"; +import "./chunk-OHYQYV5R.js"; import "./chunk-X4VJQ2O3.js"; // node_modules/@lucide/svelte/dist/icons/minus.svelte diff --git a/node_modules/.vite/deps/@lucide_svelte_icons_x.js b/node_modules/.vite/deps/@lucide_svelte_icons_x.js index 294253dc..7fa537dc 100644 --- a/node_modules/.vite/deps/@lucide_svelte_icons_x.js +++ b/node_modules/.vite/deps/@lucide_svelte_icons_x.js @@ -1,7 +1,6 @@ import { Icon_default -} from "./chunk-JWZP2TNC.js"; -import "./chunk-2LGM3QYM.js"; +} from "./chunk-6EUZYYI5.js"; import { check_target, hmr, @@ -10,11 +9,12 @@ import { snippet, spread_props, wrap_snippet -} from "./chunk-WTI4ZYPF.js"; +} from "./chunk-EXK7SDUS.js"; +import "./chunk-U7P2NEEE.js"; import { append, comment -} from "./chunk-7NTURTDS.js"; +} from "./chunk-57IKBECK.js"; import { FILENAME, HMR, @@ -23,11 +23,11 @@ import { noop, pop, push -} from "./chunk-5K6HJQUS.js"; -import "./chunk-OHYQYV5R.js"; +} from "./chunk-JC3VXQM7.js"; import "./chunk-XWATFG4W.js"; import "./chunk-HNWPC2PS.js"; -import "./chunk-U7P2NEEE.js"; +import "./chunk-2LGM3QYM.js"; +import "./chunk-OHYQYV5R.js"; import "./chunk-X4VJQ2O3.js"; // node_modules/@lucide/svelte/dist/icons/x.svelte diff --git a/node_modules/.vite/deps/_metadata.json b/node_modules/.vite/deps/_metadata.json index c6c1613d..ef855a77 100644 --- a/node_modules/.vite/deps/_metadata.json +++ b/node_modules/.vite/deps/_metadata.json @@ -1,232 +1,229 @@ { - "hash": "37e34cef", - "configHash": "a611bccb", + "hash": "6372abc7", + "configHash": "441370a6", "lockfileHash": "43c145e9", - "browserHash": "c291ae77", + "browserHash": "583ba445", "optimized": { "svelte": { "src": "../../svelte/src/index-client.js", "file": "svelte.js", - "fileHash": "c29ec3b1", + "fileHash": "b620c7b2", "needsInterop": false }, "svelte/animate": { "src": "../../svelte/src/animate/index.js", "file": "svelte_animate.js", - "fileHash": "f801f98b", + "fileHash": "02f610c1", "needsInterop": false }, "svelte/attachments": { "src": "../../svelte/src/attachments/index.js", "file": "svelte_attachments.js", - "fileHash": "7aa9c042", + "fileHash": "aa2fd54c", "needsInterop": false }, "svelte/easing": { "src": "../../svelte/src/easing/index.js", "file": "svelte_easing.js", - "fileHash": "821e4df0", + "fileHash": "0f0d888b", "needsInterop": false }, "svelte/internal": { "src": "../../svelte/src/internal/index.js", "file": "svelte_internal.js", - "fileHash": "fcebec5d", + "fileHash": "ae1c44b6", "needsInterop": true }, "svelte/internal/client": { "src": "../../svelte/src/internal/client/index.js", "file": "svelte_internal_client.js", - "fileHash": "df87e2d5", + "fileHash": "9548cc44", "needsInterop": false }, "svelte/internal/disclose-version": { "src": "../../svelte/src/internal/disclose-version.js", "file": "svelte_internal_disclose-version.js", - "fileHash": "219836d5", + "fileHash": "523d7d1e", "needsInterop": false }, "svelte/internal/flags/async": { "src": "../../svelte/src/internal/flags/async.js", "file": "svelte_internal_flags_async.js", - "fileHash": "871666cb", + "fileHash": "69240c49", "needsInterop": false }, "svelte/internal/flags/legacy": { "src": "../../svelte/src/internal/flags/legacy.js", "file": "svelte_internal_flags_legacy.js", - "fileHash": "9fe31bdc", + "fileHash": "4a2d0680", "needsInterop": false }, "svelte/internal/flags/tracing": { "src": "../../svelte/src/internal/flags/tracing.js", "file": "svelte_internal_flags_tracing.js", - "fileHash": "ee89c8ce", + "fileHash": "65275630", "needsInterop": false }, "svelte/legacy": { "src": "../../svelte/src/legacy/legacy-client.js", "file": "svelte_legacy.js", - "fileHash": "8c32d39e", + "fileHash": "753552cd", "needsInterop": false }, "svelte/motion": { "src": "../../svelte/src/motion/index.js", "file": "svelte_motion.js", - "fileHash": "5d58e631", + "fileHash": "1405f1f5", "needsInterop": false }, "svelte/reactivity": { "src": "../../svelte/src/reactivity/index-client.js", "file": "svelte_reactivity.js", - "fileHash": "01410ffc", + "fileHash": "a6ac2ac8", "needsInterop": false }, "svelte/reactivity/window": { "src": "../../svelte/src/reactivity/window/index.js", "file": "svelte_reactivity_window.js", - "fileHash": "d1a58038", + "fileHash": "25337be5", "needsInterop": false }, "svelte/store": { "src": "../../svelte/src/store/index-client.js", "file": "svelte_store.js", - "fileHash": "ef7accb6", + "fileHash": "0bb2bc3e", "needsInterop": false }, "svelte/transition": { "src": "../../svelte/src/transition/index.js", "file": "svelte_transition.js", - "fileHash": "3ce7bbe3", + "fileHash": "0c13897c", "needsInterop": false }, "svelte/events": { "src": "../../svelte/src/events/index.js", "file": "svelte_events.js", - "fileHash": "22d9e939", + "fileHash": "8e64c629", "needsInterop": false }, "svelte > clsx": { "src": "../../clsx/dist/clsx.mjs", "file": "svelte___clsx.js", - "fileHash": "39025dbf", - "needsInterop": false - }, - "@lucide/svelte/icons/x": { - "src": "../../@lucide/svelte/dist/icons/x.js", - "file": "@lucide_svelte_icons_x.js", - "fileHash": "d303e76b", - "needsInterop": false - }, - "barcode-detector-api-polyfill": { - "src": "../../barcode-detector-api-polyfill/esm/index.js", - "file": "barcode-detector-api-polyfill.js", - "fileHash": "6cd8e253", - "needsInterop": false - }, - "bits-ui": { - "src": "../../bits-ui/dist/index.js", - "file": "bits-ui.js", - "fileHash": "1d9e7fd4", - "needsInterop": false - }, - "clsx": { - "src": "../../clsx/dist/clsx.mjs", - "file": "clsx.js", - "fileHash": "9663dedf", - "needsInterop": false - }, - "devalue": { - "src": "../../devalue/index.js", - "file": "devalue.js", - "fileHash": "1f2962b1", - "needsInterop": false - }, - "esm-env": { - "src": "../../esm-env/index.js", - "file": "esm-env.js", - "fileHash": "0228a164", - "needsInterop": false - }, - "pocketbase": { - "src": "../../pocketbase/dist/pocketbase.es.mjs", - "file": "pocketbase.js", - "fileHash": "cd8a0c24", - "needsInterop": false - }, - "tailwind-merge": { - "src": "../../tailwind-merge/dist/bundle-mjs.mjs", - "file": "tailwind-merge.js", - "fileHash": "5e96d18e", - "needsInterop": false - }, - "tailwind-variants": { - "src": "../../tailwind-variants/dist/index.js", - "file": "tailwind-variants.js", - "fileHash": "f0bd009d", - "needsInterop": false - }, - "@lucide/svelte/icons/chevron-right": { - "src": "../../@lucide/svelte/dist/icons/chevron-right.js", - "file": "@lucide_svelte_icons_chevron-right.js", - "fileHash": "5455695d", + "fileHash": "a1e066f0", "needsInterop": false }, "@lucide/svelte/icons/check": { "src": "../../@lucide/svelte/dist/icons/check.js", "file": "@lucide_svelte_icons_check.js", - "fileHash": "ab94f86d", + "fileHash": "891b74d4", "needsInterop": false }, - "@lucide/svelte/icons/minus": { - "src": "../../@lucide/svelte/dist/icons/minus.js", - "file": "@lucide_svelte_icons_minus.js", - "fileHash": "78a5d9ca", + "@lucide/svelte/icons/chevron-right": { + "src": "../../@lucide/svelte/dist/icons/chevron-right.js", + "file": "@lucide_svelte_icons_chevron-right.js", + "fileHash": "63648db9", "needsInterop": false }, "@lucide/svelte/icons/circle": { "src": "../../@lucide/svelte/dist/icons/circle.js", "file": "@lucide_svelte_icons_circle.js", - "fileHash": "dac666a1", + "fileHash": "11e4822b", + "needsInterop": false + }, + "@lucide/svelte/icons/minus": { + "src": "../../@lucide/svelte/dist/icons/minus.js", + "file": "@lucide_svelte_icons_minus.js", + "fileHash": "30cf92e4", + "needsInterop": false + }, + "@lucide/svelte/icons/x": { + "src": "../../@lucide/svelte/dist/icons/x.js", + "file": "@lucide_svelte_icons_x.js", + "fileHash": "aa690a02", + "needsInterop": false + }, + "barcode-detector-api-polyfill": { + "src": "../../barcode-detector-api-polyfill/esm/index.js", + "file": "barcode-detector-api-polyfill.js", + "fileHash": "55497bad", + "needsInterop": false + }, + "bits-ui": { + "src": "../../bits-ui/dist/index.js", + "file": "bits-ui.js", + "fileHash": "1d3c3c46", + "needsInterop": false + }, + "clsx": { + "src": "../../clsx/dist/clsx.mjs", + "file": "clsx.js", + "fileHash": "b6a14292", + "needsInterop": false + }, + "devalue": { + "src": "../../devalue/index.js", + "file": "devalue.js", + "fileHash": "2ff911fe", + "needsInterop": false + }, + "esm-env": { + "src": "../../esm-env/index.js", + "file": "esm-env.js", + "fileHash": "5a410efb", + "needsInterop": false + }, + "pocketbase": { + "src": "../../pocketbase/dist/pocketbase.es.mjs", + "file": "pocketbase.js", + "fileHash": "9e68746a", + "needsInterop": false + }, + "tailwind-merge": { + "src": "../../tailwind-merge/dist/bundle-mjs.mjs", + "file": "tailwind-merge.js", + "fileHash": "d8639500", + "needsInterop": false + }, + "tailwind-variants": { + "src": "../../tailwind-variants/dist/index.js", + "file": "tailwind-variants.js", + "fileHash": "cf2013f5", "needsInterop": false } }, "chunks": { + "chunk-6EUZYYI5": { + "file": "chunk-6EUZYYI5.js" + }, "chunk-HRPYXN4O": { "file": "chunk-HRPYXN4O.js" }, - "chunk-JWZP2TNC": { - "file": "chunk-JWZP2TNC.js" - }, - "chunk-YERFD2CZ": { - "file": "chunk-YERFD2CZ.js" - }, - "chunk-BB5SQROY": { - "file": "chunk-BB5SQROY.js" - }, - "chunk-EJO6A5J3": { - "file": "chunk-EJO6A5J3.js" - }, "chunk-MZVN5SDE": { "file": "chunk-MZVN5SDE.js" }, + "chunk-EZEETTA4": { + "file": "chunk-EZEETTA4.js" + }, + "chunk-3TACVO2P": { + "file": "chunk-3TACVO2P.js" + }, "chunk-7RQDXF5S": { "file": "chunk-7RQDXF5S.js" }, - "chunk-2LGM3QYM": { - "file": "chunk-2LGM3QYM.js" + "chunk-YERFD2CZ": { + "file": "chunk-YERFD2CZ.js" }, - "chunk-WTI4ZYPF": { - "file": "chunk-WTI4ZYPF.js" + "chunk-EXK7SDUS": { + "file": "chunk-EXK7SDUS.js" }, - "chunk-7NTURTDS": { - "file": "chunk-7NTURTDS.js" + "chunk-U7P2NEEE": { + "file": "chunk-U7P2NEEE.js" }, - "chunk-5K6HJQUS": { - "file": "chunk-5K6HJQUS.js" + "chunk-57IKBECK": { + "file": "chunk-57IKBECK.js" }, - "chunk-OHYQYV5R": { - "file": "chunk-OHYQYV5R.js" + "chunk-JC3VXQM7": { + "file": "chunk-JC3VXQM7.js" }, "chunk-XWATFG4W": { "file": "chunk-XWATFG4W.js" @@ -234,8 +231,11 @@ "chunk-HNWPC2PS": { "file": "chunk-HNWPC2PS.js" }, - "chunk-U7P2NEEE": { - "file": "chunk-U7P2NEEE.js" + "chunk-2LGM3QYM": { + "file": "chunk-2LGM3QYM.js" + }, + "chunk-OHYQYV5R": { + "file": "chunk-OHYQYV5R.js" }, "chunk-X4VJQ2O3": { "file": "chunk-X4VJQ2O3.js" diff --git a/node_modules/.vite/deps/bits-ui.js b/node_modules/.vite/deps/bits-ui.js index 3d90e1e0..b5879fc0 100644 --- a/node_modules/.vite/deps/bits-ui.js +++ b/node_modules/.vite/deps/bits-ui.js @@ -1,10 +1,9 @@ +import "./chunk-MZVN5SDE.js"; import { SvelteMap -} from "./chunk-BB5SQROY.js"; -import "./chunk-EJO6A5J3.js"; -import "./chunk-MZVN5SDE.js"; +} from "./chunk-EZEETTA4.js"; +import "./chunk-3TACVO2P.js"; import "./chunk-7RQDXF5S.js"; -import "./chunk-2LGM3QYM.js"; import { add_locations, append_styles, @@ -39,7 +38,10 @@ import { validate_snippet_args, validate_void_dynamic_element, wrap_snippet -} from "./chunk-WTI4ZYPF.js"; +} from "./chunk-EXK7SDUS.js"; +import { + clsx +} from "./chunk-U7P2NEEE.js"; import { append, comment, @@ -50,7 +52,7 @@ import { set_text, text, unmount -} from "./chunk-7NTURTDS.js"; +} from "./chunk-57IKBECK.js"; import { FILENAME, HMR, @@ -86,15 +88,13 @@ import { user_derived, user_effect, user_pre_effect -} from "./chunk-5K6HJQUS.js"; -import "./chunk-OHYQYV5R.js"; +} from "./chunk-JC3VXQM7.js"; import "./chunk-XWATFG4W.js"; import { true_default } from "./chunk-HNWPC2PS.js"; -import { - clsx -} from "./chunk-U7P2NEEE.js"; +import "./chunk-2LGM3QYM.js"; +import "./chunk-OHYQYV5R.js"; import { __export, __privateAdd, diff --git a/node_modules/.vite/deps/chunk-EJO6A5J3.js b/node_modules/.vite/deps/chunk-3TACVO2P.js similarity index 90% rename from node_modules/.vite/deps/chunk-EJO6A5J3.js rename to node_modules/.vite/deps/chunk-3TACVO2P.js index 463ccabd..90cc5df4 100644 --- a/node_modules/.vite/deps/chunk-EJO6A5J3.js +++ b/node_modules/.vite/deps/chunk-3TACVO2P.js @@ -1,6 +1,6 @@ import { createSubscriber -} from "./chunk-5K6HJQUS.js"; +} from "./chunk-JC3VXQM7.js"; import { __privateAdd, __privateGet, @@ -32,4 +32,4 @@ _subscribe = new WeakMap(); export { ReactiveValue }; -//# sourceMappingURL=chunk-EJO6A5J3.js.map +//# sourceMappingURL=chunk-3TACVO2P.js.map diff --git a/node_modules/.vite/deps/chunk-EJO6A5J3.js.map b/node_modules/.vite/deps/chunk-3TACVO2P.js.map similarity index 100% rename from node_modules/.vite/deps/chunk-EJO6A5J3.js.map rename to node_modules/.vite/deps/chunk-3TACVO2P.js.map diff --git a/node_modules/.vite/deps/chunk-7NTURTDS.js b/node_modules/.vite/deps/chunk-57IKBECK.js similarity index 99% rename from node_modules/.vite/deps/chunk-7NTURTDS.js rename to node_modules/.vite/deps/chunk-57IKBECK.js index cb0d42d2..efd4ed6d 100644 --- a/node_modules/.vite/deps/chunk-7NTURTDS.js +++ b/node_modules/.vite/deps/chunk-57IKBECK.js @@ -57,10 +57,7 @@ import { set_hydrating, set_signal_status, user_pre_effect -} from "./chunk-5K6HJQUS.js"; -import { - async_mode_flag -} from "./chunk-OHYQYV5R.js"; +} from "./chunk-JC3VXQM7.js"; import { hydration_mismatch, legacy_recursive_reactive_block, @@ -70,6 +67,9 @@ import { import { true_default } from "./chunk-HNWPC2PS.js"; +import { + async_mode_flag +} from "./chunk-OHYQYV5R.js"; import { __privateAdd, __privateGet, @@ -976,6 +976,13 @@ function createBubbler() { } export { + hash, + is_void, + is_capture_event, + can_delegate_event, + normalize_attribute, + is_raw_text_element, + sanitize_location, create_fragment_from_html, assign_nodes, from_html, @@ -987,13 +994,6 @@ export { comment, append, props_id, - hash, - is_void, - is_capture_event, - can_delegate_event, - normalize_attribute, - is_raw_text_element, - sanitize_location, should_intro, set_should_intro, set_text, @@ -1014,4 +1014,4 @@ export { handlers, createBubbler }; -//# sourceMappingURL=chunk-7NTURTDS.js.map +//# sourceMappingURL=chunk-57IKBECK.js.map diff --git a/node_modules/.vite/deps/chunk-57IKBECK.js.map b/node_modules/.vite/deps/chunk-57IKBECK.js.map new file mode 100644 index 00000000..0818132c --- /dev/null +++ b/node_modules/.vite/deps/chunk-57IKBECK.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../svelte/src/internal/client/dom/reconciler.js", "../../svelte/src/internal/client/dom/template.js", "../../svelte/src/utils.js", "../../svelte/src/internal/client/render.js", "../../svelte/src/internal/client/dom/legacy/event-modifiers.js", "../../svelte/src/legacy/legacy-client.js"], + "sourcesContent": ["/** @import {} from 'trusted-types' */\n\nimport { create_element } from './operations.js';\n\nconst policy =\n\t// We gotta write it like this because after downleveling the pure comment may end up in the wrong location\n\tglobalThis?.window?.trustedTypes &&\n\t/* @__PURE__ */ globalThis.window.trustedTypes.createPolicy('svelte-trusted-html', {\n\t\t/** @param {string} html */\n\t\tcreateHTML: (html) => {\n\t\t\treturn html;\n\t\t}\n\t});\n\n/** @param {string} html */\nfunction create_trusted_html(html) {\n\treturn /** @type {string} */ (policy?.createHTML(html) ?? html);\n}\n\n/**\n * @param {string} html\n * @param {boolean} trusted\n */\nexport function create_fragment_from_html(html, trusted = false) {\n\tvar elem = create_element('template');\n\thtml = html.replaceAll('', ''); // XHTML compliance\n\telem.innerHTML = trusted ? create_trusted_html(html) : html;\n\treturn elem.content;\n}\n", "/** @import { Effect, EffectNodes, TemplateNode } from '#client' */\n/** @import { TemplateStructure } from './types' */\nimport { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from './hydration.js';\nimport {\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling,\n\tis_firefox,\n\tcreate_element,\n\tcreate_fragment,\n\tcreate_comment,\n\tset_attribute,\n\tmerge_text_nodes\n} from './operations.js';\nimport { create_fragment_from_html } from './reconciler.js';\nimport { active_effect } from '../runtime.js';\nimport {\n\tNAMESPACE_MATHML,\n\tNAMESPACE_SVG,\n\tTEMPLATE_FRAGMENT,\n\tTEMPLATE_USE_IMPORT_NODE,\n\tTEMPLATE_USE_MATHML,\n\tTEMPLATE_USE_SVG\n} from '../../../constants.js';\nimport {\n\tCOMMENT_NODE,\n\tDOCUMENT_FRAGMENT_NODE,\n\tIS_XHTML,\n\tREACTION_RAN,\n\tTEXT_NODE\n} from '#client/constants';\n\nconst TEMPLATE_TAG = IS_XHTML ? 'template' : 'TEMPLATE';\nconst SCRIPT_TAG = IS_XHTML ? 'script' : 'SCRIPT';\n\n/**\n * @param {TemplateNode} start\n * @param {TemplateNode | null} end\n */\nexport function assign_nodes(start, end) {\n\tvar effect = /** @type {Effect} */ (active_effect);\n\tif (effect.nodes === null) {\n\t\teffect.nodes = { start, end, a: null, t: null };\n\t}\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_html(content, flags) {\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;\n\n\t/** @type {Node} */\n\tvar node;\n\n\t/**\n\t * Whether or not the first item is a text/element node. If not, we need to\n\t * create an additional comment node to act as `effect.nodes.start`\n\t */\n\tvar has_start = !content.startsWith('');\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (node === undefined) {\n\t\t\tnode = create_fragment_from_html(has_start ? content : '' + content, true);\n\t\t\tif (!is_fragment) node = /** @type {TemplateNode} */ (get_first_child(node));\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (\n\t\t\tuse_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)\n\t\t);\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @param {'svg' | 'math'} ns\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction from_namespace(content, flags, ns = 'svg') {\n\t/**\n\t * Whether or not the first item is a text/element node. If not, we need to\n\t * create an additional comment node to act as `effect.nodes.start`\n\t */\n\tvar has_start = !content.startsWith('');\n\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar wrapped = `<${ns}>${has_start ? content : '' + content}`;\n\n\t/** @type {Element | DocumentFragment} */\n\tvar node;\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (!node) {\n\t\t\tvar fragment = /** @type {DocumentFragment} */ (create_fragment_from_html(wrapped, true));\n\t\t\tvar root = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (is_fragment) {\n\t\t\t\tnode = document.createDocumentFragment();\n\t\t\t\twhile (get_first_child(root)) {\n\t\t\t\t\tnode.appendChild(/** @type {TemplateNode} */ (get_first_child(root)));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode = /** @type {Element} */ (get_first_child(root));\n\t\t\t}\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (node.cloneNode(true));\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_svg(content, flags) {\n\treturn from_namespace(content, flags, 'svg');\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_mathml(content, flags) {\n\treturn from_namespace(content, flags, 'math');\n}\n\n/**\n * @param {TemplateStructure[]} structure\n * @param {typeof NAMESPACE_SVG | typeof NAMESPACE_MATHML | undefined} [ns]\n */\nfunction fragment_from_tree(structure, ns) {\n\tvar fragment = create_fragment();\n\n\tfor (var item of structure) {\n\t\tif (typeof item === 'string') {\n\t\t\tfragment.append(create_text(item));\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if `preserveComments === true`, comments are represented as `['// ']`\n\t\tif (item === undefined || item[0][0] === '/') {\n\t\t\tfragment.append(create_comment(item ? item[0].slice(3) : ''));\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst [name, attributes, ...children] = item;\n\n\t\tconst namespace = name === 'svg' ? NAMESPACE_SVG : name === 'math' ? NAMESPACE_MATHML : ns;\n\n\t\tvar element = create_element(name, namespace, attributes?.is);\n\n\t\tfor (var key in attributes) {\n\t\t\tset_attribute(element, key, attributes[key]);\n\t\t}\n\n\t\tif (children.length > 0) {\n\t\t\tvar target =\n\t\t\t\telement.nodeName === TEMPLATE_TAG\n\t\t\t\t\t? /** @type {HTMLTemplateElement} */ (element).content\n\t\t\t\t\t: element;\n\n\t\t\ttarget.append(\n\t\t\t\tfragment_from_tree(children, element.nodeName === 'foreignObject' ? undefined : namespace)\n\t\t\t);\n\t\t}\n\n\t\tfragment.append(element);\n\t}\n\n\treturn fragment;\n}\n\n/**\n * @param {TemplateStructure[]} structure\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function from_tree(structure, flags) {\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;\n\n\t/** @type {Node} */\n\tvar node;\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (node === undefined) {\n\t\t\tconst ns =\n\t\t\t\t(flags & TEMPLATE_USE_SVG) !== 0\n\t\t\t\t\t? NAMESPACE_SVG\n\t\t\t\t\t: (flags & TEMPLATE_USE_MATHML) !== 0\n\t\t\t\t\t\t? NAMESPACE_MATHML\n\t\t\t\t\t\t: undefined;\n\n\t\t\tnode = fragment_from_tree(structure, ns);\n\t\t\tif (!is_fragment) node = /** @type {TemplateNode} */ (get_first_child(node));\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (\n\t\t\tuse_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)\n\t\t);\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {() => Element | DocumentFragment} fn\n */\nexport function with_script(fn) {\n\treturn () => run_scripts(fn());\n}\n\n/**\n * Creating a document fragment from HTML that contains script tags will not execute\n * the scripts. We need to replace the script tags with new ones so that they are executed.\n * @param {Element | DocumentFragment} node\n * @returns {Node | Node[]}\n */\nfunction run_scripts(node) {\n\t// scripts were SSR'd, in which case they will run\n\tif (hydrating) return node;\n\n\tconst is_fragment = node.nodeType === DOCUMENT_FRAGMENT_NODE;\n\tconst scripts =\n\t\t/** @type {HTMLElement} */ (node).nodeName === SCRIPT_TAG\n\t\t\t? [/** @type {HTMLScriptElement} */ (node)]\n\t\t\t: node.querySelectorAll('script');\n\n\tconst effect = /** @type {Effect & { nodes: EffectNodes }} */ (active_effect);\n\n\tfor (const script of scripts) {\n\t\tconst clone = create_element('script');\n\t\tfor (var attribute of script.attributes) {\n\t\t\tclone.setAttribute(attribute.name, attribute.value);\n\t\t}\n\n\t\tclone.textContent = script.textContent;\n\n\t\t// The script has changed - if it's at the edges, the effect now points at dead nodes\n\t\tif (is_fragment ? node.firstChild === script : node === script) {\n\t\t\teffect.nodes.start = clone;\n\t\t}\n\t\tif (is_fragment ? node.lastChild === script : node === script) {\n\t\t\teffect.nodes.end = clone;\n\t\t}\n\n\t\tscript.replaceWith(clone);\n\t}\n\treturn node;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {any} value\n */\nexport function text(value = '') {\n\tif (!hydrating) {\n\t\tvar t = create_text(value + '');\n\t\tassign_nodes(t, t);\n\t\treturn t;\n\t}\n\n\tvar node = hydrate_node;\n\n\tif (node.nodeType !== TEXT_NODE) {\n\t\t// if an {expression} is empty during SSR, we need to insert an empty text node\n\t\tnode.before((node = create_text()));\n\t\tset_hydrate_node(node);\n\t} else {\n\t\tmerge_text_nodes(/** @type {Text} */ (node));\n\t}\n\n\tassign_nodes(node, node);\n\treturn node;\n}\n\n/**\n * @returns {TemplateNode | DocumentFragment}\n */\nexport function comment() {\n\t// we're not delegating to `template` here for performance reasons\n\tif (hydrating) {\n\t\tassign_nodes(hydrate_node, null);\n\t\treturn hydrate_node;\n\t}\n\n\tvar frag = document.createDocumentFragment();\n\tvar start = document.createComment('');\n\tvar anchor = create_text();\n\tfrag.append(start, anchor);\n\n\tassign_nodes(start, anchor);\n\n\treturn frag;\n}\n\n/**\n * Assign the created (or in hydration mode, traversed) dom elements to the current block\n * and insert the elements into the dom (in client mode).\n * @param {Text | Comment | Element} anchor\n * @param {DocumentFragment | Element} dom\n */\nexport function append(anchor, dom) {\n\tif (hydrating) {\n\t\tvar effect = /** @type {Effect & { nodes: EffectNodes }} */ (active_effect);\n\n\t\t// When hydrating and outer component and an inner component is async, i.e. blocked on a promise,\n\t\t// then by the time the inner resolves we have already advanced to the end of the hydrated nodes\n\t\t// of the parent component. Check for defined for that reason to avoid rewinding the parent's end marker.\n\t\tif ((effect.f & REACTION_RAN) === 0 || effect.nodes.end === null) {\n\t\t\teffect.nodes.end = hydrate_node;\n\t\t}\n\n\t\thydrate_next();\n\t\treturn;\n\t}\n\n\tif (anchor === null) {\n\t\t// edge case — void `` with content\n\t\treturn;\n\t}\n\n\tanchor.before(/** @type {Node} */ (dom));\n}\n\n/**\n * Create (or hydrate) an unique UID for the component instance.\n */\nexport function props_id() {\n\tif (\n\t\thydrating &&\n\t\thydrate_node &&\n\t\thydrate_node.nodeType === COMMENT_NODE &&\n\t\thydrate_node.textContent?.startsWith(`$`)\n\t) {\n\t\tconst id = hydrate_node.textContent.substring(1);\n\t\thydrate_next();\n\t\treturn id;\n\t}\n\n\t// @ts-expect-error This way we ensure the id is unique even across Svelte runtimes\n\t(window.__svelte ??= {}).uid ??= 1;\n\n\t// @ts-expect-error\n\treturn `c${window.__svelte.uid++}`;\n}\n", "const regex_return_characters = /\\r/g;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nexport function hash(str) {\n\tstr = str.replace(regex_return_characters, '');\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn (hash >>> 0).toString(36);\n}\n\nconst VOID_ELEMENT_NAMES = [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n];\n\n/**\n * Returns `true` if `name` is of a void element\n * @param {string} name\n */\nexport function is_void(name) {\n\treturn VOID_ELEMENT_NAMES.includes(name) || name.toLowerCase() === '!doctype';\n}\n\nconst RESERVED_WORDS = [\n\t'arguments',\n\t'await',\n\t'break',\n\t'case',\n\t'catch',\n\t'class',\n\t'const',\n\t'continue',\n\t'debugger',\n\t'default',\n\t'delete',\n\t'do',\n\t'else',\n\t'enum',\n\t'eval',\n\t'export',\n\t'extends',\n\t'false',\n\t'finally',\n\t'for',\n\t'function',\n\t'if',\n\t'implements',\n\t'import',\n\t'in',\n\t'instanceof',\n\t'interface',\n\t'let',\n\t'new',\n\t'null',\n\t'package',\n\t'private',\n\t'protected',\n\t'public',\n\t'return',\n\t'static',\n\t'super',\n\t'switch',\n\t'this',\n\t'throw',\n\t'true',\n\t'try',\n\t'typeof',\n\t'var',\n\t'void',\n\t'while',\n\t'with',\n\t'yield'\n];\n\n/**\n * Returns `true` if `word` is a reserved JavaScript keyword\n * @param {string} word\n */\nexport function is_reserved(word) {\n\treturn RESERVED_WORDS.includes(word);\n}\n\n/**\n * @param {string} name\n */\nexport function is_capture_event(name) {\n\treturn name.endsWith('capture') && name !== 'gotpointercapture' && name !== 'lostpointercapture';\n}\n\n/** List of Element events that will be delegated */\nconst DELEGATED_EVENTS = [\n\t'beforeinput',\n\t'click',\n\t'change',\n\t'dblclick',\n\t'contextmenu',\n\t'focusin',\n\t'focusout',\n\t'input',\n\t'keydown',\n\t'keyup',\n\t'mousedown',\n\t'mousemove',\n\t'mouseout',\n\t'mouseover',\n\t'mouseup',\n\t'pointerdown',\n\t'pointermove',\n\t'pointerout',\n\t'pointerover',\n\t'pointerup',\n\t'touchend',\n\t'touchmove',\n\t'touchstart'\n];\n\n/**\n * Returns `true` if `event_name` is a delegated event\n * @param {string} event_name\n */\nexport function can_delegate_event(event_name) {\n\treturn DELEGATED_EVENTS.includes(event_name);\n}\n\n/**\n * Attributes that are boolean, i.e. they are present or not present.\n */\nconst DOM_BOOLEAN_ATTRIBUTES = [\n\t'allowfullscreen',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'disabled',\n\t'formnovalidate',\n\t'indeterminate',\n\t'inert',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'seamless',\n\t'selected',\n\t'webkitdirectory',\n\t'defer',\n\t'disablepictureinpicture',\n\t'disableremoteplayback'\n];\n\n/**\n * Returns `true` if `name` is a boolean attribute\n * @param {string} name\n */\nexport function is_boolean_attribute(name) {\n\treturn DOM_BOOLEAN_ATTRIBUTES.includes(name);\n}\n\n/**\n * @type {Record}\n * List of attribute names that should be aliased to their property names\n * because they behave differently between setting them as an attribute and\n * setting them as a property.\n */\nconst ATTRIBUTE_ALIASES = {\n\t// no `class: 'className'` because we handle that separately\n\tformnovalidate: 'formNoValidate',\n\tismap: 'isMap',\n\tnomodule: 'noModule',\n\tplaysinline: 'playsInline',\n\treadonly: 'readOnly',\n\tdefaultvalue: 'defaultValue',\n\tdefaultchecked: 'defaultChecked',\n\tsrcobject: 'srcObject',\n\tnovalidate: 'noValidate',\n\tallowfullscreen: 'allowFullscreen',\n\tdisablepictureinpicture: 'disablePictureInPicture',\n\tdisableremoteplayback: 'disableRemotePlayback'\n};\n\n/**\n * @param {string} name\n */\nexport function normalize_attribute(name) {\n\tname = name.toLowerCase();\n\treturn ATTRIBUTE_ALIASES[name] ?? name;\n}\n\nconst DOM_PROPERTIES = [\n\t...DOM_BOOLEAN_ATTRIBUTES,\n\t'formNoValidate',\n\t'isMap',\n\t'noModule',\n\t'playsInline',\n\t'readOnly',\n\t'value',\n\t'volume',\n\t'defaultValue',\n\t'defaultChecked',\n\t'srcObject',\n\t'noValidate',\n\t'allowFullscreen',\n\t'disablePictureInPicture',\n\t'disableRemotePlayback'\n];\n\n/**\n * @param {string} name\n */\nexport function is_dom_property(name) {\n\treturn DOM_PROPERTIES.includes(name);\n}\n\nconst NON_STATIC_PROPERTIES = ['autofocus', 'muted', 'defaultValue', 'defaultChecked'];\n\n/**\n * Returns `true` if the given attribute cannot be set through the template\n * string, i.e. needs some kind of JavaScript handling to work.\n * @param {string} name\n */\nexport function cannot_be_set_statically(name) {\n\treturn NON_STATIC_PROPERTIES.includes(name);\n}\n\n/**\n * Subset of delegated events which should be passive by default.\n * These two are already passive via browser defaults on window, document and body.\n * But since\n * - we're delegating them\n * - they happen often\n * - they apply to mobile which is generally less performant\n * we're marking them as passive by default for other elements, too.\n */\nconst PASSIVE_EVENTS = ['touchstart', 'touchmove'];\n\n/**\n * Returns `true` if `name` is a passive event\n * @param {string} name\n */\nexport function is_passive_event(name) {\n\treturn PASSIVE_EVENTS.includes(name);\n}\n\nconst CONTENT_EDITABLE_BINDINGS = ['textContent', 'innerHTML', 'innerText'];\n\n/** @param {string} name */\nexport function is_content_editable_binding(name) {\n\treturn CONTENT_EDITABLE_BINDINGS.includes(name);\n}\n\nconst LOAD_ERROR_ELEMENTS = [\n\t'body',\n\t'embed',\n\t'iframe',\n\t'img',\n\t'link',\n\t'object',\n\t'script',\n\t'style',\n\t'track'\n];\n\n/**\n * Returns `true` if the element emits `load` and `error` events\n * @param {string} name\n */\nexport function is_load_error_element(name) {\n\treturn LOAD_ERROR_ELEMENTS.includes(name);\n}\n\nconst SVG_ELEMENTS = [\n\t'altGlyph',\n\t'altGlyphDef',\n\t'altGlyphItem',\n\t'animate',\n\t'animateColor',\n\t'animateMotion',\n\t'animateTransform',\n\t'circle',\n\t'clipPath',\n\t'color-profile',\n\t'cursor',\n\t'defs',\n\t'desc',\n\t'discard',\n\t'ellipse',\n\t'feBlend',\n\t'feColorMatrix',\n\t'feComponentTransfer',\n\t'feComposite',\n\t'feConvolveMatrix',\n\t'feDiffuseLighting',\n\t'feDisplacementMap',\n\t'feDistantLight',\n\t'feDropShadow',\n\t'feFlood',\n\t'feFuncA',\n\t'feFuncB',\n\t'feFuncG',\n\t'feFuncR',\n\t'feGaussianBlur',\n\t'feImage',\n\t'feMerge',\n\t'feMergeNode',\n\t'feMorphology',\n\t'feOffset',\n\t'fePointLight',\n\t'feSpecularLighting',\n\t'feSpotLight',\n\t'feTile',\n\t'feTurbulence',\n\t'filter',\n\t'font',\n\t'font-face',\n\t'font-face-format',\n\t'font-face-name',\n\t'font-face-src',\n\t'font-face-uri',\n\t'foreignObject',\n\t'g',\n\t'glyph',\n\t'glyphRef',\n\t'hatch',\n\t'hatchpath',\n\t'hkern',\n\t'image',\n\t'line',\n\t'linearGradient',\n\t'marker',\n\t'mask',\n\t'mesh',\n\t'meshgradient',\n\t'meshpatch',\n\t'meshrow',\n\t'metadata',\n\t'missing-glyph',\n\t'mpath',\n\t'path',\n\t'pattern',\n\t'polygon',\n\t'polyline',\n\t'radialGradient',\n\t'rect',\n\t'set',\n\t'solidcolor',\n\t'stop',\n\t'svg',\n\t'switch',\n\t'symbol',\n\t'text',\n\t'textPath',\n\t'tref',\n\t'tspan',\n\t'unknown',\n\t'use',\n\t'view',\n\t'vkern'\n];\n\n/** @param {string} name */\nexport function is_svg(name) {\n\treturn SVG_ELEMENTS.includes(name);\n}\n\nconst MATHML_ELEMENTS = [\n\t'annotation',\n\t'annotation-xml',\n\t'maction',\n\t'math',\n\t'merror',\n\t'mfrac',\n\t'mi',\n\t'mmultiscripts',\n\t'mn',\n\t'mo',\n\t'mover',\n\t'mpadded',\n\t'mphantom',\n\t'mprescripts',\n\t'mroot',\n\t'mrow',\n\t'ms',\n\t'mspace',\n\t'msqrt',\n\t'mstyle',\n\t'msub',\n\t'msubsup',\n\t'msup',\n\t'mtable',\n\t'mtd',\n\t'mtext',\n\t'mtr',\n\t'munder',\n\t'munderover',\n\t'semantics'\n];\n\n/** @param {string} name */\nexport function is_mathml(name) {\n\treturn MATHML_ELEMENTS.includes(name);\n}\n\nconst STATE_CREATION_RUNES = /** @type {const} */ ([\n\t'$state',\n\t'$state.raw',\n\t'$derived',\n\t'$derived.by'\n]);\n\nconst RUNES = /** @type {const} */ ([\n\t...STATE_CREATION_RUNES,\n\t'$state.eager',\n\t'$state.snapshot',\n\t'$props',\n\t'$props.id',\n\t'$bindable',\n\t'$effect',\n\t'$effect.pre',\n\t'$effect.tracking',\n\t'$effect.root',\n\t'$effect.pending',\n\t'$inspect',\n\t'$inspect().with',\n\t'$inspect.trace',\n\t'$host'\n]);\n\n/** @typedef {typeof RUNES[number]} RuneName */\n\n/**\n * @param {string} name\n * @returns {name is RuneName}\n */\nexport function is_rune(name) {\n\treturn RUNES.includes(/** @type {RuneName} */ (name));\n}\n\n/** @typedef {typeof STATE_CREATION_RUNES[number]} StateCreationRuneName */\n\n/**\n * @param {string} name\n * @returns {name is StateCreationRuneName}\n */\nexport function is_state_creation_rune(name) {\n\treturn STATE_CREATION_RUNES.includes(/** @type {StateCreationRuneName} */ (name));\n}\n\n/** List of elements that require raw contents and should not have SSR comments put in them */\nconst RAW_TEXT_ELEMENTS = /** @type {const} */ (['textarea', 'script', 'style', 'title']);\n\n/** @param {string} name */\nexport function is_raw_text_element(name) {\n\treturn RAW_TEXT_ELEMENTS.includes(/** @type {typeof RAW_TEXT_ELEMENTS[number]} */ (name));\n}\n\n/**\n * Prevent devtools trying to make `location` a clickable link by inserting a zero-width space\n * @template {string | undefined} T\n * @param {T} location\n * @returns {T};\n */\nexport function sanitize_location(location) {\n\treturn /** @type {T} */ (location?.replace(/\\//g, '/\\u200b'));\n}\n", "/** @import { ComponentContext, Effect, EffectNodes, TemplateNode } from '#client' */\n/** @import { Component, ComponentType, SvelteComponent, MountOptions } from '../../index.js' */\nimport { DEV } from 'esm-env';\nimport {\n\tclear_text_content,\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling,\n\tinit_operations\n} from './dom/operations.js';\nimport { HYDRATION_END, HYDRATION_ERROR, HYDRATION_START } from '../../constants.js';\nimport { active_effect } from './runtime.js';\nimport { push, pop, component_context } from './context.js';\nimport { component_root } from './reactivity/effects.js';\nimport { hydrate_node, hydrating, set_hydrate_node, set_hydrating } from './dom/hydration.js';\nimport { array_from } from '../shared/utils.js';\nimport {\n\tall_registered_events,\n\thandle_event_propagation,\n\troot_event_handles\n} from './dom/elements/events.js';\nimport * as w from './warnings.js';\nimport * as e from './errors.js';\nimport { assign_nodes } from './dom/template.js';\nimport { is_passive_event } from '../../utils.js';\nimport { COMMENT_NODE, STATE_SYMBOL } from './constants.js';\nimport { boundary } from './dom/blocks/boundary.js';\n\n/**\n * This is normally true — block effects should run their intro transitions —\n * but is false during hydration (unless `options.intro` is `true`) and\n * when creating the children of a `` that just changed tag\n */\nexport let should_intro = true;\n\n/** @param {boolean} value */\nexport function set_should_intro(value) {\n\tshould_intro = value;\n}\n\n/**\n * @param {Element} text\n * @param {string} value\n * @returns {void}\n */\nexport function set_text(text, value) {\n\t// For objects, we apply string coercion (which might make things like $state array references in the template reactive) before diffing\n\tvar str = value == null ? '' : typeof value === 'object' ? value + '' : value;\n\t// @ts-expect-error\n\tif (str !== (text.__t ??= text.nodeValue)) {\n\t\t// @ts-expect-error\n\t\ttext.__t = str;\n\t\ttext.nodeValue = str + '';\n\t}\n}\n\n/**\n * Mounts a component to the given target and returns the exports and potentially the props (if compiled with `accessors: true`) of the component.\n * Transitions will play during the initial render unless the `intro` option is set to `false`.\n *\n * @template {Record} Props\n * @template {Record} Exports\n * @param {ComponentType> | Component} component\n * @param {MountOptions} options\n * @returns {Exports}\n */\nexport function mount(component, options) {\n\treturn _mount(component, options);\n}\n\n/**\n * Hydrates a component on the given target and returns the exports and potentially the props (if compiled with `accessors: true`) of the component\n *\n * @template {Record} Props\n * @template {Record} Exports\n * @param {ComponentType> | Component} component\n * @param {{} extends Props ? {\n * \t\ttarget: Document | Element | ShadowRoot;\n * \t\tprops?: Props;\n * \t\tevents?: Record any>;\n * \tcontext?: Map;\n * \t\tintro?: boolean;\n * \t\trecover?: boolean;\n * \t} : {\n * \t\ttarget: Document | Element | ShadowRoot;\n * \t\tprops: Props;\n * \t\tevents?: Record any>;\n * \tcontext?: Map;\n * \t\tintro?: boolean;\n * \t\trecover?: boolean;\n * \t}} options\n * @returns {Exports}\n */\nexport function hydrate(component, options) {\n\tinit_operations();\n\toptions.intro = options.intro ?? false;\n\tconst target = options.target;\n\tconst was_hydrating = hydrating;\n\tconst previous_hydrate_node = hydrate_node;\n\n\ttry {\n\t\tvar anchor = get_first_child(target);\n\n\t\twhile (\n\t\t\tanchor &&\n\t\t\t(anchor.nodeType !== COMMENT_NODE || /** @type {Comment} */ (anchor).data !== HYDRATION_START)\n\t\t) {\n\t\t\tanchor = get_next_sibling(anchor);\n\t\t}\n\n\t\tif (!anchor) {\n\t\t\tthrow HYDRATION_ERROR;\n\t\t}\n\n\t\tset_hydrating(true);\n\t\tset_hydrate_node(/** @type {Comment} */ (anchor));\n\n\t\tconst instance = _mount(component, { ...options, anchor });\n\n\t\tset_hydrating(false);\n\n\t\treturn /** @type {Exports} */ (instance);\n\t} catch (error) {\n\t\t// re-throw Svelte errors - they are certainly not related to hydration\n\t\tif (\n\t\t\terror instanceof Error &&\n\t\t\terror.message.split('\\n').some((line) => line.startsWith('https://svelte.dev/e/'))\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t\tif (error !== HYDRATION_ERROR) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Failed to hydrate: ', error);\n\t\t}\n\n\t\tif (options.recover === false) {\n\t\t\te.hydration_failed();\n\t\t}\n\n\t\t// If an error occurred above, the operations might not yet have been initialised.\n\t\tinit_operations();\n\t\tclear_text_content(target);\n\n\t\tset_hydrating(false);\n\t\treturn mount(component, options);\n\t} finally {\n\t\tset_hydrating(was_hydrating);\n\t\tset_hydrate_node(previous_hydrate_node);\n\t}\n}\n\n/** @type {Map>} */\nconst listeners = new Map();\n\n/**\n * @template {Record} Exports\n * @param {ComponentType> | Component} Component\n * @param {MountOptions} options\n * @returns {Exports}\n */\nfunction _mount(Component, { target, anchor, props = {}, events, context, intro = true }) {\n\tinit_operations();\n\n\t/** @type {Exports} */\n\t// @ts-expect-error will be defined because the render effect runs synchronously\n\tvar component = undefined;\n\n\tvar unmount = component_root(() => {\n\t\tvar anchor_node = anchor ?? target.appendChild(create_text());\n\n\t\tboundary(\n\t\t\t/** @type {TemplateNode} */ (anchor_node),\n\t\t\t{\n\t\t\t\tpending: () => {}\n\t\t\t},\n\t\t\t(anchor_node) => {\n\t\t\t\tpush({});\n\t\t\t\tvar ctx = /** @type {ComponentContext} */ (component_context);\n\t\t\t\tif (context) ctx.c = context;\n\n\t\t\t\tif (events) {\n\t\t\t\t\t// We can't spread the object or else we'd lose the state proxy stuff, if it is one\n\t\t\t\t\t/** @type {any} */ (props).$$events = events;\n\t\t\t\t}\n\n\t\t\t\tif (hydrating) {\n\t\t\t\t\tassign_nodes(/** @type {TemplateNode} */ (anchor_node), null);\n\t\t\t\t}\n\n\t\t\t\tshould_intro = intro;\n\t\t\t\t// @ts-expect-error the public typings are not what the actual function looks like\n\t\t\t\tcomponent = Component(anchor_node, props) || {};\n\t\t\t\tshould_intro = true;\n\n\t\t\t\tif (hydrating) {\n\t\t\t\t\t/** @type {Effect & { nodes: EffectNodes }} */ (active_effect).nodes.end = hydrate_node;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\thydrate_node === null ||\n\t\t\t\t\t\thydrate_node.nodeType !== COMMENT_NODE ||\n\t\t\t\t\t\t/** @type {Comment} */ (hydrate_node).data !== HYDRATION_END\n\t\t\t\t\t) {\n\t\t\t\t\t\tw.hydration_mismatch();\n\t\t\t\t\t\tthrow HYDRATION_ERROR;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpop();\n\t\t\t}\n\t\t);\n\n\t\t// Setup event delegation _after_ component is mounted - if an error would happen during mount, it would otherwise not be cleaned up\n\t\t/** @type {Set} */\n\t\tvar registered_events = new Set();\n\n\t\t/** @param {Array} events */\n\t\tvar event_handle = (events) => {\n\t\t\tfor (var i = 0; i < events.length; i++) {\n\t\t\t\tvar event_name = events[i];\n\n\t\t\t\tif (registered_events.has(event_name)) continue;\n\t\t\t\tregistered_events.add(event_name);\n\n\t\t\t\tvar passive = is_passive_event(event_name);\n\n\t\t\t\t// Add the event listener to both the container and the document.\n\t\t\t\t// The container listener ensures we catch events from within in case\n\t\t\t\t// the outer content stops propagation of the event.\n\t\t\t\t//\n\t\t\t\t// The document listener ensures we catch events that originate from elements that were\n\t\t\t\t// manually moved outside of the container (e.g. via manual portals).\n\t\t\t\tfor (const node of [target, document]) {\n\t\t\t\t\tvar counts = listeners.get(node);\n\n\t\t\t\t\tif (counts === undefined) {\n\t\t\t\t\t\tcounts = new Map();\n\t\t\t\t\t\tlisteners.set(node, counts);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar count = counts.get(event_name);\n\n\t\t\t\t\tif (count === undefined) {\n\t\t\t\t\t\tnode.addEventListener(event_name, handle_event_propagation, { passive });\n\t\t\t\t\t\tcounts.set(event_name, 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcounts.set(event_name, count + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tevent_handle(array_from(all_registered_events));\n\t\troot_event_handles.add(event_handle);\n\n\t\treturn () => {\n\t\t\tfor (var event_name of registered_events) {\n\t\t\t\tfor (const node of [target, document]) {\n\t\t\t\t\tvar counts = /** @type {Map} */ (listeners.get(node));\n\t\t\t\t\tvar count = /** @type {number} */ (counts.get(event_name));\n\n\t\t\t\t\tif (--count == 0) {\n\t\t\t\t\t\tnode.removeEventListener(event_name, handle_event_propagation);\n\t\t\t\t\t\tcounts.delete(event_name);\n\n\t\t\t\t\t\tif (counts.size === 0) {\n\t\t\t\t\t\t\tlisteners.delete(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcounts.set(event_name, count);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\troot_event_handles.delete(event_handle);\n\n\t\t\tif (anchor_node !== anchor) {\n\t\t\t\tanchor_node.parentNode?.removeChild(anchor_node);\n\t\t\t}\n\t\t};\n\t});\n\n\tmounted_components.set(component, unmount);\n\treturn component;\n}\n\n/**\n * References of the components that were mounted or hydrated.\n * Uses a `WeakMap` to avoid memory leaks.\n */\nlet mounted_components = new WeakMap();\n\n/**\n * Unmounts a component that was previously mounted using `mount` or `hydrate`.\n *\n * Since 5.13.0, if `options.outro` is `true`, [transitions](https://svelte.dev/docs/svelte/transition) will play before the component is removed from the DOM.\n *\n * Returns a `Promise` that resolves after transitions have completed if `options.outro` is true, or immediately otherwise (prior to 5.13.0, returns `void`).\n *\n * ```js\n * import { mount, unmount } from 'svelte';\n * import App from './App.svelte';\n *\n * const app = mount(App, { target: document.body });\n *\n * // later...\n * unmount(app, { outro: true });\n * ```\n * @param {Record} component\n * @param {{ outro?: boolean }} [options]\n * @returns {Promise}\n */\nexport function unmount(component, options) {\n\tconst fn = mounted_components.get(component);\n\n\tif (fn) {\n\t\tmounted_components.delete(component);\n\t\treturn fn(options);\n\t}\n\n\tif (DEV) {\n\t\tif (STATE_SYMBOL in component) {\n\t\t\tw.state_proxy_unmount();\n\t\t} else {\n\t\t\tw.lifecycle_double_unmount();\n\t\t}\n\t}\n\n\treturn Promise.resolve();\n}\n", "import { noop } from '../../../shared/utils.js';\nimport { user_pre_effect } from '../../reactivity/effects.js';\nimport { on } from '../elements/events.js';\n\n/**\n * Substitute for the `trusted` event modifier\n * @deprecated\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function trusted(fn) {\n\treturn function (...args) {\n\t\tvar event = /** @type {Event} */ (args[0]);\n\t\tif (event.isTrusted) {\n\t\t\t// @ts-ignore\n\t\t\tfn?.apply(this, args);\n\t\t}\n\t};\n}\n\n/**\n * Substitute for the `self` event modifier\n * @deprecated\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function self(fn) {\n\treturn function (...args) {\n\t\tvar event = /** @type {Event} */ (args[0]);\n\t\t// @ts-ignore\n\t\tif (event.target === this) {\n\t\t\t// @ts-ignore\n\t\t\tfn?.apply(this, args);\n\t\t}\n\t};\n}\n\n/**\n * Substitute for the `stopPropagation` event modifier\n * @deprecated\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function stopPropagation(fn) {\n\treturn function (...args) {\n\t\tvar event = /** @type {Event} */ (args[0]);\n\t\tevent.stopPropagation();\n\t\t// @ts-ignore\n\t\treturn fn?.apply(this, args);\n\t};\n}\n\n/**\n * Substitute for the `once` event modifier\n * @deprecated\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function once(fn) {\n\tvar ran = false;\n\n\treturn function (...args) {\n\t\tif (ran) return;\n\t\tran = true;\n\n\t\t// @ts-ignore\n\t\treturn fn?.apply(this, args);\n\t};\n}\n\n/**\n * Substitute for the `stopImmediatePropagation` event modifier\n * @deprecated\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function stopImmediatePropagation(fn) {\n\treturn function (...args) {\n\t\tvar event = /** @type {Event} */ (args[0]);\n\t\tevent.stopImmediatePropagation();\n\t\t// @ts-ignore\n\t\treturn fn?.apply(this, args);\n\t};\n}\n\n/**\n * Substitute for the `preventDefault` event modifier\n * @deprecated\n * @param {(event: Event, ...args: Array) => void} fn\n * @returns {(event: Event, ...args: unknown[]) => void}\n */\nexport function preventDefault(fn) {\n\treturn function (...args) {\n\t\tvar event = /** @type {Event} */ (args[0]);\n\t\tevent.preventDefault();\n\t\t// @ts-ignore\n\t\treturn fn?.apply(this, args);\n\t};\n}\n\n/**\n * Substitute for the `passive` event modifier, implemented as an action\n * @deprecated\n * @param {HTMLElement} node\n * @param {[event: string, handler: () => EventListener]} options\n */\nexport function passive(node, [event, handler]) {\n\tuser_pre_effect(() => {\n\t\treturn on(node, event, handler() ?? noop, {\n\t\t\tpassive: true\n\t\t});\n\t});\n}\n\n/**\n * Substitute for the `nonpassive` event modifier, implemented as an action\n * @deprecated\n * @param {HTMLElement} node\n * @param {[event: string, handler: () => EventListener]} options\n */\nexport function nonpassive(node, [event, handler]) {\n\tuser_pre_effect(() => {\n\t\treturn on(node, event, handler() ?? noop, {\n\t\t\tpassive: false\n\t\t});\n\t});\n}\n", "/** @import { ComponentConstructorOptions, ComponentType, SvelteComponent, Component } from 'svelte' */\nimport { DIRTY, LEGACY_PROPS, MAYBE_DIRTY } from '../internal/client/constants.js';\nimport { user_pre_effect } from '../internal/client/reactivity/effects.js';\nimport { mutable_source, set } from '../internal/client/reactivity/sources.js';\nimport { hydrate, mount, unmount } from '../internal/client/render.js';\nimport { active_effect, get } from '../internal/client/runtime.js';\nimport { flushSync } from '../internal/client/reactivity/batch.js';\nimport { define_property, is_array } from '../internal/shared/utils.js';\nimport * as e from '../internal/client/errors.js';\nimport * as w from '../internal/client/warnings.js';\nimport { DEV } from 'esm-env';\nimport { FILENAME } from '../constants.js';\nimport { component_context, dev_current_component_function } from '../internal/client/context.js';\nimport { async_mode_flag } from '../internal/flags/index.js';\nimport { set_signal_status } from '../internal/client/reactivity/status.js';\n\n/**\n * Takes the same options as a Svelte 4 component and the component function and returns a Svelte 4 compatible component.\n *\n * @deprecated Use this only as a temporary solution to migrate your imperative component code to Svelte 5.\n *\n * @template {Record} Props\n * @template {Record} Exports\n * @template {Record} Events\n * @template {Record} Slots\n *\n * @param {ComponentConstructorOptions & {\n * \tcomponent: ComponentType> | Component;\n * }} options\n * @returns {SvelteComponent & Exports}\n */\nexport function createClassComponent(options) {\n\t// @ts-expect-error $$prop_def etc are not actually defined\n\treturn new Svelte4Component(options);\n}\n\n/**\n * Takes the component function and returns a Svelte 4 compatible component constructor.\n *\n * @deprecated Use this only as a temporary solution to migrate your imperative component code to Svelte 5.\n *\n * @template {Record} Props\n * @template {Record} Exports\n * @template {Record} Events\n * @template {Record} Slots\n *\n * @param {SvelteComponent | Component} component\n * @returns {ComponentType & Exports>}\n */\nexport function asClassComponent(component) {\n\t// @ts-expect-error $$prop_def etc are not actually defined\n\treturn class extends Svelte4Component {\n\t\t/** @param {any} options */\n\t\tconstructor(options) {\n\t\t\tsuper({\n\t\t\t\tcomponent,\n\t\t\t\t...options\n\t\t\t});\n\t\t}\n\t};\n}\n\n/**\n * Support using the component as both a class and function during the transition period\n * @typedef {{new (o: ComponentConstructorOptions): SvelteComponent;(...args: Parameters>>): ReturnType, Record>>;}} LegacyComponentType\n */\n\nclass Svelte4Component {\n\t/** @type {any} */\n\t#events;\n\n\t/** @type {Record} */\n\t#instance;\n\n\t/**\n\t * @param {ComponentConstructorOptions & {\n\t * component: any;\n\t * }} options\n\t */\n\tconstructor(options) {\n\t\tvar sources = new Map();\n\n\t\t/**\n\t\t * @param {string | symbol} key\n\t\t * @param {unknown} value\n\t\t */\n\t\tvar add_source = (key, value) => {\n\t\t\tvar s = mutable_source(value, false, false);\n\t\t\tsources.set(key, s);\n\t\t\treturn s;\n\t\t};\n\n\t\t// Replicate coarse-grained props through a proxy that has a version source for\n\t\t// each property, which is incremented on updates to the property itself. Do not\n\t\t// use our $state proxy because that one has fine-grained reactivity.\n\t\tconst props = new Proxy(\n\t\t\t{ ...(options.props || {}), $$events: {} },\n\t\t\t{\n\t\t\t\tget(target, prop) {\n\t\t\t\t\treturn get(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop)));\n\t\t\t\t},\n\t\t\t\thas(target, prop) {\n\t\t\t\t\t// Necessary to not throw \"invalid binding\" validation errors on the component side\n\t\t\t\t\tif (prop === LEGACY_PROPS) return true;\n\n\t\t\t\t\tget(sources.get(prop) ?? add_source(prop, Reflect.get(target, prop)));\n\t\t\t\t\treturn Reflect.has(target, prop);\n\t\t\t\t},\n\t\t\t\tset(target, prop, value) {\n\t\t\t\t\tset(sources.get(prop) ?? add_source(prop, value), value);\n\t\t\t\t\treturn Reflect.set(target, prop, value);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.#instance = (options.hydrate ? hydrate : mount)(options.component, {\n\t\t\ttarget: options.target,\n\t\t\tanchor: options.anchor,\n\t\t\tprops,\n\t\t\tcontext: options.context,\n\t\t\tintro: options.intro ?? false,\n\t\t\trecover: options.recover\n\t\t});\n\n\t\t// We don't flushSync for custom element wrappers or if the user doesn't want it,\n\t\t// or if we're in async mode since `flushSync()` will fail\n\t\tif (!async_mode_flag && (!options?.props?.$$host || options.sync === false)) {\n\t\t\tflushSync();\n\t\t}\n\n\t\tthis.#events = props.$$events;\n\n\t\tfor (const key of Object.keys(this.#instance)) {\n\t\t\tif (key === '$set' || key === '$destroy' || key === '$on') continue;\n\t\t\tdefine_property(this, key, {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.#instance[key];\n\t\t\t\t},\n\t\t\t\t/** @param {any} value */\n\t\t\t\tset(value) {\n\t\t\t\t\tthis.#instance[key] = value;\n\t\t\t\t},\n\t\t\t\tenumerable: true\n\t\t\t});\n\t\t}\n\n\t\tthis.#instance.$set = /** @param {Record} next */ (next) => {\n\t\t\tObject.assign(props, next);\n\t\t};\n\n\t\tthis.#instance.$destroy = () => {\n\t\t\tunmount(this.#instance);\n\t\t};\n\t}\n\n\t/** @param {Record} props */\n\t$set(props) {\n\t\tthis.#instance.$set(props);\n\t}\n\n\t/**\n\t * @param {string} event\n\t * @param {(...args: any[]) => any} callback\n\t * @returns {any}\n\t */\n\t$on(event, callback) {\n\t\tthis.#events[event] = this.#events[event] || [];\n\n\t\t/** @param {any[]} args */\n\t\tconst cb = (...args) => callback.call(this, ...args);\n\t\tthis.#events[event].push(cb);\n\t\treturn () => {\n\t\t\tthis.#events[event] = this.#events[event].filter(/** @param {any} fn */ (fn) => fn !== cb);\n\t\t};\n\t}\n\n\t$destroy() {\n\t\tthis.#instance.$destroy();\n\t}\n}\n\n/**\n * Runs the given function once immediately on the server, and works like `$effect.pre` on the client.\n *\n * @deprecated Use this only as a temporary solution to migrate your component code to Svelte 5.\n * @param {() => void | (() => void)} fn\n * @returns {void}\n */\nexport function run(fn) {\n\tuser_pre_effect(() => {\n\t\tfn();\n\t\tvar effect = /** @type {import('#client').Effect} */ (active_effect);\n\t\t// If the effect is immediately made dirty again, mark it as maybe dirty to emulate legacy behaviour\n\t\tif ((effect.f & DIRTY) !== 0) {\n\t\t\tlet filename = \"a file (we can't know which one)\";\n\t\t\tif (DEV) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tfilename = dev_current_component_function?.[FILENAME] ?? filename;\n\t\t\t}\n\t\t\tw.legacy_recursive_reactive_block(filename);\n\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t}\n\t});\n}\n\n/**\n * Function to mimic the multiple listeners available in svelte 4\n * @deprecated\n * @param {EventListener[]} handlers\n * @returns {EventListener}\n */\nexport function handlers(...handlers) {\n\treturn function (event) {\n\t\tconst { stopImmediatePropagation } = event;\n\t\tlet stopped = false;\n\n\t\tevent.stopImmediatePropagation = () => {\n\t\t\tstopped = true;\n\t\t\tstopImmediatePropagation.call(event);\n\t\t};\n\n\t\tconst errors = [];\n\n\t\tfor (const handler of handlers) {\n\t\t\ttry {\n\t\t\t\t// @ts-expect-error `this` is not typed\n\t\t\t\thandler?.call(this, event);\n\t\t\t} catch (e) {\n\t\t\t\terrors.push(e);\n\t\t\t}\n\n\t\t\tif (stopped) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (let error of errors) {\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tthrow error;\n\t\t\t});\n\t\t}\n\t};\n}\n\n/**\n * Function to create a `bubble` function that mimic the behavior of `on:click` without handler available in svelte 4.\n * @deprecated Use this only as a temporary solution to migrate your automatically delegated events in Svelte 5.\n */\nexport function createBubbler() {\n\tconst active_component_context = component_context;\n\tif (active_component_context === null) {\n\t\te.lifecycle_outside_component('createBubbler');\n\t}\n\n\treturn (/**@type {string}*/ type) => (/**@type {Event}*/ event) => {\n\t\tconst events = /** @type {Record} */ (\n\t\t\tactive_component_context.s.$$events\n\t\t)?.[/** @type {any} */ (type)];\n\n\t\tif (events) {\n\t\t\tconst callbacks = is_array(events) ? events.slice() : [events];\n\t\t\tfor (const fn of callbacks) {\n\t\t\t\tfn.call(active_component_context.x, event);\n\t\t\t}\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\t\treturn true;\n\t};\n}\n\nexport {\n\tonce,\n\tpreventDefault,\n\tself,\n\tstopImmediatePropagation,\n\tstopPropagation,\n\ttrusted,\n\tpassive,\n\tnonpassive\n} from '../internal/client/dom/legacy/event-modifiers.js';\n"], + "mappings": "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", + "names": ["trusted", "_a", "hash", "text", "unmount", "anchor_node", "events", "passive", "_a", "_a", "handlers", "stopImmediatePropagation"] +} diff --git a/node_modules/.vite/deps/chunk-JWZP2TNC.js b/node_modules/.vite/deps/chunk-6EUZYYI5.js similarity index 97% rename from node_modules/.vite/deps/chunk-JWZP2TNC.js rename to node_modules/.vite/deps/chunk-6EUZYYI5.js index 27c3accf..8215f439 100644 --- a/node_modules/.vite/deps/chunk-JWZP2TNC.js +++ b/node_modules/.vite/deps/chunk-6EUZYYI5.js @@ -11,12 +11,12 @@ import { rest_props, snippet, validate_dynamic_element_tag -} from "./chunk-WTI4ZYPF.js"; +} from "./chunk-EXK7SDUS.js"; import { append, comment, from_svg -} from "./chunk-7NTURTDS.js"; +} from "./chunk-57IKBECK.js"; import { FILENAME, HMR, @@ -31,7 +31,7 @@ import { sibling, to_array, user_derived -} from "./chunk-5K6HJQUS.js"; +} from "./chunk-JC3VXQM7.js"; // node_modules/@lucide/svelte/dist/defaultAttributes.js var defaultAttributes = { @@ -185,4 +185,4 @@ export { * *) */ -//# sourceMappingURL=chunk-JWZP2TNC.js.map +//# sourceMappingURL=chunk-6EUZYYI5.js.map diff --git a/node_modules/.vite/deps/chunk-JWZP2TNC.js.map b/node_modules/.vite/deps/chunk-6EUZYYI5.js.map similarity index 100% rename from node_modules/.vite/deps/chunk-JWZP2TNC.js.map rename to node_modules/.vite/deps/chunk-6EUZYYI5.js.map diff --git a/node_modules/.vite/deps/chunk-WTI4ZYPF.js b/node_modules/.vite/deps/chunk-EXK7SDUS.js similarity index 99% rename from node_modules/.vite/deps/chunk-WTI4ZYPF.js rename to node_modules/.vite/deps/chunk-EXK7SDUS.js index 619c2d2d..8e2a3013 100644 --- a/node_modules/.vite/deps/chunk-WTI4ZYPF.js +++ b/node_modules/.vite/deps/chunk-EXK7SDUS.js @@ -1,3 +1,6 @@ +import { + clsx +} from "./chunk-U7P2NEEE.js"; import { append, assign_nodes, @@ -12,7 +15,7 @@ import { sanitize_location, set_should_intro, should_intro -} from "./chunk-7NTURTDS.js"; +} from "./chunk-57IKBECK.js"; import { ATTACHMENT_KEY, BLOCK_EFFECT, @@ -159,11 +162,7 @@ import { user_pre_effect, validate_effect, without_reactive_context -} from "./chunk-5K6HJQUS.js"; -import { - async_mode_flag, - legacy_mode_flag -} from "./chunk-OHYQYV5R.js"; +} from "./chunk-JC3VXQM7.js"; import { assignment_value_stale, binding_property_non_reactive, @@ -181,8 +180,9 @@ import { true_default } from "./chunk-HNWPC2PS.js"; import { - clsx -} from "./chunk-U7P2NEEE.js"; + async_mode_flag, + legacy_mode_flag +} from "./chunk-OHYQYV5R.js"; import { __privateAdd, __privateGet, @@ -191,30 +191,6 @@ import { __publicField } from "./chunk-X4VJQ2O3.js"; -// node_modules/svelte/src/attachments/index.js -function createAttachmentKey() { - return Symbol(ATTACHMENT_KEY); -} -function fromAction(action2, fn = ( - /** @type {() => T} */ - noop -)) { - return (element2) => { - const { update: update2, destroy } = untrack(() => action2(element2, fn()) ?? {}); - if (update2) { - var ran = false; - render_effect(() => { - const arg = fn(); - if (ran) update2(arg); - }); - ran = true; - } - if (destroy) { - teardown(destroy); - } - }; -} - // node_modules/svelte/src/internal/client/dev/assign.js function compare(a, b, property, location) { if (a !== b && typeof b === "object" && STATE_SYMBOL in b) { @@ -3462,6 +3438,144 @@ function update_legacy_props($$new_props) { } } +// node_modules/svelte/src/internal/client/hydratable.js +function hydratable(key2, fn) { + var _a; + if (!async_mode_flag) { + experimental_async_required("hydratable"); + } + if (hydrating) { + const store = (_a = window.__svelte) == null ? void 0 : _a.h; + if (store == null ? void 0 : store.has(key2)) { + return ( + /** @type {T} */ + store.get(key2) + ); + } + if (true_default) { + hydratable_missing_but_required(key2); + } else { + hydratable_missing_but_expected(key2); + } + } + return fn(); +} + +// node_modules/svelte/src/index-client.js +if (true_default) { + let throw_rune_error = function(rune) { + if (!(rune in globalThis)) { + let value; + Object.defineProperty(globalThis, rune, { + configurable: true, + // eslint-disable-next-line getter-return + get: () => { + if (value !== void 0) { + return value; + } + rune_outside_svelte(rune); + }, + set: (v) => { + value = v; + } + }); + } + }; + throw_rune_error("$state"); + throw_rune_error("$effect"); + throw_rune_error("$derived"); + throw_rune_error("$inspect"); + throw_rune_error("$props"); + throw_rune_error("$bindable"); +} +function getAbortSignal() { + var _a; + if (active_reaction === null) { + get_abort_signal_outside_reaction(); + } + return ((_a = active_reaction).ac ?? (_a.ac = new AbortController())).signal; +} +function onMount(fn) { + if (component_context === null) { + lifecycle_outside_component("onMount"); + } + if (legacy_mode_flag && component_context.l !== null) { + init_update_callbacks(component_context).m.push(fn); + } else { + user_effect(() => { + const cleanup = untrack(fn); + if (typeof cleanup === "function") return ( + /** @type {() => void} */ + cleanup + ); + }); + } +} +function onDestroy(fn) { + if (component_context === null) { + lifecycle_outside_component("onDestroy"); + } + onMount(() => () => untrack(fn)); +} +function create_custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { + return new CustomEvent(type, { detail, bubbles, cancelable }); +} +function createEventDispatcher() { + const active_component_context = component_context; + if (active_component_context === null) { + lifecycle_outside_component("createEventDispatcher"); + } + return (type, detail, options) => { + var _a; + const events = ( + /** @type {Record} */ + (_a = active_component_context.s.$$events) == null ? void 0 : _a[ + /** @type {string} */ + type + ] + ); + if (events) { + const callbacks = is_array(events) ? events.slice() : [events]; + const event2 = create_custom_event( + /** @type {string} */ + type, + detail, + options + ); + for (const fn of callbacks) { + fn.call(active_component_context.x, event2); + } + return !event2.defaultPrevented; + } + return true; + }; +} +function beforeUpdate(fn) { + if (component_context === null) { + lifecycle_outside_component("beforeUpdate"); + } + if (component_context.l === null) { + lifecycle_legacy_only("beforeUpdate"); + } + init_update_callbacks(component_context).b.push(fn); +} +function afterUpdate(fn) { + if (component_context === null) { + lifecycle_outside_component("afterUpdate"); + } + if (component_context.l === null) { + lifecycle_legacy_only("afterUpdate"); + } + init_update_callbacks(component_context).a.push(fn); +} +function init_update_callbacks(context) { + var l = ( + /** @type {ComponentContextLegacy} */ + context.l + ); + return l.u ?? (l.u = { a: [], b: [], m: [] }); +} + // node_modules/svelte/src/store/utils.js function subscribe_to_store(store, run3, invalidate) { if (store == null) { @@ -4310,159 +4424,31 @@ function log_if_contains_state(method, ...objects) { return objects; } -// node_modules/svelte/src/internal/client/hydratable.js -function hydratable(key2, fn) { - var _a; - if (!async_mode_flag) { - experimental_async_required("hydratable"); - } - if (hydrating) { - const store = (_a = window.__svelte) == null ? void 0 : _a.h; - if (store == null ? void 0 : store.has(key2)) { - return ( - /** @type {T} */ - store.get(key2) - ); - } - if (true_default) { - hydratable_missing_but_required(key2); - } else { - hydratable_missing_but_expected(key2); - } - } - return fn(); +// node_modules/svelte/src/attachments/index.js +function createAttachmentKey() { + return Symbol(ATTACHMENT_KEY); } - -// node_modules/svelte/src/index-client.js -if (true_default) { - let throw_rune_error = function(rune) { - if (!(rune in globalThis)) { - let value; - Object.defineProperty(globalThis, rune, { - configurable: true, - // eslint-disable-next-line getter-return - get: () => { - if (value !== void 0) { - return value; - } - rune_outside_svelte(rune); - }, - set: (v) => { - value = v; - } +function fromAction(action2, fn = ( + /** @type {() => T} */ + noop +)) { + return (element2) => { + const { update: update2, destroy } = untrack(() => action2(element2, fn()) ?? {}); + if (update2) { + var ran = false; + render_effect(() => { + const arg = fn(); + if (ran) update2(arg); }); + ran = true; + } + if (destroy) { + teardown(destroy); } }; - throw_rune_error("$state"); - throw_rune_error("$effect"); - throw_rune_error("$derived"); - throw_rune_error("$inspect"); - throw_rune_error("$props"); - throw_rune_error("$bindable"); -} -function getAbortSignal() { - var _a; - if (active_reaction === null) { - get_abort_signal_outside_reaction(); - } - return ((_a = active_reaction).ac ?? (_a.ac = new AbortController())).signal; -} -function onMount(fn) { - if (component_context === null) { - lifecycle_outside_component("onMount"); - } - if (legacy_mode_flag && component_context.l !== null) { - init_update_callbacks(component_context).m.push(fn); - } else { - user_effect(() => { - const cleanup = untrack(fn); - if (typeof cleanup === "function") return ( - /** @type {() => void} */ - cleanup - ); - }); - } -} -function onDestroy(fn) { - if (component_context === null) { - lifecycle_outside_component("onDestroy"); - } - onMount(() => () => untrack(fn)); -} -function create_custom_event(type, detail, { bubbles = false, cancelable = false } = {}) { - return new CustomEvent(type, { detail, bubbles, cancelable }); -} -function createEventDispatcher() { - const active_component_context = component_context; - if (active_component_context === null) { - lifecycle_outside_component("createEventDispatcher"); - } - return (type, detail, options) => { - var _a; - const events = ( - /** @type {Record} */ - (_a = active_component_context.s.$$events) == null ? void 0 : _a[ - /** @type {string} */ - type - ] - ); - if (events) { - const callbacks = is_array(events) ? events.slice() : [events]; - const event2 = create_custom_event( - /** @type {string} */ - type, - detail, - options - ); - for (const fn of callbacks) { - fn.call(active_component_context.x, event2); - } - return !event2.defaultPrevented; - } - return true; - }; -} -function beforeUpdate(fn) { - if (component_context === null) { - lifecycle_outside_component("beforeUpdate"); - } - if (component_context.l === null) { - lifecycle_legacy_only("beforeUpdate"); - } - init_update_callbacks(component_context).b.push(fn); -} -function afterUpdate(fn) { - if (component_context === null) { - lifecycle_outside_component("afterUpdate"); - } - if (component_context.l === null) { - lifecycle_legacy_only("afterUpdate"); - } - init_update_callbacks(component_context).a.push(fn); -} -function init_update_callbacks(context) { - var l = ( - /** @type {ComponentContextLegacy} */ - context.l - ); - return l.u ?? (l.u = { a: [], b: [], m: [] }); } export { - hydratable, - validate_void_dynamic_element, - validate_dynamic_element_tag, - validate_store, - prevent_snippet_stringification, - snippet, - wrap_snippet, - createRawSnippet, - getAbortSignal, - onMount, - onDestroy, - createEventDispatcher, - beforeUpdate, - afterUpdate, createAttachmentKey, fromAction, assign, @@ -4487,6 +4473,13 @@ export { html, slot, sanitize_slots, + validate_void_dynamic_element, + validate_dynamic_element_tag, + validate_store, + prevent_snippet_stringification, + snippet, + wrap_snippet, + createRawSnippet, component, raf, loop, @@ -4571,6 +4564,13 @@ export { prop, validate_binding, create_custom_element, - log_if_contains_state + log_if_contains_state, + hydratable, + getAbortSignal, + onMount, + onDestroy, + createEventDispatcher, + beforeUpdate, + afterUpdate }; -//# sourceMappingURL=chunk-WTI4ZYPF.js.map +//# sourceMappingURL=chunk-EXK7SDUS.js.map diff --git a/node_modules/.vite/deps/chunk-EXK7SDUS.js.map b/node_modules/.vite/deps/chunk-EXK7SDUS.js.map new file mode 100644 index 00000000..fec064f0 --- /dev/null +++ b/node_modules/.vite/deps/chunk-EXK7SDUS.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../svelte/src/internal/client/dev/assign.js", "../../svelte/src/internal/client/dev/css.js", "../../svelte/src/internal/client/dev/elements.js", "../../svelte/src/internal/client/dev/hmr.js", "../../svelte/src/internal/client/dev/ownership.js", "../../svelte/src/internal/client/dev/legacy.js", "../../svelte/src/internal/client/dev/inspect.js", "../../svelte/src/internal/client/dom/blocks/async.js", "../../svelte/src/internal/client/dev/validation.js", "../../svelte/src/internal/client/dom/blocks/branches.js", "../../svelte/src/internal/client/dom/blocks/await.js", "../../svelte/src/internal/client/dom/blocks/if.js", "../../svelte/src/internal/client/dom/blocks/key.js", "../../svelte/src/internal/client/dom/blocks/css-props.js", "../../svelte/src/internal/client/dom/blocks/each.js", "../../svelte/src/internal/client/dom/blocks/html.js", "../../svelte/src/internal/client/dom/blocks/slot.js", "../../svelte/src/internal/shared/validate.js", "../../svelte/src/internal/client/dom/blocks/snippet.js", "../../svelte/src/internal/client/dom/blocks/svelte-component.js", "../../svelte/src/internal/client/timing.js", "../../svelte/src/internal/client/loop.js", "../../svelte/src/internal/client/dom/elements/transitions.js", "../../svelte/src/internal/client/dom/blocks/svelte-element.js", "../../svelte/src/internal/client/dom/blocks/svelte-head.js", "../../svelte/src/internal/client/dom/css.js", "../../svelte/src/internal/client/dom/elements/actions.js", "../../svelte/src/internal/client/dom/elements/attachments.js", "../../svelte/src/escaping.js", "../../svelte/src/internal/shared/attributes.js", "../../svelte/src/internal/client/dom/elements/class.js", "../../svelte/src/internal/client/dom/elements/style.js", "../../svelte/src/internal/client/dom/elements/bindings/select.js", "../../svelte/src/internal/client/dom/elements/attributes.js", "../../svelte/src/internal/client/dom/elements/customizable-select.js", "../../svelte/src/internal/client/dom/elements/bindings/document.js", "../../svelte/src/internal/client/dom/elements/bindings/input.js", "../../svelte/src/internal/client/dom/elements/bindings/media.js", "../../svelte/src/internal/client/dom/elements/bindings/navigator.js", "../../svelte/src/internal/client/dom/elements/bindings/props.js", "../../svelte/src/internal/client/dom/elements/bindings/size.js", "../../svelte/src/internal/client/dom/elements/bindings/this.js", "../../svelte/src/internal/client/dom/elements/bindings/universal.js", "../../svelte/src/internal/client/dom/elements/bindings/window.js", "../../svelte/src/internal/client/dom/legacy/lifecycle.js", "../../svelte/src/internal/client/dom/legacy/misc.js", "../../svelte/src/internal/client/hydratable.js", "../../svelte/src/index-client.js", "../../svelte/src/store/utils.js", "../../svelte/src/store/shared/index.js", "../../svelte/src/internal/client/reactivity/store.js", "../../svelte/src/internal/client/reactivity/props.js", "../../svelte/src/internal/client/validate.js", "../../svelte/src/internal/client/dom/elements/custom-element.js", "../../svelte/src/internal/client/dev/console-log.js", "../../svelte/src/attachments/index.js"], + "sourcesContent": ["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 {any} value\n * @param {string} location\n */\nexport function assign(object, property, value, location) {\n\treturn compare(\n\t\t(object[property] = value),\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 {any} value\n * @param {string} location\n */\nexport function assign_and(object, property, value, location) {\n\treturn compare(\n\t\t(object[property] &&= value),\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 {any} value\n * @param {string} location\n */\nexport function assign_or(object, property, value, location) {\n\treturn compare(\n\t\t(object[property] ||= value),\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 {any} value\n * @param {string} location\n */\nexport function assign_nullish(object, property, value, location) {\n\treturn compare(\n\t\t(object[property] ??= value),\n\t\tuntrack(() => object[property]),\n\t\tproperty,\n\t\tlocation\n\t);\n}\n", "/** @type {Map>} */\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, HYDRATION_START_ELSE } 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 === HYDRATION_START || comment.data === HYDRATION_START_ELSE) 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';\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\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\tObject.defineProperties(\n\t\t\t\t\tinstance,\n\t\t\t\t\tObject.getOwnPropertyDescriptors(\n\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\tnew.target ? new component(anchor, props) : component(anchor, props)\n\t\t\t\t\t)\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\tanchor = hydrate_node;\n\t\t}\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} 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} 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 } from '../../reactivity/async.js';\nimport { Batch, current_batch } from '../../reactivity/batch.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';\nimport { get_boundary } from './boundary.js';\n\n/**\n * @param {TemplateNode} node\n * @param {Blocker[]} blockers\n * @param {Array<() => Promise>} 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\tvar boundary = get_boundary();\n\tvar batch = /** @type {Batch} */ (current_batch);\n\tvar blocking = boundary.is_rendered();\n\n\tboundary.update_pending_count(1);\n\tbatch.increment(blocking);\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\tboundary.update_pending_count(-1);\n\t\t\tbatch.decrement(blocking);\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} */\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}\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}\n\t */\n\t#offscreen = new Map();\n\n\t/**\n\t * Keys of effects that are currently outroing\n\t * @type {Set}\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 ``\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#commit = () => {\n\t\tvar batch = /** @type {Batch} */ (current_batch);\n\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();\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, 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) => 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 input = get_input();\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();\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(THEN, 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} from '../hydration.js';\nimport { block } from '../../reactivity/effects.js';\nimport { BranchManager } from './branches.js';\nimport { HYDRATION_START, HYDRATION_START_ELSE } from '../../../../constants.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\tif (hydrating) {\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\tconst data = read_hydration_instruction(node);\n\n\t\t\t/**\n\t\t\t * @type {number | false}\n\t\t\t * \"[\" = branch 0, \"[1\" = branch 1, \"[2\" = branch 2, ..., \"[!\" = else (false)\n\t\t\t */\n\t\t\tvar hydrated_key;\n\n\t\t\tif (data === HYDRATION_START) {\n\t\t\t\thydrated_key = 0;\n\t\t\t} else if (data === HYDRATION_START_ELSE) {\n\t\t\t\thydrated_key = false;\n\t\t\t} else {\n\t\t\t\thydrated_key = parseInt(data.substring(1)); // \"[1\", \"[2\", etc.\n\t\t\t}\n\n\t\t\tif (key !== hydrated_key) {\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(false, 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} 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\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, 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} */ (state.outrogroups);\n\n\t\t\t\t\t\tdestroy_effects(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(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 {Effect[]} to_destroy\n * @param {boolean} remove_dom\n */\nfunction destroy_effects(to_destroy, remove_dom = true) {\n\t// TODO only destroy effects if no pending batch needs them. otherwise,\n\t// just re-add the `EFFECT_OFFSCREEN` flag\n\tfor (var i = 0; i < to_destroy.length; i++) {\n\t\tdestroy_effect(to_destroy[i], remove_dom);\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, index: MaybeSource) => 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} */\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\tvar first_run = true;\n\n\tfunction commit() {\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\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\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\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(() => {\n\t\t\t\t\t// TODO presumably we need to do something here?\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcommit();\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, 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} 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} */\n\tvar seen;\n\n\t/** @type {Effect | null} */\n\tvar prev = null;\n\n\t/** @type {undefined | Set} */\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 & 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.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 !== 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(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} items\n * @param {Node} anchor\n * @param {V} value\n * @param {unknown} key\n * @param {number} index\n * @param {(anchor: Node, item: V | Source, index: number | Value, 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} 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' */\nimport { FILENAME, HYDRATION_ERROR } 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';\nimport { create_fragment_from_html } from '../reconciler.js';\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 { 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} 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} get_value\n * @param {boolean} [svg]\n * @param {boolean} [mathml]\n * @param {boolean} [skip_warning]\n * @returns {void}\n */\nexport function html(node, get_value, svg = false, mathml = false, skip_warning = false) {\n\tvar anchor = node;\n\n\tvar value = '';\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 (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\tvar html = value + '';\n\t\tif (svg) html = `${html}`;\n\t\telse if (mathml) html = `${html}`;\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/** @type {DocumentFragment | Element} */\n\t\tvar node = create_fragment_from_html(html);\n\n\t\tif (svg || mathml) {\n\t\t\tnode = /** @type {Element} */ (get_first_child(node));\n\t\t}\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} $$props\n * @param {string} name\n * @param {Record} 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} props\n * @returns {Record}\n */\nexport function sanitize_slots(props) {\n\t/** @type {Record} */\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) => {\n * render: () => string\n * setup?: (element: Element) => void | (() => void)\n * }} fn\n * @returns {Snippet}\n */\nexport function createRawSnippet(fn) {\n\t// @ts-expect-error the types are a lie\n\treturn (/** @type {TemplateNode} */ anchor, /** @type {Getters} */ ...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, true);\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 { hydrate_next, hydrating } from '../hydration.js';\nimport { BranchManager } from './branches.js';\n\n/**\n * @template P\n * @template {(props: P) => void} C\n * @param {TemplateNode} node\n * @param {() => C} get_component\n * @param {(anchor: TemplateNode, component: C) => Dom | void} render_fn\n * @returns {void}\n */\nexport function component(node, get_component, render_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar branches = new BranchManager(node);\n\n\tblock(() => {\n\t\tvar component = get_component() ?? null;\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

} 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 ``, 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

} 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, 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\tblock(() => render_fn(anchor), HEAD_EFFECT);\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

} 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';\n\n/**\n * `

` should be rendered as `
` and _not_\n * `
`, which is equivalent to `
`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record>}\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 = (name in replacements && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? `=\"\"` : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n\nconst whitespace = [...' \\t\\n\\r\\f\\u00a0\\u000b\\ufeff'];\n\n/**\n * @param {any} value\n * @param {string | null} [hash]\n * @param {Record} [directives]\n * @returns {string | null}\n */\nexport function to_class(value, hash, directives) {\n\tvar classname = value == null ? '' : '' + value;\n\n\tif (hash) {\n\t\tclassname = classname ? classname + ' ' + hash : hash;\n\t}\n\n\tif (directives) {\n\t\tfor (var key in directives) {\n\t\t\tif (directives[key]) {\n\t\t\t\tclassname = classname ? classname + ' ' + key : key;\n\t\t\t} else if (classname.length) {\n\t\t\t\tvar len = key.length;\n\t\t\t\tvar a = 0;\n\n\t\t\t\twhile ((a = classname.indexOf(key, a)) >= 0) {\n\t\t\t\t\tvar b = a + len;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(a === 0 || whitespace.includes(classname[a - 1])) &&\n\t\t\t\t\t\t(b === classname.length || whitespace.includes(classname[b]))\n\t\t\t\t\t) {\n\t\t\t\t\t\tclassname = (a === 0 ? '' : classname.substring(0, a)) + classname.substring(b + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ta = b;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn classname === '' ? null : classname;\n}\n\n/**\n *\n * @param {Record} styles\n * @param {boolean} important\n */\nfunction append_styles(styles, important = false) {\n\tvar separator = important ? ' !important;' : ';';\n\tvar css = '';\n\n\tfor (var key in styles) {\n\t\tvar value = styles[key];\n\t\tif (value != null && value !== '') {\n\t\t\tcss += ' ' + key + ': ' + value + separator;\n\t\t}\n\t}\n\n\treturn css;\n}\n\n/**\n * @param {string} name\n * @returns {string}\n */\nfunction to_css_name(name) {\n\tif (name[0] !== '-' || name[1] !== '-') {\n\t\treturn name.toLowerCase();\n\t}\n\treturn name;\n}\n\n/**\n * @param {any} value\n * @param {Record | [Record, Record]} [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 | undefined} */\n\t\tvar normal_styles;\n\n\t\t/** @type {Record | 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} [prev_classes]\n * @param {Record} [next_classes]\n * @returns {Record | 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} prev\n * @param {Record} 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 | [Record, Record]} [prev_styles]\n * @param {Record | [Record, Record]} [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';\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 \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\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// we need both, because in non-async mode, render effects run before previous_batch is set\n\t\t\tvar batch = /** @type {Batch} */ (previous_batch ?? current_batch);\n\n\t\t\t// Don't update the ...\n\t\t\t//

{await find(selected)}

\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