diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..5ae41d99 Binary files /dev/null and b/.DS_Store differ diff --git a/.svelte-kit/adapter-node/_app 2/immutable/assets/_layout.xzg7NZgL.css b/.svelte-kit/adapter-node/_app 2/immutable/assets/_layout.xzg7NZgL.css new file mode 100644 index 00000000..7b3a3704 --- /dev/null +++ b/.svelte-kit/adapter-node/_app 2/immutable/assets/_layout.xzg7NZgL.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--tracking-widest:.1em;--radius-xs:.125rem;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.start-2{inset-inline-start:calc(var(--spacing)*2)}.end-2{inset-inline-end:calc(var(--spacing)*2)}.end-4{inset-inline-end:calc(var(--spacing)*4)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.ms-auto{margin-inline-start:auto}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-14{width:calc(var(--spacing)*14);height:calc(var(--spacing)*14)}.size-20{width:calc(var(--spacing)*20);height:calc(var(--spacing)*20)}.h-\(--bits-select-anchor-height\){height:var(--bits-select-anchor-height)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-24{height:calc(var(--spacing)*24)}.h-px{height:1px}.max-h-\(--bits-dropdown-menu-content-available-height\){max-height:var(--bits-dropdown-menu-content-available-height)}.max-h-\(--bits-select-content-available-height\){max-height:var(--bits-select-content-available-height)}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.w-16{width:calc(var(--spacing)*16)}.w-\[70px\]{width:70px}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[200px\]{max-width:200px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--bits-select-anchor-width\){min-width:var(--bits-select-anchor-width)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[8rem\]{min-width:8rem}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--bits-dropdown-menu-content-transform-origin\){transform-origin:var(--bits-dropdown-menu-content-transform-origin)}.origin-\(--bits-select-content-transform-origin\){transform-origin:var(--bits-select-content-transform-origin)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.resize{resize:both}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>: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 00000000..92bb79fc Binary files /dev/null and b/build/client/registerSW.js.br differ diff --git a/build/client/registerSW.js.gz b/build/client/registerSW.js.gz new file mode 100644 index 00000000..de8724fd Binary files /dev/null and b/build/client/registerSW.js.gz differ diff --git a/node_modules/.DS_Store b/node_modules/.DS_Store new file mode 100644 index 00000000..8350b32f Binary files /dev/null and b/node_modules/.DS_Store differ 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