From 03d70777b6078b06798545f472094a25113830d3 Mon Sep 17 00:00:00 2001 From: BCsabaEngine Date: Wed, 28 Jan 2026 17:26:53 +0100 Subject: [PATCH 1/7] feat: allow state whit object that has method --- src/state.svelte.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/state.svelte.ts b/src/state.svelte.ts index 8d5aaeb..5ea9281 100644 --- a/src/state.svelte.ts +++ b/src/state.svelte.ts @@ -47,7 +47,7 @@ const deepClone = (object: T): T => { if (object === null || typeof object !== 'object') return object; if (object instanceof Date) return new Date(object) as T; if (Array.isArray(object)) return object.map((item) => deepClone(item)) as T; - const cloned = {} as T; + const cloned = Object.create(Object.getPrototypeOf(object)) as T; for (const key of Object.keys(object)) cloned[key as keyof T] = deepClone(object[key as keyof T]); return cloned; }; From 81606125003a83312ea0fbc579a11b8bdc90c78b Mon Sep 17 00:00:00 2001 From: BCsabaEngine Date: Wed, 28 Jan 2026 17:26:59 +0100 Subject: [PATCH 2/7] feat: test --- test/state.test.svelte.ts | 168 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/test/state.test.svelte.ts b/test/state.test.svelte.ts index f5fbb59..d7c869c 100644 --- a/test/state.test.svelte.ts +++ b/test/state.test.svelte.ts @@ -2,6 +2,53 @@ import { get } from 'svelte/store'; import { createSvState, type Validator } from '../src/index'; +// Test classes for class instance support tests +class TestClass { + name: string; + count: number; + + constructor(name = 'test', count = 0) { + this.name = name; + this.count = count; + } + + increment(): void { + this.count++; + } + + formatName(): string { + return `Name: ${this.name}`; + } + + getInfo(): string { + return `${this.name} (${this.count})`; + } +} + +class NestedClass { + value: string; + + constructor(value = 'nested') { + this.value = value; + } + + getValue(): string { + return this.value; + } +} + +class ParentClass { + nested: NestedClass; + + constructor() { + this.nested = new NestedClass('initial'); + } + + getNestedValue(): string { + return this.nested.getValue(); + } +} + describe('createSvState basic functionality', () => { it('should create state with initial data', () => { const { data } = createSvState({ name: 'test', count: 5 }); @@ -985,6 +1032,127 @@ describe('edge case coverage for defensive guards', () => { }); }); +describe('class instance support', () => { + it('should preserve class prototype when cloning', () => { + const { state } = createSvState(new TestClass('original', 5), { + effect: ({ snapshot }) => { + snapshot('Changed', false); + } + }); + + const snaps = get(state.snapshots); + expect(snaps[0].data).toBeInstanceOf(TestClass); + }); + + it('should call methods through proxy', () => { + const { data } = createSvState(new TestClass('test', 0)); + + expect(data.formatName()).toBe('Name: test'); + expect(data.getInfo()).toBe('test (0)'); + }); + + it('should preserve methods after rollback', () => { + const { data, rollback } = createSvState(new TestClass('initial', 0), { + effect: ({ snapshot }) => { + snapshot('Changed'); + } + }); + + data.name = 'changed'; + rollback(); + + expect(data.name).toBe('initial'); + expect(typeof data.formatName).toBe('function'); + expect(data.formatName()).toBe('Name: initial'); + }); + + it('should preserve methods after reset', () => { + const { data, reset } = createSvState(new TestClass('initial', 5), { + effect: ({ snapshot }) => { + snapshot('Changed', false); + } + }); + + data.name = 'modified'; + data.count = 100; + reset(); + + expect(data.name).toBe('initial'); + expect(data.count).toBe(5); + expect(typeof data.formatName).toBe('function'); + expect(data.formatName()).toBe('Name: initial'); + expect(data.getInfo()).toBe('initial (5)'); + }); + + it('should handle nested class instances', () => { + const { data, state } = createSvState(new ParentClass(), { + effect: ({ snapshot }) => { + snapshot('Changed', false); + } + }); + + expect(data.getNestedValue()).toBe('initial'); + + data.nested.value = 'updated'; + + const snaps = get(state.snapshots); + expect(snaps[0].data).toBeInstanceOf(ParentClass); + expect(snaps[0].data.getNestedValue()).toBe('initial'); + expect(data.getNestedValue()).toBe('updated'); + }); + + it('should trigger change callback when method mutates state', () => { + let changeCount = 0; + let lastProperty = ''; + + const { data } = createSvState(new TestClass('test', 0), { + effect: ({ property }) => { + changeCount++; + lastProperty = property; + } + }); + + data.increment(); + + expect(changeCount).toBe(1); + expect(lastProperty).toBe('count'); + expect(data.count).toBe(1); + }); + + it('should clone class instances correctly in snapshots', () => { + const { data, state } = createSvState(new TestClass('original', 10), { + effect: ({ snapshot }) => { + snapshot('Changed', false); + } + }); + + data.name = 'modified'; + + const snaps = get(state.snapshots); + expect(snaps).toHaveLength(2); + expect(snaps[0].data.name).toBe('original'); + expect(snaps[0].data.count).toBe(10); + expect(snaps[1].data.name).toBe('modified'); + + // Verify snapshots are independent + expect(snaps[0].data).not.toBe(snaps[1].data); + expect(snaps[0].data.formatName()).toBe('Name: original'); + expect(snaps[1].data.formatName()).toBe('Name: modified'); + }); + + it('should preserve methods after successful action', async () => { + const { data, execute } = createSvState(new TestClass('initial', 0), { + action: async () => {} + }); + + data.name = 'after-action'; + await execute(); + + expect(typeof data.formatName).toBe('function'); + expect(data.formatName()).toBe('Name: after-action'); + }); +}); + describe('deeply nested validators', () => { it('should detect errors in deeply nested validator structure', () => { type DeepValidator = Validator; From 86d13711cdfe080278db40168dbdd9fd29da6bc9 Mon Sep 17 00:00:00 2001 From: BCsabaEngine Date: Wed, 28 Jan 2026 17:27:04 +0100 Subject: [PATCH 3/7] feat: demo --- demo/src/App.svelte | 5 + demo/src/pages/CalculatedClass.svelte | 206 ++++++++++++++++++++++++++ 2 files changed, 211 insertions(+) create mode 100644 demo/src/pages/CalculatedClass.svelte diff --git a/demo/src/App.svelte b/demo/src/App.svelte index 3bfd6c4..12be800 100644 --- a/demo/src/App.svelte +++ b/demo/src/App.svelte @@ -4,6 +4,7 @@ import ActionDemo from './pages/ActionDemo.svelte'; import ArrayProperty from './pages/ArrayProperty.svelte'; import BasicValidation from './pages/BasicValidation.svelte'; + import CalculatedClass from './pages/CalculatedClass.svelte'; import CalculatedFields from './pages/CalculatedFields.svelte'; import NestedObjects from './pages/NestedObjects.svelte'; import OptionsDemo from './pages/OptionsDemo.svelte'; @@ -15,6 +16,7 @@ | 'nested-objects' | 'array-property' | 'calculated-fields' + | 'calculated-class' | 'reset-demo' | 'snapshot-demo' | 'action-demo' @@ -25,6 +27,7 @@ { value: 'nested-objects', name: 'Nested Objects' }, { value: 'array-property', name: 'Array Property' }, { value: 'calculated-fields', name: 'Calculated Fields' }, + { value: 'calculated-class', name: 'State with Methods' }, { value: 'reset-demo', name: 'Reset' }, { value: 'snapshot-demo', name: 'Snapshot & Rollback' }, { value: 'action-demo', name: 'Action & Error' }, @@ -126,6 +129,8 @@ {:else if selectedMode === 'calculated-fields'} + {:else if selectedMode === 'calculated-class'} + {:else if selectedMode === 'reset-demo'} {:else if selectedMode === 'snapshot-demo'} diff --git a/demo/src/pages/CalculatedClass.svelte b/demo/src/pages/CalculatedClass.svelte new file mode 100644 index 0000000..92dc52e --- /dev/null +++ b/demo/src/pages/CalculatedClass.svelte @@ -0,0 +1,206 @@ + + + + + + {#snippet main()} + + +
+ + +
+ +
+ + +
+
+ +
+ +
+
+
+ Subtotal: + {data.formatCurrency(data.subtotal)} +
+
+ Tax (8%): + {data.formatCurrency(data.tax)} +
+
+ Total: + {data.formatTotal()} +
+
+
+

+ Values formatted using methods on state: data.formatCurrency() + and + data.formatTotal() +

+
+
+ {/snippet} + + {#snippet sidebar()} + + {/snippet} + + {#snippet sourceCode()} + + + + + + {/snippet} +
From 037f740198668e12559802360e00aee89821623a Mon Sep 17 00:00:00 2001 From: BCsabaEngine Date: Wed, 28 Jan 2026 17:27:18 +0100 Subject: [PATCH 4/7] feat: demo --- docs/assets/index-BHfQWPjJ.css | 1 - docs/assets/index-BRq3jy6u.js | 274 +++++++++++++++++++++++++++++++++ docs/assets/index-Bq4AALX0.css | 1 + docs/assets/index-N5oYkhDF.js | 229 --------------------------- docs/index.html | 4 +- 5 files changed, 277 insertions(+), 232 deletions(-) delete mode 100644 docs/assets/index-BHfQWPjJ.css create mode 100644 docs/assets/index-BRq3jy6u.js create mode 100644 docs/assets/index-Bq4AALX0.css delete mode 100644 docs/assets/index-N5oYkhDF.js diff --git a/docs/assets/index-BHfQWPjJ.css b/docs/assets/index-BHfQWPjJ.css deleted file mode 100644 index b5a92c6..0000000 --- a/docs/assets/index-BHfQWPjJ.css +++ /dev/null @@ -1 +0,0 @@ -@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking: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}}}@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-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-800:oklch(43.8% .218 303.724);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--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-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--radius-md:.375rem;--radius-lg:.5rem;--animate-spin:spin 1s linear infinite;--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}}@layer components;@layer utilities{.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-20{height:calc(var(--spacing)*20)}.max-h-48{max-height:calc(var(--spacing)*48)}.min-h-screen{min-height:100vh}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-20{width:calc(var(--spacing)*20)}.w-full{width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.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)}: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-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*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-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-200{border-color:var(--color-blue-200)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-purple-200{border-color:var(--color-purple-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-500{border-color:var(--color-red-500)}.bg-amber-600{background-color:var(--color-amber-600)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-600{background-color:var(--color-green-600)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-200{background-color:var(--color-purple-200)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.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-3{padding-block:calc(var(--spacing)*3)}.pt-2{padding-top:calc(var(--spacing)*2)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.text-center{text-align:center}.text-left{text-align:left}.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))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-gray-100{color:var(--color-gray-100)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-800{color:var(--color-green-800)}.text-purple-800{color:var(--color-purple-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-white{color:var(--color-white)}.text-yellow-800{color:var(--color-yellow-800)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.placeholder-red-400::placeholder{color:var(--color-red-400)}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow-inner{--tw-shadow:inset 0 2px 4px 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)}.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)}.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-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-white:hover{color:var(--color-white)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.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-amber-500:focus{--tw-ring-color:var(--color-amber-500)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-green-500:focus{--tw-ring-color:var(--color-green-500)}.focus\:ring-orange-500:focus{--tw-ring-color:var(--color-orange-500)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:mb-8{margin-bottom:calc(var(--spacing)*8)}.sm\:inline-flex{display:inline-flex}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-32{height:calc(var(--spacing)*32)}.sm\:w-5{width:calc(var(--spacing)*5)}.sm\:w-32{width:calc(var(--spacing)*32)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:text-left{text-align:left}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media(min-width:48rem){.md\:p-8{padding:calc(var(--spacing)*8)}}@media(min-width:64rem){.lg\:w-64{width:calc(var(--spacing)*64)}.lg\:flex-shrink-0{flex-shrink:0}.lg\:flex-row{flex-direction:row}.lg\:gap-6{gap:calc(var(--spacing)*6)}}@media(min-width:80rem){.xl\:w-80{width:calc(var(--spacing)*80)}.xl\:w-96{width:calc(var(--spacing)*96)}.xl\:flex-row{flex-direction:row}.xl\:gap-6{gap:calc(var(--spacing)*6)}}}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/docs/assets/index-BRq3jy6u.js b/docs/assets/index-BRq3jy6u.js new file mode 100644 index 0000000..3c622d5 --- /dev/null +++ b/docs/assets/index-BRq3jy6u.js @@ -0,0 +1,274 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(a){if(a.ep)return;a.ep=!0;const i=r(a);fetch(a.href,i)}})();const yr=!1;var Nr=Array.isArray,Ka=Array.prototype.indexOf,vr=Array.from,ta=Object.defineProperty,It=Object.getOwnPropertyDescriptor,Ja=Object.getOwnPropertyDescriptors,Ga=Object.prototype,Xa=Array.prototype,ra=Object.getPrototypeOf,Ur=Object.isExtensible;const vt=()=>{};function aa(e){for(var t=0;t{e=n,t=a});return{promise:r,resolve:e,reject:t}}const be=2,lr=4,mr=8,ia=1<<24,et=16,gt=32,kt=64,kr=128,Oe=512,xe=1024,Ee=2048,tt=4096,Pe=8192,Ge=16384,sa=32768,St=65536,Wr=1<<17,oa=1<<18,jt=1<<19,Za=1<<20,Je=1<<25,Dt=32768,xr=1<<21,Ar=1<<22,mt=1<<23,Ot=Symbol("$state"),Qa=Symbol("legacy props"),en=Symbol(""),Tt=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"};function tn(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function rn(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function an(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function nn(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function sn(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function on(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function ln(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const un=1,cn=2,la=4,dn=8,fn=16,vn=1,mn=4,pn=8,hn=16,gn=1,_n=2,ge=Symbol(),bn="http://www.w3.org/1999/xhtml";function yn(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function xn(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function ua(e){return e===this.v}function ca(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function da(e){return!ca(e,this.v)}let wn=!1,We=null;function Vt(e){We=e}function Ve(e,t=!1,r){We={p:We,i:!1,c:null,e:null,s:e,x:null,l:null}}function Re(e){var t=We,r=t.e;if(r!==null){t.e=null;for(var n of r)Bn(n)}return t.i=!0,We=t.p,{}}function fa(){return!0}let bt=[];function va(){var e=bt;bt=[],aa(e)}function xt(e){if(bt.length===0&&!Ht){var t=bt;queueMicrotask(()=>{t===bt&&va()})}bt.push(e)}function En(){for(;bt.length>0;)va()}function ma(e){var t=ue;if(t===null)return W.f|=mt,e;if((t.f&sa)===0){if((t.f&kr)===0)throw e;t.b.error(e)}else Rt(e,t)}function Rt(e,t){for(;t!==null;){if((t.f&kr)!==0)try{t.b.error(e);return}catch(r){e=r}t=t.parent}throw e}const $n=-7169;function pe(e,t){e.f=e.f&$n|t}function qr(e){(e.f&Oe)!==0||e.deps===null?pe(e,xe):pe(e,tt)}function pa(e){if(e!==null)for(const t of e)(t.f&be)===0||(t.f&Dt)===0||(t.f^=Dt,pa(t.deps))}function ha(e,t,r){(e.f&Ee)!==0?t.add(e):(e.f&tt)!==0&&r.add(e),pa(e.deps),pe(e,xe)}const ar=new Set;let X=null,ur=null,Be=null,qe=[],pr=null,wr=!1,Ht=!1;class pt{committed=!1;current=new Map;previous=new Map;#t=new Set;#s=new Set;#e=0;#n=0;#i=null;#a=new Set;#r=new Set;skipped_effects=new Set;is_fork=!1;#o=!1;is_deferred(){return this.is_fork||this.#n>0}process(t){qe=[],this.apply();var r=[],n=[];for(const a of t)this.#l(a,r,n);if(this.is_deferred())this.#u(n),this.#u(r);else{for(const a of this.#t)a();this.#t.clear(),this.#e===0&&this.#c(),ur=this,X=null,Hr(n),Hr(r),ur=null,this.#i?.resolve()}Be=null}#l(t,r,n){t.f^=xe;for(var a=t.first,i=null;a!==null;){var o=a.f,l=(o&(gt|kt))!==0,s=l&&(o&xe)!==0,u=s||(o&Pe)!==0||this.skipped_effects.has(a);if(!u&&a.fn!==null){l?a.f^=xe:i!==null&&(o&(lr|mr|ia))!==0?i.b.defer_effect(a):(o&lr)!==0?r.push(a):tr(a)&&((o&et)!==0&&this.#a.add(a),Gt(a));var c=a.first;if(c!==null){a=c;continue}}var m=a.parent;for(a=a.next;a===null&&m!==null;)m===i&&(i=null),a=m.next,m=m.parent}}#u(t){for(var r=0;r0){if(ga(),X!==null&&X!==this)return}else this.#e===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#s)t(this);this.#s.clear()}#c(){if(ar.size>1){this.previous.clear();var t=Be,r=!0;for(const a of ar){if(a===this){r=!1;continue}const i=[];for(const[l,s]of this.current){if(a.current.has(l))if(r&&s!==a.current.get(l))a.current.set(l,s);else continue;i.push(l)}if(i.length===0)continue;const o=[...a.current.keys()].filter(l=>!this.current.has(l));if(o.length>0){var n=qe;qe=[];const l=new Set,s=new Map;for(const u of i)_a(u,o,l,s);if(qe.length>0){X=a,a.apply();for(const u of qe)a.#l(u,[],[]);a.deactivate()}qe=n}}X=null,Be=t}this.committed=!0,ar.delete(this)}increment(t){this.#e+=1,t&&(this.#n+=1)}decrement(t){this.#e-=1,t&&(this.#n-=1),!this.#o&&(this.#o=!0,xt(()=>{this.#o=!1,this.is_deferred()?qe.length>0&&this.flush():this.revive()}))}revive(){for(const t of this.#a)this.#r.delete(t),pe(t,Ee),Qe(t);for(const t of this.#r)pe(t,tt),Qe(t);this.flush()}oncommit(t){this.#t.add(t)}ondiscard(t){this.#s.add(t)}settled(){return(this.#i??=na()).promise}static ensure(){if(X===null){const t=X=new pt;ar.add(X),Ht||xt(()=>{X===t&&t.flush()})}return X}apply(){}}function Sn(e){var t=Ht;Ht=!0;try{for(var r;;){if(En(),qe.length===0&&(X?.flush(),qe.length===0))return pr=null,r;ga()}}finally{Ht=t}}function ga(){wr=!0;var e=null;try{for(var t=0;qe.length>0;){var r=pt.ensure();if(t++>1e3){var n,a;Dn()}r.process(qe),ht.clear()}}finally{wr=!1,pr=null}}function Dn(){try{rn()}catch(e){Rt(e,pr)}}let Ke=null;function Hr(e){var t=e.length;if(t!==0){for(var r=0;r0)){ht.clear();for(const a of Ke){if((a.f&(Ge|Pe))!==0)continue;const i=[a];let o=a.parent;for(;o!==null;)Ke.has(o)&&(Ke.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const s=i[l];(s.f&(Ge|Pe))===0&&Gt(s)}}Ke.clear()}}Ke=null}}function _a(e,t,r,n){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const a of e.reactions){const i=a.f;(i&be)!==0?_a(a,t,r,n):(i&(Ar|et))!==0&&(i&Ee)===0&&ba(a,t,n)&&(pe(a,Ee),Qe(a))}}function ba(e,t,r){const n=r.get(e);if(n!==void 0)return n;if(e.deps!==null)for(const a of e.deps){if(t.includes(a))return!0;if((a.f&be)!==0&&ba(a,t,r))return r.set(a,!0),!0}return r.set(e,!1),!1}function Qe(e){for(var t=pr=e;t.parent!==null;){t=t.parent;var r=t.f;if(wr&&t===ue&&(r&et)!==0&&(r&oa)===0)return;if((r&(kt|gt))!==0){if((r&xe)===0)return;t.f^=xe}}qe.push(t)}function Cn(e){let t=0,r=Ct(0),n;return()=>{Ir()&&(p(r),Mr(()=>(t===0&&(n=rr(()=>e(()=>Yt(r)))),t+=1,()=>{xt(()=>{t-=1,t===0&&(n?.(),n=void 0,Yt(r))})})))}}var Nn=St|jt|kr;function kn(e,t,r){new An(e,t,r)}class An{parent;is_pending=!1;#t;#s=null;#e;#n;#i;#a=null;#r=null;#o=null;#l=null;#u=null;#c=0;#f=0;#m=!1;#v=!1;#p=new Set;#h=new Set;#d=null;#x=Cn(()=>(this.#d=Ct(this.#c),()=>{this.#d=null}));constructor(t,r,n){this.#t=t,this.#e=r,this.#n=n,this.parent=ue.b,this.is_pending=!!this.#e.pending,this.#i=er(()=>{ue.b=this;{var a=this.#b();try{this.#a=Ie(()=>n(a))}catch(i){this.error(i)}this.#f>0?this.#_():this.is_pending=!1}return()=>{this.#u?.remove()}},Nn)}#w(){try{this.#a=Ie(()=>this.#n(this.#t))}catch(t){this.error(t)}}#E(){const t=this.#e.pending;t&&(this.#r=Ie(()=>t(this.#t)),xt(()=>{var r=this.#b();this.#a=this.#g(()=>(pt.ensure(),Ie(()=>this.#n(r)))),this.#f>0?this.#_():(wt(this.#r,()=>{this.#r=null}),this.is_pending=!1)}))}#b(){var t=this.#t;return this.is_pending&&(this.#u=Xe(),this.#t.before(this.#u),t=this.#u),t}defer_effect(t){ha(t,this.#p,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#e.pending}#g(t){var r=ue,n=W,a=We;Ye(this.#i),Ce(this.#i),Vt(this.#i.ctx);try{return t()}catch(i){return ma(i),null}finally{Ye(r),Ce(n),Vt(a)}}#_(){const t=this.#e.pending;this.#a!==null&&(this.#l=document.createDocumentFragment(),this.#l.append(this.#u),Ia(this.#a,this.#l)),this.#r===null&&(this.#r=Ie(()=>t(this.#t)))}#y(t){if(!this.has_pending_snippet()){this.parent&&this.parent.#y(t);return}if(this.#f+=t,this.#f===0){this.is_pending=!1;for(const r of this.#p)pe(r,Ee),Qe(r);for(const r of this.#h)pe(r,tt),Qe(r);this.#p.clear(),this.#h.clear(),this.#r&&wt(this.#r,()=>{this.#r=null}),this.#l&&(this.#t.before(this.#l),this.#l=null)}}update_pending_count(t){this.#y(t),this.#c+=t,!(!this.#d||this.#m)&&(this.#m=!0,xt(()=>{this.#m=!1,this.#d&&Ft(this.#d,this.#c)}))}get_effect_pending(){return this.#x(),p(this.#d)}error(t){var r=this.#e.onerror;let n=this.#e.failed;if(this.#v||!r&&!n)throw t;this.#a&&(Ne(this.#a),this.#a=null),this.#r&&(Ne(this.#r),this.#r=null),this.#o&&(Ne(this.#o),this.#o=null);var a=!1,i=!1;const o=()=>{if(a){xn();return}a=!0,i&&ln(),pt.ensure(),this.#c=0,this.#o!==null&&wt(this.#o,()=>{this.#o=null}),this.is_pending=this.has_pending_snippet(),this.#a=this.#g(()=>(this.#v=!1,Ie(()=>this.#n(this.#t)))),this.#f>0?this.#_():this.is_pending=!1};var l=W;try{Ce(null),i=!0,r?.(t,o),i=!1}catch(s){Rt(s,this.#i&&this.#i.parent)}finally{Ce(l)}n&&xt(()=>{this.#o=this.#g(()=>{pt.ensure(),this.#v=!0;try{return Ie(()=>{n(this.#t,()=>t,()=>o)})}catch(s){return Rt(s,this.#i.parent),null}finally{this.#v=!1}})})}}function qn(e,t,r,n){const a=hr;var i=e.filter(v=>!v.settled);if(r.length===0&&i.length===0){n(t.map(a));return}var o=X,l=ue,s=Pn(),u=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(v=>v.promise)):null;function c(v){s();try{n(v)}catch(h){(l.f&Ge)===0&&Rt(h,l)}o?.deactivate(),Er()}if(r.length===0){u.then(()=>c(t.map(a)));return}function m(){s(),Promise.all(r.map(v=>Ln(v))).then(v=>c([...t.map(a),...v])).catch(v=>Rt(v,l))}u?u.then(m):m()}function Pn(){var e=ue,t=W,r=We,n=X;return function(i=!0){Ye(e),Ce(t),Vt(r),i&&n?.activate()}}function Er(){Ye(null),Ce(null),Vt(null)}function hr(e){var t=be|Ee,r=W!==null&&(W.f&be)!==0?W:null;return ue!==null&&(ue.f|=jt),{ctx:We,deps:null,effects:null,equals:ua,f:t,fn:e,reactions:null,rv:0,v:ge,wv:0,parent:r??ue,ac:null}}function Ln(e,t,r){let n=ue;n===null&&tn();var a=n.b,i=void 0,o=Ct(ge),l=!W,s=new Map;return Wn(()=>{var u=na();i=u.promise;try{Promise.resolve(e()).then(u.resolve,u.reject).then(()=>{c===X&&c.committed&&c.deactivate(),Er()})}catch(h){u.reject(h),Er()}var c=X;if(l){var m=a.is_rendered();a.update_pending_count(1),c.increment(m),s.get(c)?.reject(Tt),s.delete(c),s.set(c,u)}const v=(h,_=void 0)=>{if(c.activate(),_)_!==Tt&&(o.f|=mt,Ft(o,_));else{(o.f&mt)!==0&&(o.f^=mt),Ft(o,h);for(const[y,g]of s){if(s.delete(y),y===c)break;g.reject(Tt)}}l&&(a.update_pending_count(-1),c.decrement(m))};u.promise.then(v,h=>v(null,h||"unknown"))}),Or(()=>{for(const u of s.values())u.reject(Tt)}),new Promise(u=>{function c(m){function v(){m===i?u(o):c(i)}m.then(v,v)}c(i)})}function I(e){const t=hr(e);return Oa(t),t}function ya(e){const t=hr(e);return t.equals=da,t}function xa(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r0&&!Ea&&In()}return t}function In(){Ea=!1;for(const e of $r)(e.f&xe)!==0&&pe(e,tt),tr(e)&&Gt(e);$r.clear()}function On(e,t=1){var r=p(e),n=t===1?r++:r--;return oe(e,r),n}function Yt(e){oe(e,e.v+1)}function Sa(e,t){var r=e.reactions;if(r!==null)for(var n=r.length,a=0;a{if(Et===i)return l();var s=W,u=Et;Ce(null),Xr(i);var c=l();return Ce(s),Xr(u),c};return n&&r.set("length",fe(e.length)),new Proxy(e,{defineProperty(l,s,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&nn();var c=r.get(s);return c===void 0?c=o(()=>{var m=fe(u.value);return r.set(s,m),m}):oe(c,u.value,!0),!0},deleteProperty(l,s){var u=r.get(s);if(u===void 0){if(s in l){const c=o(()=>fe(ge));r.set(s,c),Yt(a)}}else oe(u,ge),Yt(a);return!0},get(l,s,u){if(s===Ot)return e;var c=r.get(s),m=s in l;if(c===void 0&&(!m||It(l,s)?.writable)&&(c=o(()=>{var h=ft(m?l[s]:ge),_=fe(h);return _}),r.set(s,c)),c!==void 0){var v=p(c);return v===ge?void 0:v}return Reflect.get(l,s,u)},getOwnPropertyDescriptor(l,s){var u=Reflect.getOwnPropertyDescriptor(l,s);if(u&&"value"in u){var c=r.get(s);c&&(u.value=p(c))}else if(u===void 0){var m=r.get(s),v=m?.v;if(m!==void 0&&v!==ge)return{enumerable:!0,configurable:!0,value:v,writable:!0}}return u},has(l,s){if(s===Ot)return!0;var u=r.get(s),c=u!==void 0&&u.v!==ge||Reflect.has(l,s);if(u!==void 0||ue!==null&&(!c||It(l,s)?.writable)){u===void 0&&(u=o(()=>{var v=c?ft(l[s]):ge,h=fe(v);return h}),r.set(s,u));var m=p(u);if(m===ge)return!1}return c},set(l,s,u,c){var m=r.get(s),v=s in l;if(n&&s==="length")for(var h=u;hfe(ge)),r.set(h+"",_))}if(m===void 0)(!v||It(l,s)?.writable)&&(m=o(()=>fe(void 0)),oe(m,ft(u)),r.set(s,m));else{v=m.v!==ge;var y=o(()=>ft(u));oe(m,y)}var g=Reflect.getOwnPropertyDescriptor(l,s);if(g?.set&&g.set.call(c,u),!v){if(n&&typeof s=="string"){var b=r.get("length"),$=Number(s);Number.isInteger($)&&$>=b.v&&oe(b,$+1)}Yt(a)}return!0},ownKeys(l){p(a);var s=Reflect.ownKeys(l).filter(m=>{var v=r.get(m);return v===void 0||v.v!==ge});for(var[u,c]of r)c.v!==ge&&!(u in l)&&s.push(u);return s},setPrototypeOf(){sn()}})}function Yr(e){try{if(e!==null&&typeof e=="object"&&Ot in e)return e[Ot]}catch{}return e}function Mn(e,t){return Object.is(Yr(e),Yr(t))}var Kr,Da,Ca,Na;function Vn(){if(Kr===void 0){Kr=window,Da=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;Ca=It(t,"firstChild").get,Na=It(t,"nextSibling").get,Ur(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Ur(r)&&(r.__t=void 0)}}function Xe(e=""){return document.createTextNode(e)}function cr(e){return Ca.call(e)}function Qt(e){return Na.call(e)}function f(e,t){return cr(e)}function te(e,t=!1){{var r=cr(e);return r instanceof Comment&&r.data===""?Qt(r):r}}function d(e,t=1,r=!1){let n=e;for(;t--;)n=Qt(n);return n}function Rn(e){e.textContent=""}function ka(){return!1}let Jr=!1;function Fn(){Jr||(Jr=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Lr(e){var t=W,r=ue;Ce(null),Ye(null);try{return e()}finally{Ce(t),Ye(r)}}function Tr(e,t,r,n=r){e.addEventListener(t,()=>Lr(r));const a=e.__on_r;a?e.__on_r=()=>{a(),n(!0)}:e.__on_r=()=>n(!0),Fn()}function jn(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function rt(e,t,r){var n=ue;n!==null&&(n.f&Pe)!==0&&(e|=Pe);var a={ctx:We,deps:null,nodes:null,f:e|Ee|Oe,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};if(r)try{Gt(a),a.f|=sa}catch(l){throw Ne(a),l}else t!==null&&Qe(a);var i=a;if(r&&i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&(i.f&jt)===0&&(i=i.first,(e&et)!==0&&(e&St)!==0&&i!==null&&(i.f|=St)),i!==null&&(i.parent=n,n!==null&&jn(i,n),W!==null&&(W.f&be)!==0&&(e&kt)===0)){var o=W;(o.effects??=[]).push(i)}return a}function Ir(){return W!==null&&!ze}function Or(e){const t=rt(mr,null,!1);return pe(t,xe),t.teardown=e,t}function Bn(e){return rt(lr|Za,e,!1)}function zn(e){pt.ensure();const t=rt(kt|jt,e,!0);return(r={})=>new Promise(n=>{r.outro?wt(t,()=>{Ne(t),n(void 0)}):(Ne(t),n(void 0))})}function Un(e){return rt(lr,e,!1)}function Wn(e){return rt(Ar|jt,e,!0)}function Mr(e,t=0){return rt(mr|t,e,!0)}function H(e,t=[],r=[],n=[]){qn(n,t,r,a=>{rt(mr,()=>e(...a.map(p)),!0)})}function er(e,t=0){var r=rt(et|t,e,!0);return r}function Ie(e){return rt(gt|jt,e,!0)}function Aa(e){var t=e.teardown;if(t!==null){const r=Nt,n=W;Gr(!0),Ce(null);try{t.call(null)}finally{Gr(r),Ce(n)}}}function qa(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const a=r.ac;a!==null&&Lr(()=>{a.abort(Tt)});var n=r.next;(r.f&kt)!==0?r.parent=null:Ne(r,t),r=n}}function Hn(e){for(var t=e.first;t!==null;){var r=t.next;(t.f>)===0&&Ne(t),t=r}}function Ne(e,t=!0){var r=!1;(t||(e.f&oa)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(Yn(e.nodes.start,e.nodes.end),r=!0),qa(e,t&&!r),dr(e,0),pe(e,Ge);var n=e.nodes&&e.nodes.t;if(n!==null)for(const i of n)i.stop();Aa(e);var a=e.parent;a!==null&&a.first!==null&&Pa(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function Yn(e,t){for(;e!==null;){var r=e===t?null:Qt(e);e.remove(),e=r}}function Pa(e){var t=e.parent,r=e.prev,n=e.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),t!==null&&(t.first===e&&(t.first=n),t.last===e&&(t.last=r))}function wt(e,t,r=!0){var n=[];La(e,n,!0);var a=()=>{r&&Ne(e),t&&t()},i=n.length;if(i>0){var o=()=>--i||a();for(var l of n)l.out(o)}else a()}function La(e,t,r){if((e.f&Pe)===0){e.f^=Pe;var n=e.nodes&&e.nodes.t;if(n!==null)for(const l of n)(l.is_global||r)&&t.push(l);for(var a=e.first;a!==null;){var i=a.next,o=(a.f&St)!==0||(a.f>)!==0&&(e.f&et)!==0;La(a,t,o?r:!1),a=i}}}function Vr(e){Ta(e,!0)}function Ta(e,t){if((e.f&Pe)!==0){e.f^=Pe,(e.f&xe)===0&&(pe(e,Ee),Qe(e));for(var r=e.first;r!==null;){var n=r.next,a=(r.f&St)!==0||(r.f>)!==0;Ta(r,a?t:!1),r=n}var i=e.nodes&&e.nodes.t;if(i!==null)for(const o of i)(o.is_global||t)&&o.in()}}function Ia(e,t){if(e.nodes)for(var r=e.nodes.start,n=e.nodes.end;r!==null;){var a=r===n?null:Qt(r);t.append(r),r=a}}let sr=!1,Nt=!1;function Gr(e){Nt=e}let W=null,ze=!1;function Ce(e){W=e}let ue=null;function Ye(e){ue=e}let Ze=null;function Oa(e){W!==null&&(Ze===null?Ze=[e]:Ze.push(e))}let Se=null,Ae=0,Te=null;function Kn(e){Te=e}let Ma=1,yt=0,Et=yt;function Xr(e){Et=e}function Va(){return++Ma}function tr(e){var t=e.f;if((t&Ee)!==0)return!0;if(t&be&&(e.f&=~Dt),(t&tt)!==0){for(var r=e.deps,n=r.length,a=0;ae.wv)return!0}(t&Oe)!==0&&Be===null&&pe(e,xe)}return!1}function Ra(e,t,r=!0){var n=e.reactions;if(n!==null&&!Ze?.includes(e))for(var a=0;a{e.ac.abort(Tt)}),e.ac=null);try{e.f|=xr;var c=e.fn,m=c(),v=e.deps;if(Se!==null){var h;if(dr(e,Ae),v!==null&&Ae>0)for(v.length=Ae+Se.length,h=0;h{throw g});throw v}}finally{e.__root=t,delete e.currentTarget,Ce(c),Ye(m)}}}function Qn(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("",""),t.content}function fr(e,t){var r=ue;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function D(e,t){var r=(t&gn)!==0,n=(t&_n)!==0,a,i=!e.startsWith("");return()=>{a===void 0&&(a=Qn(i?e:""+e),r||(a=cr(a)));var o=n||Da?document.importNode(a,!0):a.cloneNode(!0);if(r){var l=cr(o),s=o.lastChild;fr(l,s)}else fr(o,o);return o}}function Ua(e=""){{var t=Xe(e+"");return fr(t,t),t}}function je(){var e=document.createDocumentFragment(),t=document.createComment(""),r=Xe();return e.append(t,r),fr(t,r),e}function E(e,t){e!==null&&e.before(t)}function V(e,t){var r=t==null?"":typeof t=="object"?t+"":t;r!==(e.__t??=e.nodeValue)&&(e.__t=r,e.nodeValue=r+"")}function ei(e,t){return ti(e,t)}const qt=new Map;function ti(e,{target:t,anchor:r,props:n={},events:a,context:i,intro:o=!0}){Vn();var l=new Set,s=m=>{for(var v=0;v{var m=r??t.appendChild(Xe());return kn(m,{pending:()=>{}},v=>{if(i){Ve({});var h=We;h.c=i}a&&(n.$$events=a),u=e(v,n)||{},i&&Re()}),()=>{for(var v of l){t.removeEventListener(v,nr);var h=qt.get(v);--h===0?(document.removeEventListener(v,nr),qt.delete(v)):qt.set(v,h)}Sr.delete(s),m!==r&&m.parentNode?.removeChild(m)}});return ri.set(u,c),u}let ri=new WeakMap;class Rr{anchor;#t=new Map;#s=new Map;#e=new Map;#n=new Set;#i=!0;constructor(t,r=!0){this.anchor=t,this.#i=r}#a=()=>{var t=X;if(this.#t.has(t)){var r=this.#t.get(t),n=this.#s.get(r);if(n)Vr(n),this.#n.delete(r);else{var a=this.#e.get(r);a&&(this.#s.set(r,a.effect),this.#e.delete(r),a.fragment.lastChild.remove(),this.anchor.before(a.fragment),n=a.effect)}for(const[i,o]of this.#t){if(this.#t.delete(i),i===t)break;const l=this.#e.get(o);l&&(Ne(l.effect),this.#e.delete(o))}for(const[i,o]of this.#s){if(i===r||this.#n.has(i))continue;const l=()=>{if(Array.from(this.#t.values()).includes(i)){var u=document.createDocumentFragment();Ia(o,u),u.append(Xe()),this.#e.set(i,{effect:o,fragment:u})}else Ne(o);this.#n.delete(i),this.#s.delete(i)};this.#i||!n?(this.#n.add(i),wt(o,l,!1)):l()}}};#r=t=>{this.#t.delete(t);const r=Array.from(this.#t.values());for(const[n,a]of this.#e)r.includes(n)||(Ne(a.effect),this.#e.delete(n))};ensure(t,r){var n=X,a=ka();if(r&&!this.#s.has(t)&&!this.#e.has(t))if(a){var i=document.createDocumentFragment(),o=Xe();i.append(o),this.#e.set(t,{effect:Ie(()=>r(o)),fragment:i})}else this.#s.set(t,Ie(()=>r(this.anchor)));if(this.#t.set(n,t),a){for(const[l,s]of this.#s)l===t?n.skipped_effects.delete(s):n.skipped_effects.add(s);for(const[l,s]of this.#e)l===t?n.skipped_effects.delete(s.effect):n.skipped_effects.add(s.effect);n.oncommit(this.#a),n.ondiscard(this.#r)}else this.#a()}}function ie(e,t,r=!1){var n=new Rr(e),a=r?St:0;function i(o,l){n.ensure(o,l)}er(()=>{var o=!1;t((l,s=!0)=>{o=!0,i(s,l)}),o||i(!1,null)},a)}function ai(e,t,r){var n=new Rr(e);er(()=>{var a=t();n.ensure(a,r)})}function Fr(e,t){return t}function ni(e,t,r){for(var n=[],a=t.length,i,o=t.length,l=0;l{if(i){if(i.pending.delete(m),i.done.add(m),i.pending.size===0){var v=e.outrogroups;Dr(vr(i.done)),v.delete(i),v.size===0&&(e.outrogroups=null)}}else o-=1},!1)}if(o===0){var s=n.length===0&&r!==null;if(s){var u=r,c=u.parentNode;Rn(c),c.append(u),e.items.clear()}Dr(t,!s)}else i={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(i)}function Dr(e,t=!0){for(var r=0;r{var b=r();return Nr(b)?b:b==null?[]:vr(b)}),v,h=!0;function _(){g.fallback=c,ii(g,v,o,t,n),c!==null&&(v.length===0?(c.f&Je)===0?Vr(c):(c.f^=Je,Ut(c,null,o)):wt(c,()=>{c=null}))}var y=er(()=>{v=p(m);for(var b=v.length,$=new Set,q=X,k=ka(),S=0;Si(o)):(c=Ie(()=>i(Qr??=Xe())),c.f|=Je)),!h)if(k){for(const[N,T]of l)$.has(N)||q.skipped_effects.add(T.e);q.oncommit(_),q.ondiscard(()=>{})}else _();p(m)}),g={effect:y,items:l,outrogroups:null,fallback:c};h=!1}function ii(e,t,r,n,a){var i=(n&dn)!==0,o=t.length,l=e.items,s=e.effect.first,u,c=null,m,v=[],h=[],_,y,g,b;if(i)for(b=0;b0){var N=(n&la)!==0&&o===0?r:null;if(i){for(b=0;b{if(m!==void 0)for(g of m)g.nodes?.a?.apply()})}function si(e,t,r,n,a,i,o,l){var s=(o&un)!==0?(o&fn)===0?$a(r,!1,!1):Ct(r):null,u=(o&cn)!==0?Ct(a):null;return{v:s,i:u,e:Ie(()=>(i(t,s??r,u??a,l),()=>{e.delete(n)}))}}function Ut(e,t,r){if(e.nodes)for(var n=e.nodes.start,a=e.nodes.end,i=t&&(t.f&Je)===0?t.nodes.start:r;n!==null;){var o=Qt(n);if(i.before(n),n===a)return;n=o}}function dt(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}function Mt(e,t,...r){var n=new Rr(e);er(()=>{const a=t()??null;n.ensure(a,a&&(i=>a(i,...r)))},St)}function oi(e,t,r){var n=e==null?"":""+e;return n===""?null:n}function Me(e,t,r,n,a,i){var o=e.__className;if(o!==r||o===void 0){var l=oi(r);l==null?e.removeAttribute("class"):t?e.className=l:e.setAttribute("class",l),e.__className=r}return i}function Wa(e,t,r=!1){if(e.multiple){if(t==null)return;if(!Nr(t))return yn();for(var n of e.options)n.selected=t.includes(Kt(n));return}for(n of e.options){var a=Kt(n);if(Mn(a,t)){n.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function li(e){var t=new MutationObserver(()=>{Wa(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Or(()=>{t.disconnect()})}function ui(e,t,r=t){var n=new WeakSet,a=!0;Tr(e,"change",i=>{var o=i?"[selected]":":checked",l;if(e.multiple)l=[].map.call(e.querySelectorAll(o),Kt);else{var s=e.querySelector(o)??e.querySelector("option:not([disabled])");l=s&&Kt(s)}r(l),X!==null&&n.add(X)}),Un(()=>{var i=t();if(e===document.activeElement){var o=ur??X;if(n.has(o))return}if(Wa(e,i,a),a&&i===void 0){var l=e.querySelector(":checked");l!==null&&(i=Kt(l),r(i))}e.__value=i,a=!1}),li(e)}function Kt(e){return"__value"in e?e.__value:e.value}const ci=Symbol("is custom element"),di=Symbol("is html");function _e(e,t,r,n){var a=fi(e);a[t]!==(a[t]=r)&&(t==="loading"&&(e[en]=r),r==null?e.removeAttribute(t):typeof r!="string"&&vi(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function fi(e){return e.__attributes??={[ci]:e.nodeName.includes("-"),[di]:e.namespaceURI===bn}}var ea=new Map;function vi(e){var t=e.getAttribute("is")||e.nodeName,r=ea.get(t);if(r)return r;ea.set(t,r=[]);for(var n,a=e,i=Element.prototype;i!==a;){n=Ja(a);for(var o in n)n[o].set&&r.push(o);a=ra(a)}return r}function Xt(e,t,r=t){var n=new WeakSet;Tr(e,"input",async a=>{var i=a?e.defaultValue:e.value;if(i=_r(e)?br(i):i,r(i),X!==null&&n.add(X),await Gn(),i!==(i=t())){var o=e.selectionStart,l=e.selectionEnd,s=e.value.length;if(e.value=i??"",l!==null){var u=e.value.length;o===l&&l===s&&u>s?(e.selectionStart=u,e.selectionEnd=u):(e.selectionStart=o,e.selectionEnd=Math.min(l,u))}}}),rr(t)==null&&e.value&&(r(_r(e)?br(e.value):e.value),X!==null&&n.add(X)),Mr(()=>{var a=t();if(e===document.activeElement){var i=ur??X;if(n.has(i))return}_r(e)&&a===br(e.value)||e.type==="date"&&!a&&!e.value||a!==e.value&&(e.value=a??"")})}function or(e,t,r=t){Tr(e,"change",n=>{var a=n?e.defaultChecked:e.checked;r(a)}),rr(t)==null&&r(e.checked),Mr(()=>{var n=t();e.checked=!!n})}function _r(e){var t=e.type;return t==="number"||t==="range"}function br(e){return e===""?null:+e}function Br(e,t,r){if(e==null)return t(void 0),r&&r(void 0),vt;const n=rr(()=>e.subscribe(t,r));return n.unsubscribe?()=>n.unsubscribe():n}const Pt=[];function mi(e,t){return{subscribe:Lt(e,t).subscribe}}function Lt(e,t=vt){let r=null;const n=new Set;function a(l){if(ca(e,l)&&(e=l,r)){const s=!Pt.length;for(const u of n)u[1](),Pt.push(u,e);if(s){for(let u=0;u{n.delete(u),n.size===0&&r&&(r(),r=null)}}return{set:a,update:i,subscribe:o}}function pi(e,t,r){const n=!Array.isArray(e),a=n?[e]:e;if(!a.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return mi(r,(o,l)=>{let s=!1;const u=[];let c=0,m=vt;const v=()=>{if(c)return;m();const _=t(n?u[0]:u,o,l);i?o(_):m=typeof _=="function"?_:vt},h=a.map((_,y)=>Br(_,g=>{u[y]=g,c&=~(1<{c|=1<t=r)(),t}let ir=!1,Cr=Symbol();function K(e,t,r){const n=r[t]??={store:null,source:$a(void 0),unsubscribe:vt};if(n.store!==e&&!(Cr in r))if(n.unsubscribe(),n.store=e??null,e==null)n.source.v=void 0,n.unsubscribe=vt;else{var a=!0;n.unsubscribe=Br(e,i=>{a?n.source.v=i:oe(n.source,i)}),a=!1}return e&&Cr in r?Wt(e):p(n.source)}function nt(){const e={};function t(){Or(()=>{for(var r in e)e[r].unsubscribe();ta(e,Cr,{enumerable:!1,value:!0})})}return[e,t]}function hi(e){var t=ir;try{return ir=!1,[e(),ir]}finally{ir=t}}function De(e,t,r,n){var a=(r&pn)!==0,i=(r&hn)!==0,o=n,l=!0,s=()=>(l&&(l=!1,o=i?rr(n):n),o),u;if(a){var c=Ot in e||Qa in e;u=It(e,t)?.set??(c&&t in e?$=>e[t]=$:void 0)}var m,v=!1;a?[m,v]=hi(()=>e[t]):m=e[t],m===void 0&&n!==void 0&&(m=s(),u&&(an(),u(m)));var h;if(h=()=>{var $=e[t];return $===void 0?s():(l=!0,$)},(r&mn)===0)return h;if(u){var _=e.$$legacy;return(function($,q){return arguments.length>0?((!q||_||v)&&u(q?h():$),$):h()})}var y=!1,g=((r&vn)!==0?hr:ya)(()=>(y=!1,h()));a&&p(g);var b=ue;return(function($,q){if(arguments.length>0){const k=q?p(g):a?ft($):$;return oe(g,k),y=!0,o!==void 0&&(o=k),$}return Nt&&y||(b.f&Ge)!==0?g.v:p(g)})}const gi="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(gi);const _i=e=>typeof e=="object"&&e!==null&&!(e instanceof Date)&&!(e instanceof Map)&&!(e instanceof Set)&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!(e instanceof RegExp)&&!(e instanceof Error)&&!(e instanceof Promise),bi=(e,t)=>{const r=(a,i)=>new Proxy(a,{get(o,l){const s=o[l];if(_i(s)){const u=Number.isInteger(Number(l))?"":String(l),c=u?i?`${i}.${u}`:u:i;return r(s,c)}return s},set(o,l,s){const u=o[l];if(u!==s){o[l]=s;const c=Number.isInteger(Number(l))?"":String(l),m=c?i?`${i}.${c}`:c:i;t(n,m,s,u)}return!0}}),n=r(e,"");return n},Ha=e=>Object.values(e).some(t=>typeof t=="string"?!!t:Ha(t)),yi=e=>!!e&&Ha(e),_t=e=>{if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return e.map(r=>_t(r));const t=Object.create(Object.getPrototypeOf(e));for(const r of Object.keys(e))t[r]=_t(e[r]);return t},xi={resetDirtyOnAction:!0,debounceValidation:0,allowConcurrentActions:!1,persistActionError:!1};function it(e,t,r){const n={...xi,...r},{validator:a,effect:i}=t??{},o=Lt(),l=pi(o,yi),s=Lt(!1),u=Lt(!1),c=Lt(),m=Lt([{title:"Initial",data:_t(e)}]),v=ft(e),h=(C,x=!0)=>{const w=Wt(m),N={title:C,data:_t(v)},T=w.at(-1);x&&T&&T.title===C?m.set([...w.slice(0,-1),N]):m.set([...w,N])};let _=!1,y;const g=()=>{if(a)if(n.debounceValidation>0)clearTimeout(y),y=setTimeout(()=>{o.set(a(b))},n.debounceValidation);else{if(_)return;_=!0,queueMicrotask(()=>{o.set(a(b)),_=!1})}},b=bi(v,(C,x,w,N)=>{if(n.persistActionError||c.set(void 0),s.set(!0),i?.({snapshot:h,target:C,property:x,currentValue:w,oldValue:N})instanceof Promise)throw new Error("svstate: effect callback must be synchronous. Use action for async operations.");g()});return a&&o.set(a(b)),{data:b,execute:async C=>{if(!(!n.allowConcurrentActions&&Wt(u))){c.set(void 0),u.set(!0);try{await t?.action?.(C),n.resetDirtyOnAction&&s.set(!1),m.set([{title:"Initial",data:_t(v)}]),await t?.actionCompleted?.()}catch(x){await t?.actionCompleted?.(x),c.set(x instanceof Error?x:void 0)}finally{u.set(!1)}}},state:{errors:o,hasErrors:l,isDirty:s,actionInProgress:u,actionError:c,snapshots:m},rollback:(C=1)=>{const x=Wt(m);if(x.length<=1)return;const w=Math.max(0,x.length-1-C),N=x[w];N&&(Object.assign(v,_t(N.data)),m.set(x.slice(0,w+1)),a&&o.set(a(b)))},reset:()=>{const x=Wt(m)[0];x&&(Object.assign(v,_t(x.data)),m.set([x]),a&&o.set(a(b)))}}}const wi={trim:e=>e.trim(),normalize:e=>e.replaceAll(/\s{2,}/g," "),upper:e=>e.toUpperCase(),lower:e=>e.toLowerCase()};function Z(e,...t){let r="";const n=o=>{r||(r=o)},a=t.reduce((o,l)=>wi[l](o),e),i={required(){return!r&&!a&&n("Required"),i},noSpace(){return!r&&a.includes(" ")&&n("No space allowed"),i},minLength(o){return!r&&a.lengtho&&n(`Max length ${o}`),i},uppercase(){return!r&&a!==a.toUpperCase()&&n("Uppercase only"),i},lowercase(){return!r&&a!==a.toLowerCase()&&n("Lowercase only"),i},startsWith(o){if(r)return i;const l=Array.isArray(o)?o:[o];return a&&!l.some(s=>a.startsWith(s))&&n(`Must start with ${l.join(", ")}`),i},regexp(o,l){return!r&&a&&!o.test(a)&&n(l??"Not allowed chars"),i},inArray(o){if(r)return i;const l=Array.isArray(o)?o:Object.keys(o);return a&&!l.includes(a)&&n(`Must be one of: ${l.join(", ")}`),i},email(){return!r&&a&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a)&&n("Invalid email format"),i},website(o="optional"){if(r||!a||o==="optional")return i;const l=/^https?:\/\//.test(a);return o==="required"&&!l?n("Must start with http:// or https://"):o==="forbidden"&&l&&n("Must not start with http:// or https://"),i},endsWith(o){if(r||!a)return i;const l=Array.isArray(o)?o:[o];return l.some(s=>a.endsWith(s))||n(`Must end with ${l.join(", ")}`),i},contains(o){return!r&&a&&!a.includes(o)&&n(`Must contain "${o}"`),i},alphanumeric(){return!r&&a&&!/^[\dA-Za-z]+$/.test(a)&&n("Only letters and numbers allowed"),i},numeric(){return!r&&a&&!/^\d+$/.test(a)&&n("Only numbers allowed"),i},getError(){return r}};return i}function Zt(e){let t="";const r=a=>{t||(t=a)},n={required(){return!t&&Number.isNaN(e)&&r("Required"),n},min(a){return!t&&ea&&r(`Maximum ${a}`),n},between(a,i){return!t&&(ei)&&r(`Must be between ${a} and ${i}`),n},integer(){return!t&&!Number.isInteger(e)&&r("Must be an integer"),n},positive(){return!t&&e<=0&&r("Must be positive"),n},negative(){return!t&&e>=0&&r("Must be negative"),n},nonNegative(){return!t&&e<0&&r("Must be non-negative"),n},multipleOf(a){return!t&&e%a!==0&&r(`Must be a multiple of ${a}`),n},decimal(a){return t||Number.isNaN(e)||(String(e).split(".")[1]?.length??0)>a&&r(`Maximum ${a} decimal places`),n},percentage(){return!t&&(e<0||e>100)&&r("Must be between 0 and 100"),n},getError(){return t}};return n}function Ei(e){let t="";const r=a=>{t||(t=a)},n={required(){return!t&&e.length===0&&r("Required"),n},minLength(a){return!t&&e.lengtha&&r(`Maximum ${a} items`),n},unique(){if(t)return n;const a=new Set;for(const i of e){const o=typeof i=="object"?JSON.stringify(i):String(i);if(a.has(o)){r("Items must be unique");break}a.add(o)}return n},getError(){return t}};return n}var $i=D('
'),Si=D('
 
');function de(e,t){var r=Si(),n=f(r);{var a=l=>{var s=$i(),u=f(s);H(()=>V(u,t.title)),E(l,s)};ie(n,l=>{t.title&&l(a)})}var i=d(n,2),o=f(i);H(()=>V(o,t.code)),E(e,r)}var Di=D('
State Object
 
State Info
isDirty:
hasErrors:
Errors
 
');function st(e,t){let r=De(t,"width",3,"xl:w-80");var n=Di(),a=f(n),i=d(f(a),2),o=f(i),l=d(a,2),s=d(f(l),2),u=f(s),c=d(f(u)),m=d(u,2),v=d(f(m)),h=d(l,2),_=d(f(h),2),y=f(_),g=d(h,2);g.__click=function(...b){t.onFill?.apply(this,b)},H((b,$)=>{Me(n,1,`w-full ${r()??""} flex-shrink-0 space-y-4`),V(o,b),V(c,` ${t.isDirty??""}`),V(v,` ${t.hasErrors??""}`),V(y,$)},[()=>JSON.stringify(t.data,void 0,2),()=>JSON.stringify(t.errors,void 0,2)]),E(e,n)}at(["click"]);var Ci=D('

');function Jt(e,t){var r=je(),n=te(r);{var a=i=>{var o=Ci(),l=f(o);H(()=>V(l,t.error)),E(i,o)};ie(n,i=>{t.error&&i(a)})}E(e,r)}var Ni=D("
");function Q(e,t){Ve(t,!0);let r=De(t,"type",3,"text"),n=De(t,"placeholder",3,""),a=De(t,"value",15),i=De(t,"error",3,""),o=De(t,"required",3,!0),l=De(t,"disabled",3,!1),s=De(t,"variant",3,"default");const u=I(()=>s()==="nested"?"bg-white":"bg-gray-50");var c=Ni(),m=f(c),v=f(m),h=d(m,2),_=d(h,2);{let y=I(()=>i()??"");Jt(_,{get error(){return p(y)}})}H(()=>{Me(m,1,`mb-2 block text-sm text-gray-900 ${o()?"font-bold":""}`),_e(m,"for",t.id),V(v,t.label),_e(h,"id",t.id),Me(h,1,`block w-full rounded-lg border p-2.5 text-sm ${i()?"border-red-500 bg-red-50 text-red-900 placeholder-red-400 focus:border-red-500 focus:ring-red-500":`border-gray-300 ${p(u)} text-gray-900 focus:border-blue-500 focus:ring-blue-500`} ${l()?"cursor-not-allowed opacity-50":""}`),h.disabled=l(),_e(h,"max",t.max),_e(h,"min",t.min),_e(h,"placeholder",n()),_e(h,"step",t.step),_e(h,"type",r())}),Xt(h,a),E(e,c),Re()}var ki=D('

'),Ai=D('
'),qi=D('
',1);function ot(e,t){var r=qi(),n=te(r),a=f(n),i=f(a),o=f(i),l=d(i,2);{var s=_=>{var y=ki(),g=f(y);H(()=>V(g,t.description)),E(_,y)},u=_=>{var y=Ai();E(_,y)};ie(l,_=>{t.description?_(s):_(u,!1)})}var c=d(l,2);Mt(c,()=>t.main);var m=d(a,2);Mt(m,()=>t.sidebar);var v=d(n,2);{var h=_=>{var y=je(),g=te(y);Mt(g,()=>t.sourceCode),E(_,y)};ie(v,_=>{t.sourceCode&&_(h)})}H(()=>V(o,t.title)),E(e,r)}var Pi=D('
'),Li=D('
');function lt(e,t){let r=fe(!1);var n=Li(),a=f(n);a.__click=()=>oe(r,!p(r));var i=d(f(a),2),o=d(a,2);{var l=s=>{var u=Pi(),c=f(u);Mt(c,()=>t.children),E(s,u)};ie(o,s=>{p(r)&&s(l)})}H(()=>{Me(a,1,`flex w-full cursor-pointer items-center justify-between px-4 py-3 text-left text-sm font-medium text-gray-900 hover:bg-gray-50 ${p(r)?"border-b border-gray-200":""}`),Me(i,0,`h-5 w-5 transform transition-transform ${p(r)?"rotate-180":""}`)}),E(e,n)}at(["click"]);var Ti=D('
');function ut(e,t){var r=Ti(),n=f(r),a=f(n),i=d(n,2),o=f(i);H(()=>{Me(n,1,`rounded px-2.5 py-0.5 text-xs font-medium ${t.hasErrors?"bg-red-100 text-red-800":"bg-green-100 text-green-800"}`),V(a,t.hasErrors?"Has Errors":"Valid"),Me(i,1,`rounded px-2.5 py-0.5 text-xs font-medium ${t.isDirty?"bg-yellow-100 text-yellow-800":"bg-gray-100 text-gray-800"}`),V(o,t.isDirty?"Modified":"Clean")}),E(e,r)}const le=()=>Math.random().toString(36).slice(2,8),Ue=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;var Ii=D('
'),Oi=D('
'),Mi=D(' Submitting...'),Vi=D('
',1),Ri=D('
Action State
actionInProgress:
actionError:
'),Fi=D(" ",1);function ji(e,t){Ve(t,!0);const r=()=>K(y,"$hasErrors",l),n=()=>K(g,"$isDirty",l),a=()=>K(b,"$actionInProgress",l),i=()=>K(_,"$errors",l),o=()=>K($,"$actionError",l),[l,s]=nt(),u={title:`Task ${le()}`,description:`This is a sample task description with ID ${le()}`};let c=fe(!1),m=fe(void 0);const{data:v,execute:h,state:{errors:_,hasErrors:y,isDirty:g,actionInProgress:b,actionError:$}}=it(u,{validator:w=>({title:Z(w.title,"trim").required().minLength(3).maxLength(50).getError(),description:Z(w.description,"trim").required().minLength(10).maxLength(200).getError()}),action:async()=>{const w=Ue(100,1e3);if(await new Promise(N=>setTimeout(N,w)),p(c))throw new Error(`Simulated server error after ${w}ms`);oe(m,`Submitted successfully in ${w}ms!`)},actionCompleted:w=>{w&&oe(m,void 0)}}),q=()=>{v.title=`Task ${le()}`,v.description=`This is a sample task description with ID ${le()}`},k=()=>{oe(m,void 0),h()},S=`const { data, execute, state: { errors, hasErrors, isDirty, actionInProgress, actionError } } = + createSvState(sourceData, { + validator: (source) => ({ + title: stringValidator(source.title, 'trim').required().minLength(3).maxLength(50).getError(), + description: stringValidator(source.description, 'trim').required().minLength(10).getError() + }), + action: async () => { + // Simulate API call with 100-1000ms delay + const delay = randomInt(100, 1000); + await new Promise((resolve) => setTimeout(resolve, delay)); + + if (shouldFail) { + throw new Error('Simulated server error'); + } + }, + actionCompleted: (error) => { + // Called after action completes (success or failure) + console.log(error ? 'Action failed' : 'Action succeeded'); + } + });`,C=`// Execute the action + + +// With parameters (if action accepts them) +execute({ userId: 123 });`,x=`// Display action error +{#if $actionError} +
+ {$actionError.message} +
+{/if} + +// Check if action is in progress +{#if $actionInProgress} +
Submitting...
+{/if}`;ot(e,{description:"Demonstrates async action execution with loading states and error handling.",title:"Action Demo",main:O=>{var P=Vi(),ae=te(P);ut(ae,{get hasErrors(){return r()},get isDirty(){return n()}});var M=d(ae,2),L=f(M),F=f(L),ee=d(M,2),ne=f(ee);{let re=I(()=>i()?.title);Q(ne,{id:"title",get disabled(){return a()},get error(){return p(re)},label:"Title",placeholder:"Enter task title",get value(){return v.title},set value(ce){v.title=ce}})}var se=d(ne,2);{let re=I(()=>i()?.description);Q(se,{id:"description",get disabled(){return a()},get error(){return p(re)},label:"Description",placeholder:"Enter task description (min 10 characters)",get value(){return v.description},set value(ce){v.description=ce}})}var z=d(se,2),B=f(z),J=d(ee,2);{var R=re=>{var ce=Ii(),$e=f(ce),we=d(f($e),2),Fe=f(we);H(()=>V(Fe,o().message)),E(re,ce)};ie(J,re=>{o()&&re(R)})}var A=d(J,2);{var G=re=>{var ce=Oi(),$e=f(ce),we=d(f($e),2),Fe=f(we);H(()=>V(Fe,p(m))),E(re,ce)};ie(A,re=>{p(m)&&re(G)})}var he=d(A,2),j=f(he);j.__click=k;var U=f(j);{var ve=re=>{var ce=Mi();E(re,ce)},ke=re=>{var ce=Ua("Submit");E(re,ce)};ie(U,re=>{a()?re(ve):re(ke,!1)})}H(()=>{Me(L,1,`rounded px-2.5 py-0.5 text-xs font-medium ${a()?"bg-blue-100 text-blue-800":"bg-gray-100 text-gray-800"}`),V(F,a()?"In Progress":"Idle"),B.disabled=a(),j.disabled=r()||a()}),or(B,()=>p(c),re=>oe(c,re)),E(O,P)},sidebar:O=>{var P=Ri(),ae=f(P);st(ae,{get data(){return v},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:q});var M=d(ae,2),L=d(f(M),2),F=f(L),ee=d(f(F)),ne=d(F,2),se=d(f(ne));H(()=>{V(ee,` ${a()??""}`),V(se,` ${o()?.message??"none"??""}`)}),E(O,P)},sourceCode:O=>{lt(O,{children:(P,ae)=>{var M=Fi(),L=te(M);de(L,{code:S,title:"State Setup with Action"});var F=d(L,2);de(F,{code:C,title:"Execute Action"});var ee=d(F,2);de(ee,{code:x,title:"Error & Loading States"}),E(P,M)}})}}),Re(),s()}at(["click"]);var Bi=D('
');function zi(e,t){let r=De(t,"label",3,"Item");var n=Bi(),a=f(n),i=f(a),o=f(i),l=d(i,2);l.__click=function(...u){t.onRemove?.apply(this,u)};var s=d(a,2);Mt(s,()=>t.children),H(()=>V(o,`${r()??""} #${t.index+1}`)),E(e,n)}at(["click"]);var Ui=D('

');function Wi(e,t){var r=Ui(),n=f(r),a=f(n);H(()=>V(a,t.message)),E(e,r)}var Hi=D('
'),Yi=D('
'),Ki=D('
'),Ji=D('
Contacts
',1),Gi=D(" ",1);function Xi(e,t){Ve(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=nt(),l={listName:"",items:[]},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=it(l,{validator:b=>({listName:Z(b.listName,"trim").required().minLength(2).getError(),items:Ei(b.items).required().minLength(1).getError(),...Object.fromEntries(b.items.map(($,q)=>[`item_${q}`,{name:Z($.name,"trim").required().minLength(2).getError(),email:Z($.email,"trim").required().email().getError()}]))})}),v=()=>{s.items=[...s.items,{name:"",email:""}]},h=b=>{s.items=s.items.filter(($,q)=>q!==b)},_=()=>{s.listName=`Contact List ${le()}`,s.items=[{name:"John Doe",email:"john@example.com"},{name:"Jane Smith",email:"jane@example.com"},{name:"Bob Wilson",email:"bob@example.com"}]},y=`const sourceData = { + listName: '', + items: [] as { name: string; email: string }[] +}; + +const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + listName: stringValidator(source.listName, 'trim').required().minLength(2).getError(), + items: arrayValidator(source.items).required().minLength(1).getError(), + // Per-item validation using indexed keys + ...Object.fromEntries( + source.items.map((item, index) => [ + \`item_\${index}\`, + { + name: stringValidator(item.name, 'trim').required().minLength(2).getError(), + email: stringValidator(item.email, 'trim').required().email().getError() + } + ]) + ) + }) +});`,g=`// Define type for item errors +type ItemErrors = Record; + +{#each data.items as item, index} + + + + + +{/each}`;ot(e,{description:"Shows how to validate dynamic arrays with per-item validation using indexed error keys.",title:"Array Property Demo",main:k=>{var S=Ji(),C=te(S);ut(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let z=I(()=>a()?.listName);Q(w,{id:"listName",get error(){return p(z)},label:"List Name",placeholder:"Enter list name",get value(){return s.listName},set value(B){s.listName=B}})}var N=d(w,2),T=f(N),O=f(T),P=d(f(O)),ae=f(P),M=d(O,2);M.__click=v;var L=d(T,2);{var F=z=>{var B=Hi(),J=f(B);Jt(J,{get error(){return a().items}}),E(z,B)};ie(L,z=>{a()?.items&&z(F)})}var ee=d(L,2);{var ne=z=>{Wi(z,{message:'No contacts yet. Click "Add Contact" to get started.'})},se=z=>{var B=Ki();jr(B,21,()=>s.items,Fr,(J,R,A)=>{zi(J,{index:A,label:"Contact",onRemove:()=>h(A),children:(G,he)=>{var j=Yi(),U=f(j),ve=f(U);_e(ve,"for",`item-name-${A}`);var ke=d(ve,2);_e(ke,"id",`item-name-${A}`);var re=d(ke,2);{let ye=I(()=>a()?.[`item_${A}`]?.name??"");Jt(re,{get error(){return p(ye)}})}var ce=d(U,2),$e=f(ce);_e($e,"for",`item-email-${A}`);var we=d($e,2);_e(we,"id",`item-email-${A}`);var Fe=d(we,2);{let ye=I(()=>a()?.[`item_${A}`]?.email??"");Jt(Fe,{get error(){return p(ye)}})}H(()=>{Me(ke,1,`block w-full rounded-lg border p-2 text-sm ${a()?.[`item_${A}`]?.name?"border-red-500 bg-red-50 text-red-900 placeholder-red-400":"border-gray-300 bg-white text-gray-900"}`),Me(we,1,`block w-full rounded-lg border p-2 text-sm ${a()?.[`item_${A}`]?.email?"border-red-500 bg-red-50 text-red-900 placeholder-red-400":"border-gray-300 bg-white text-gray-900"}`)}),Xt(ke,()=>p(R).name,ye=>p(R).name=ye),Xt(we,()=>p(R).email,ye=>p(R).email=ye),E(G,j)},$$slots:{default:!0}})}),E(z,B)};ie(ee,z=>{s.items.length===0?z(ne):z(se,!1)})}H(()=>V(ae,`${s.items.length??""} items`)),E(k,S)},sidebar:k=>{st(k,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:_,width:"xl:w-96"})},sourceCode:k=>{lt(k,{children:(S,C)=>{var x=Gi(),w=te(x);de(w,{code:y,title:"State Setup with Array Item Validation"});var N=d(w,2);de(N,{code:g,title:"Array Form Binding Examples"}),E(S,x)}})}}),Re(),o()}at(["click"]);var Zi=D("
");function zr(e,t){Ve(t,!0);let r=De(t,"placeholder",3,""),n=De(t,"value",15),a=De(t,"error",3,""),i=De(t,"required",3,!1),o=De(t,"rows",3,3);var l=Zi(),s=f(l),u=f(s),c=d(s,2),m=d(c,2);{let v=I(()=>a()??"");Jt(m,{get error(){return p(v)}})}H(()=>{Me(s,1,`mb-2 block text-sm text-gray-900 ${i()?"font-bold":""}`),_e(s,"for",t.id),V(u,t.label),_e(c,"id",t.id),Me(c,1,`block w-full rounded-lg border p-2.5 text-sm ${a()?"border-red-500 bg-red-50 text-red-900 placeholder-red-400 focus:border-red-500 focus:ring-red-500":"border-gray-300 bg-gray-50 text-gray-900 focus:border-blue-500 focus:ring-blue-500"}`),_e(c,"placeholder",r()),_e(c,"rows",o())}),Xt(c,n),E(e,l),Re()}var Qi=D('
',1),es=D(" ",1);function ts(e,t){Ve(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=nt(),l={username:"",email:"",age:0,bio:"",website:""},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=it(l,{validator:y=>({username:Z(y.username,"trim").required().minLength(3).maxLength(20).noSpace().getError(),email:Z(y.email,"trim").required().email().getError(),age:Zt(y.age).required().min(18).max(120).integer().getError(),bio:Z(y.bio).maxLength(200).getError(),website:Z(y.website,"trim").website("required").getError()})}),v=()=>{s.username=`user${le()}`,s.email=`${le()}@example.com`,s.age=Ue(18,65),s.bio="Hello, I am a demo user!",s.website=`https://${le()}.com`},h=`const sourceData = { + username: '', + email: '', + age: 0, + bio: '', + website: '' +}; + +const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + username: stringValidator(source.username, 'trim').required().minLength(3).maxLength(20).noSpace().getError(), + email: stringValidator(source.email, 'trim').required().email().getError(), + age: numberValidator(source.age).required().min(18).max(120).integer().getError(), + bio: stringValidator(source.bio).maxLength(200).getError(), + website: stringValidator(source.website, 'trim').website('required').getError() + }) +});`,_=` +`;ot(e,{description:"Demonstrates form validation with string, number, and email validators using the fluent API.",title:"Basic Validation Demo",main:$=>{var q=Qi(),k=te(q);ut(k,{get hasErrors(){return r()},get isDirty(){return n()}});var S=d(k,2),C=f(S);{let O=I(()=>a()?.username);Q(C,{id:"username",get error(){return p(O)},label:"Username",placeholder:"Enter username",get value(){return s.username},set value(P){s.username=P}})}var x=d(C,2);{let O=I(()=>a()?.email);Q(x,{id:"email",get error(){return p(O)},label:"Email",placeholder:"Enter email",type:"email",get value(){return s.email},set value(P){s.email=P}})}var w=d(x,2);{let O=I(()=>a()?.age);Q(w,{id:"age",get error(){return p(O)},label:"Age",placeholder:"Enter age",type:"number",get value(){return s.age},set value(P){s.age=P}})}var N=d(w,2);{let O=I(()=>a()?.bio);zr(N,{id:"bio",get error(){return p(O)},label:"Bio",placeholder:"Tell us about yourself",get value(){return s.bio},set value(P){s.bio=P}})}var T=d(N,2);{let O=I(()=>a()?.website);Q(T,{id:"website",get error(){return p(O)},label:"Website",placeholder:"https://example.com",required:!1,get value(){return s.website},set value(P){s.website=P}})}E($,q)},sidebar:$=>{st($,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:v})},sourceCode:$=>{lt($,{children:(q,k)=>{var S=es(),C=te(S);de(C,{code:h,title:"State Setup"});var x=d(C,2);de(x,{code:_,title:"Form Binding Example"}),E(q,S)}})}}),Re(),o()}var rs=D(' '),as=D('
');function $t(e,t){var r=as(),n=f(r),a=d(n);{var i=o=>{var l=rs(),s=f(l);H(()=>V(s,`(${t.subtitle??""})`)),E(o,l)};ie(a,o=>{t.subtitle&&o(i)})}H(()=>V(n,`${t.title??""} `)),E(e,r)}var ns=D('
Subtotal:
Tax (8%):
Total:

Values formatted using methods on state: data.formatCurrency() and data.formatTotal()

',1),is=D(" ",1);function ss(e,t){Ve(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=nt(),l=.08,s=()=>({productName:`Widget ${le()}`,item:{unitPrice:0,quantity:1},subtotal:0,tax:0,total:0,formatTotal(){return`$${this.total.toFixed(2)}`},formatCurrency(b){return`$${b.toFixed(2)}`},calculateTotals(b=l){this.subtotal=this.item.unitPrice*this.item.quantity,this.tax=this.subtotal*b,this.total=this.subtotal+this.tax}}),{data:u,state:{errors:c,hasErrors:m,isDirty:v}}=it(s(),{validator:b=>({productName:Z(b.productName,"trim").required().minLength(2).getError(),item:{unitPrice:Zt(b.item.unitPrice).required().positive().getError(),quantity:Zt(b.item.quantity).required().integer().min(1).max(100).getError()}}),effect:({property:b})=>{(b==="item.unitPrice"||b==="item.quantity")&&u.calculateTotals()}}),h=()=>{u.productName=`Widget ${le()}`,u.item.unitPrice=Ue(10,100),u.item.quantity=Ue(1,10)},_=`// Define state type with methods +type SourceData = { + productName: string; + item: { unitPrice: number; quantity: number }; + subtotal: number; + tax: number; + total: number; + formatTotal: () => string; + formatCurrency: (value: number) => string; + calculateTotals: (taxRate?: number) => void; +}; + +// Create initial state as object with methods +const createSourceData = (): SourceData => ({ + productName: '', + item: { unitPrice: 0, quantity: 1 }, + subtotal: 0, + tax: 0, + total: 0, + formatTotal() { + return \`$\${this.total.toFixed(2)}\`; + }, + formatCurrency(value: number) { + return \`$\${value.toFixed(2)}\`; + }, + calculateTotals(taxRate: number = 0.08) { + this.subtotal = this.item.unitPrice * this.item.quantity; + this.tax = this.subtotal * taxRate; + this.total = this.subtotal + this.tax; + } +});`,y=`const { data, state: { errors, hasErrors, isDirty } } = createSvState(createSourceData(), { + validator: (source) => ({ + productName: stringValidator(source.productName, 'trim').required().minLength(2).getError(), + item: { + unitPrice: numberValidator(source.item.unitPrice).required().positive().getError(), + quantity: numberValidator(source.item.quantity).required().integer().min(1).max(100).getError() + } + }), + effect: ({ property }) => { + if (property === 'item.unitPrice' || property === 'item.quantity') { + data.calculateTotals(); // Call method on state object! + } + } +});`,g=` +{data.formatCurrency(data.subtotal)} +{data.formatTotal()}`;ot(e,{description:"Demonstrates using objects with methods as state. The effect callback can call methods directly on the state object.",title:"State with Methods Demo",main:k=>{var S=ns(),C=te(S);ut(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let j=I(()=>a()?.productName);Q(w,{id:"productName",get error(){return p(j)},label:"Product Name",placeholder:"Enter product name",get value(){return u.productName},set value(U){u.productName=U}})}var N=d(w,2),T=f(N);$t(T,{subtitle:"nested object",title:"Item Details"});var O=d(T,2),P=f(O);{let j=I(()=>a()?.item?.unitPrice);Q(P,{id:"unitPrice",get error(){return p(j)},label:"Unit Price ($)",min:0,placeholder:"0.00",step:.01,type:"number",get value(){return u.item.unitPrice},set value(U){u.item.unitPrice=U}})}var ae=d(P,2);{let j=I(()=>a()?.item?.quantity);Q(ae,{id:"quantity",get error(){return p(j)},label:"Quantity",max:100,min:1,placeholder:"1",type:"number",get value(){return u.item.quantity},set value(U){u.item.quantity=U}})}var M=d(N,2),L=f(M);$t(L,{subtitle:"computed by method",title:"Calculated Totals"});var F=d(L,2),ee=f(F),ne=f(ee),se=d(f(ne),2),z=f(se),B=d(ne,2),J=d(f(B),2),R=f(J),A=d(B,2),G=d(f(A),2),he=f(G);H((j,U,ve)=>{V(z,j),V(R,U),V(he,ve)},[()=>u.formatCurrency(u.subtotal),()=>u.formatCurrency(u.tax),()=>u.formatTotal()]),E(k,S)},sidebar:k=>{st(k,{get data(){return u},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:k=>{lt(k,{children:(S,C)=>{var x=is(),w=te(x);de(w,{code:_,title:"Class Definition"});var N=d(w,2);de(N,{code:y,title:"State Setup with Class Instance"});var T=d(N,2);de(T,{code:g,title:"Template Usage"}),E(S,x)}})}}),Re(),o()}var os=D('
Subtotal:
Tax (8%):
Total:
',1),ls=D(" ",1);function us(e,t){Ve(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=nt(),l=.08,s={productName:`Widget ${le()}`,item:{unitPrice:0,quantity:1},subtotal:0,tax:0,total:0},{data:u,state:{errors:c,hasErrors:m,isDirty:v}}=it(s,{validator:b=>({productName:Z(b.productName,"trim").required().minLength(2).getError(),item:{unitPrice:Zt(b.item.unitPrice).required().positive().getError(),quantity:Zt(b.item.quantity).required().integer().min(1).max(100).getError()}}),effect:({property:b})=>{(b==="item.unitPrice"||b==="item.quantity")&&(u.subtotal=u.item.unitPrice*u.item.quantity,u.tax=u.subtotal*l,u.total=u.subtotal+u.tax)}}),h=()=>{u.productName=`Widget ${le()}`,u.item.unitPrice=Ue(10,100),u.item.quantity=Ue(1,10)},_=b=>`$${b.toFixed(2)}`,y=`const sourceData = { + productName: '', + item: { unitPrice: 0, quantity: 1 }, + subtotal: 0, tax: 0, total: 0 // Calculated fields (set by effect) +}; + +const TAX_RATE = 0.08; + +const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + productName: stringValidator(source.productName, 'trim').required().minLength(2).getError(), + item: { + unitPrice: numberValidator(source.item.unitPrice).required().positive().getError(), + quantity: numberValidator(source.item.quantity).required().integer().min(1).max(100).getError() + } + }), + effect: ({ property }) => { + if (property === 'item.unitPrice' || property === 'item.quantity') { + data.subtotal = data.item.unitPrice * data.item.quantity; + data.tax = data.subtotal * TAX_RATE; + data.total = data.subtotal + data.tax; + } + } +});`,g=`effect: ({ property }) => { + if (property === 'item.unitPrice' || property === 'item.quantity') { + data.subtotal = data.item.unitPrice * data.item.quantity; + data.tax = data.subtotal * TAX_RATE; + data.total = data.subtotal + data.tax; + } +}`;ot(e,{description:"Uses the effect callback to automatically compute derived values like subtotals, taxes, and totals.",title:"Calculated Fields Demo",main:k=>{var S=os(),C=te(S);ut(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let j=I(()=>a()?.productName);Q(w,{id:"productName",get error(){return p(j)},label:"Product Name",placeholder:"Enter product name",get value(){return u.productName},set value(U){u.productName=U}})}var N=d(w,2),T=f(N);$t(T,{subtitle:"nested object",title:"Item Details"});var O=d(T,2),P=f(O);{let j=I(()=>a()?.item?.unitPrice);Q(P,{id:"unitPrice",get error(){return p(j)},label:"Unit Price ($)",min:0,placeholder:"0.00",step:.01,type:"number",get value(){return u.item.unitPrice},set value(U){u.item.unitPrice=U}})}var ae=d(P,2);{let j=I(()=>a()?.item?.quantity);Q(ae,{id:"quantity",get error(){return p(j)},label:"Quantity",max:100,min:1,placeholder:"1",type:"number",get value(){return u.item.quantity},set value(U){u.item.quantity=U}})}var M=d(N,2),L=f(M);$t(L,{subtitle:"computed by effect",title:"Calculated Totals"});var F=d(L,2),ee=f(F),ne=f(ee),se=d(f(ne),2),z=f(se),B=d(ne,2),J=d(f(B),2),R=f(J),A=d(B,2),G=d(f(A),2),he=f(G);H((j,U,ve)=>{V(z,j),V(R,U),V(he,ve)},[()=>_(u.subtotal),()=>_(u.tax),()=>_(u.total)]),E(k,S)},sidebar:k=>{st(k,{get data(){return u},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:k=>{lt(k,{children:(S,C)=>{var x=ls(),w=te(x);de(w,{code:y,title:"State Setup with Effect"});var N=d(w,2);de(N,{code:g,title:"Effect Function"}),E(S,x)}})}}),Re(),o()}var cs=D(' '),ds=D('
');function fs(e,t){var r=ds(),n=f(r),a=f(n),i=d(a);{var o=s=>{var u=cs(),c=f(u);H(()=>V(c,`(${t.subtitle??""})`)),E(s,u)};ie(i,s=>{t.subtitle&&s(o)})}var l=d(n,2);Mt(l,()=>t.children),H(()=>V(a,`${t.title??""} `)),E(e,r)}var vs=D('
'),ms=D('
',1),ps=D(" ",1);function hs(e,t){Ve(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=nt(),l={name:"",address:{street:"",city:"",zip:""},company:{name:"",department:"",contact:{phone:"",email:""}}},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=it(l,{validator:y=>({name:Z(y.name,"trim").required().minLength(2).maxLength(50).getError(),address:{street:Z(y.address.street,"trim").required().minLength(5).getError(),city:Z(y.address.city,"trim").required().minLength(2).getError(),zip:Z(y.address.zip,"trim").required().minLength(5).maxLength(10).getError()},company:{name:Z(y.company.name,"trim").required().minLength(2).getError(),department:Z(y.company.department,"trim").maxLength(50).getError(),contact:{phone:Z(y.company.contact.phone,"trim").required().minLength(10).getError(),email:Z(y.company.contact.email,"trim").required().email().getError()}}})}),v=()=>{s.name=`John ${le()}`,s.address.street=`${Ue(100,9999)} Main Street`,s.address.city="New York",s.address.zip=`${Ue(1e4,99999)}`,s.company.name=`Acme ${le()} Inc`,s.company.department="Engineering",s.company.contact.phone=`555-${Ue(100,999)}-${Ue(1e3,9999)}`,s.company.contact.email=`contact@${le()}.com`},h=`const sourceData = { + name: '', + address: { street: '', city: '', zip: '' }, // 2-level nested + company: { // 3-level nested + name: '', + department: '', + contact: { phone: '', email: '' } + } +}; + +const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + name: stringValidator(source.name, 'trim').required().minLength(2).maxLength(50).getError(), + address: { + street: stringValidator(source.address.street, 'trim').required().minLength(5).getError(), + city: stringValidator(source.address.city, 'trim').required().minLength(2).getError(), + zip: stringValidator(source.address.zip, 'trim').required().minLength(5).maxLength(10).getError() + }, + company: { + name: stringValidator(source.company.name, 'trim').required().minLength(2).getError(), + department: stringValidator(source.company.department, 'trim').maxLength(50).getError(), + contact: { + phone: stringValidator(source.company.contact.phone, 'trim').required().minLength(10).getError(), + email: stringValidator(source.company.contact.email, 'trim').required().email().getError() + } + } + }) +});`,_=` + + + + + +`;ot(e,{description:"Illustrates validating deeply nested object structures with multi-level property paths.",title:"Nested Objects Demo",main:$=>{var q=ms(),k=te(q);ut(k,{get hasErrors(){return r()},get isDirty(){return n()}});var S=d(k,2),C=f(S),x=f(C);$t(x,{title:"Personal Info"});var w=d(x,2);{let R=I(()=>a()?.name);Q(w,{id:"name",get error(){return p(R)},label:"Full Name",placeholder:"Enter your full name",get value(){return s.name},set value(A){s.name=A}})}var N=d(C,2),T=f(N);$t(T,{subtitle:"2-level nested",title:"Address"});var O=d(T,2),P=f(O);{let R=I(()=>a()?.address?.street);Q(P,{id:"street",get error(){return p(R)},label:"Street",placeholder:"Enter street address",get value(){return s.address.street},set value(A){s.address.street=A}})}var ae=d(P,2),M=f(ae);{let R=I(()=>a()?.address?.city);Q(M,{id:"city",get error(){return p(R)},label:"City",placeholder:"Enter city",get value(){return s.address.city},set value(A){s.address.city=A}})}var L=d(M,2);{let R=I(()=>a()?.address?.zip);Q(L,{id:"zip",get error(){return p(R)},label:"ZIP Code",placeholder:"Enter ZIP",get value(){return s.address.zip},set value(A){s.address.zip=A}})}var F=d(N,2),ee=f(F);$t(ee,{subtitle:"3-level nested",title:"Company"});var ne=d(ee,2),se=f(ne),z=f(se);{let R=I(()=>a()?.company?.name);Q(z,{id:"company-name",get error(){return p(R)},label:"Company Name",placeholder:"Enter company name",get value(){return s.company.name},set value(A){s.company.name=A}})}var B=d(z,2);{let R=I(()=>a()?.company?.department);Q(B,{id:"department",get error(){return p(R)},label:"Department",placeholder:"Enter department",required:!1,get value(){return s.company.department},set value(A){s.company.department=A}})}var J=d(se,2);fs(J,{subtitle:"3rd level",title:"Contact Info",children:(R,A)=>{var G=vs(),he=f(G);{let U=I(()=>a()?.company?.contact?.phone);Q(he,{id:"contact-phone",get error(){return p(U)},label:"Phone",placeholder:"Enter phone number",variant:"nested",get value(){return s.company.contact.phone},set value(ve){s.company.contact.phone=ve}})}var j=d(he,2);{let U=I(()=>a()?.company?.contact?.email);Q(j,{id:"contact-email",get error(){return p(U)},label:"Email",placeholder:"Enter email address",type:"email",variant:"nested",get value(){return s.company.contact.email},set value(ve){s.company.contact.email=ve}})}E(R,G)}}),E($,q)},sidebar:$=>{st($,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:v,width:"xl:w-96"})},sourceCode:$=>{lt($,{children:(q,k)=>{var S=ps(),C=te(S);de(C,{code:h,title:"State Setup with Nested Validation"});var x=d(C,2);de(x,{code:_,title:"Nested Form Binding Examples"}),E(q,S)}})}}),Re(),o()}var gs=D('
Effect triggered:
'),_s=D('
'),bs=D('
'),ys=D(' Submitting...'),xs=D('
',1),ws=D('
Options

Reset isDirty after successful action

Try 500ms and type quickly

Keep errors until next action

Current Options
'),Es=D(" ",1);function $s(e,t){Ve(t,!0);const r=()=>K(p(S),"$hasErrors",l),n=()=>K(p(C),"$isDirty",l),a=()=>K(p(x),"$actionInProgress",l),i=()=>K(p(k),"$errors",l),o=()=>K(p(w),"$actionError",l),[l,s]=nt();let u=fe(!0),c=fe(0),m=fe(!1),v=fe(0),h=fe(!1),_=fe(void 0),y=fe(void 0);const g=()=>({name:`User ${le()}`,email:`${le()}@example.com`}),b=L=>it(g(),{validator:F=>({name:Z(F.name,"trim").required().minLength(2).maxLength(50).getError(),email:Z(F.email,"trim").required().email().getError()}),effect:({property:F})=>{oe(y,F,!0)},action:async()=>{const F=Ue(100,800);if(await new Promise(ee=>setTimeout(ee,F)),p(h))throw new Error(`Simulated error after ${F}ms`);oe(_,`Submitted successfully in ${F}ms!`)},actionCompleted:F=>{F&&oe(_,void 0)}},L);let $=fe(ft(b({resetDirtyOnAction:!0,debounceValidation:0,persistActionError:!1})));const q=()=>{oe(y,void 0),oe(_,void 0),oe($,b({resetDirtyOnAction:p(u),debounceValidation:p(c),persistActionError:p(m)}),!0),On(v)},k=I(()=>p($).state.errors),S=I(()=>p($).state.hasErrors),C=I(()=>p($).state.isDirty),x=I(()=>p($).state.actionInProgress),w=I(()=>p($).state.actionError),N=()=>{p($).data.name=`User ${le()}`,p($).data.email=`${le()}@example.com`},T=()=>{oe(_,void 0),p($).execute()},O=`const { data, execute, state } = createSvState( + sourceData, + { validator, effect, action }, + { + // Reset isDirty to false after successful action + resetDirtyOnAction: true, // default: true + + // Debounce validation by N milliseconds + debounceValidation: 0, // default: 0 (uses queueMicrotask) + + // Keep action errors until next action (not cleared on data change) + persistActionError: false // default: false + } +);`,P=`// With resetDirtyOnAction: true (default) +await execute(); +// isDirty is now false + +// With resetDirtyOnAction: false +await execute(); +// isDirty remains true`,ae=`// With debounceValidation: 0 (default) +// Validation runs via queueMicrotask after each change + +// With debounceValidation: 500 +// Validation runs 500ms after the last change +// Useful for expensive validators or rapid typing`,M=`// With persistActionError: false (default) +data.name = 'new value'; +// actionError is cleared immediately + +// With persistActionError: true +data.name = 'new value'; +// actionError remains until next execute() call`;ot(e,{description:"Interactive playground for configuring createSvState options like debouncing and error persistence.",title:"Options Demo",main:ne=>{var se=je(),z=te(se);ai(z,()=>p(v),B=>{var J=xs(),R=te(J);ut(R,{get hasErrors(){return r()},get isDirty(){return n()}});var A=d(R,2);{var G=Y=>{var me=gs(),Le=f(me),ct=d(f(Le));H(()=>V(ct,` property "${p(y)??""}" changed`)),E(Y,me)};ie(A,Y=>{p(y)&&Y(G)})}var he=d(A,2),j=f(he);{let Y=I(()=>i()?.name);Q(j,{id:"name",get disabled(){return a()},get error(){return p(Y)},label:"Name",placeholder:"Enter name",get value(){return p($).data.name},set value(me){p($).data.name=me}})}var U=d(j,2);{let Y=I(()=>i()?.email);Q(U,{id:"email",get disabled(){return a()},get error(){return p(Y)},label:"Email",placeholder:"Enter email",type:"email",get value(){return p($).data.email},set value(me){p($).data.email=me}})}var ve=d(U,2),ke=f(ve),re=d(he,2);{var ce=Y=>{var me=_s(),Le=f(me),ct=d(f(Le),2),zt=f(ct);H(()=>V(zt,o().message)),E(Y,me)};ie(re,Y=>{o()&&Y(ce)})}var $e=d(re,2);{var we=Y=>{var me=bs(),Le=f(me),ct=d(f(Le),2),zt=f(ct);H(()=>V(zt,p(_))),E(Y,me)};ie($e,Y=>{p(_)&&Y(we)})}var Fe=d($e,2),ye=f(Fe);ye.__click=T;var He=f(ye);{var At=Y=>{var me=ys();E(Y,me)},Bt=Y=>{var me=Ua("Submit");E(Y,me)};ie(He,Y=>{a()?Y(At):Y(Bt,!1)})}H(()=>{ke.disabled=a(),ye.disabled=r()||a()}),or(ke,()=>p(h),Y=>oe(h,Y)),E(B,J)}),E(ne,se)},sidebar:ne=>{var se=ws(),z=f(se);st(z,{get data(){return p($).data},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:N});var B=d(z,2),J=d(f(B),2),R=f(J),A=f(R),G=f(A),he=d(R,2),j=d(f(he),2),U=d(he,2),ve=f(U),ke=f(ve),re=d(U,2);re.__click=q;var ce=d(B,2),$e=d(f(ce),2),we=f($e),Fe=f(we),ye=d(we,2),He=f(ye),At=d(ye,2),Bt=f(At);H(()=>{V(Fe,`resetDirtyOnAction: ${p(u)??""}`),V(He,`debounceValidation: ${p(c)??""}`),V(Bt,`persistActionError: ${p(m)??""}`)}),or(G,()=>p(u),Y=>oe(u,Y)),Xt(j,()=>p(c),Y=>oe(c,Y)),or(ke,()=>p(m),Y=>oe(m,Y)),E(ne,se)},sourceCode:ne=>{lt(ne,{children:(se,z)=>{var B=Es(),J=te(B);de(J,{code:O,title:"Options Overview"});var R=d(J,2);de(R,{code:P,title:"resetDirtyOnAction"});var A=d(R,2);de(A,{code:ae,title:"debounceValidation"});var G=d(A,2);de(G,{code:M,title:"persistActionError"}),E(se,B)}})}}),Re(),s()}at(["click"]);var Ss=D('
'),Ds=D('
',1),Cs=D(" ",1);function Ns(e,t){Ve(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=nt(),l={firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com",phone:"",bio:""},{data:s,reset:u,state:{errors:c,hasErrors:m,isDirty:v}}=it(l,{validator:g=>({firstName:Z(g.firstName,"trim").required().minLength(2).maxLength(30).getError(),lastName:Z(g.lastName,"trim").required().minLength(2).maxLength(30).getError(),email:Z(g.email,"trim").required().email().getError(),phone:Z(g.phone,"trim").required().minLength(10).getError(),bio:Z(g.bio).maxLength(200).getError()})}),h=()=>{s.firstName="John",s.lastName=`Doe${le()}`,s.email=`john.doe.${le()}@example.com`,s.phone=`555-${le().slice(0,3)}-${le().slice(0,4)}`,s.bio="Software developer with a passion for clean code."},_=`const sourceData = { + firstName: 'Alice', + lastName: 'Smith', + email: 'alice.smith@example.com', + phone: '', + bio: '' +}; + +const { data, reset, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + firstName: stringValidator(source.firstName, 'trim').required().minLength(2).maxLength(30).getError(), + lastName: stringValidator(source.lastName, 'trim').required().minLength(2).maxLength(30).getError(), + email: stringValidator(source.email, 'trim').required().email().getError(), + phone: stringValidator(source.phone, 'trim').required().minLength(10).getError(), + bio: stringValidator(source.bio).maxLength(200).getError() + }) +});`,y=` +{#if $isDirty} + +{/if} + + +`;ot(e,{description:"Demonstrates the reset() function to restore state back to its initial values.",title:"Reset Demo",main:q=>{var k=Ds(),S=te(k);ut(S,{get hasErrors(){return r()},get isDirty(){return n()}});var C=d(S,2),x=f(C);{let M=I(()=>a()?.firstName);Q(x,{id:"firstName",get error(){return p(M)},label:"First Name",placeholder:"Enter first name",get value(){return s.firstName},set value(L){s.firstName=L}})}var w=d(x,2);{let M=I(()=>a()?.lastName);Q(w,{id:"lastName",get error(){return p(M)},label:"Last Name",placeholder:"Enter last name",get value(){return s.lastName},set value(L){s.lastName=L}})}var N=d(w,2);{let M=I(()=>a()?.email);Q(N,{id:"email",get error(){return p(M)},label:"Email",placeholder:"Enter email",type:"email",get value(){return s.email},set value(L){s.email=L}})}var T=d(N,2);{let M=I(()=>a()?.phone);Q(T,{id:"phone",get error(){return p(M)},label:"Phone",placeholder:"555-123-4567",get value(){return s.phone},set value(L){s.phone=L}})}var O=d(T,2);{let M=I(()=>a()?.bio);zr(O,{id:"bio",get error(){return p(M)},label:"Bio",placeholder:"Tell us about yourself",required:!1,get value(){return s.bio},set value(L){s.bio=L}})}var P=d(C,2);{var ae=M=>{var L=Ss(),F=f(L);F.__click=u,E(M,L)};ie(P,M=>{n()&&M(ae)})}E(q,k)},sidebar:q=>{st(q,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:q=>{lt(q,{children:(k,S)=>{var C=Cs(),x=te(C);de(x,{code:_,title:"State Setup with Reset"});var w=d(x,2);de(w,{code:y,title:"Conditional Reset Button"}),E(k,C)}})}}),Re(),o()}at(["click"]);var ks=D(''),As=D('
',1),qs=D('

No snapshots yet

'),Ps=D('
  • '),Ls=D('
      '),Ts=D('
      Snapshot History
      '),Is=D(" ",1);function Os(e,t){Ve(t,!0);const r=()=>K(_,"$hasErrors",o),n=()=>K(y,"$isDirty",o),a=()=>K(g,"$snapshots",o),i=()=>K(h,"$errors",o),[o,l]=nt(),s={firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com",phone:"",bio:""},u=S=>S.charAt(0).toUpperCase()+S.slice(1).replaceAll(/([A-Z])/g," $1"),{data:c,reset:m,rollback:v,state:{errors:h,hasErrors:_,isDirty:y,snapshots:g}}=it(s,{validator:S=>({firstName:Z(S.firstName,"trim").required().minLength(2).maxLength(30).getError(),lastName:Z(S.lastName,"trim").required().minLength(2).maxLength(30).getError(),email:Z(S.email,"trim").required().email().getError(),phone:Z(S.phone,"trim").required().minLength(10).getError(),bio:Z(S.bio).maxLength(200).getError()}),effect:({snapshot:S,property:C})=>{S(`Changed ${u(C)}`)}}),b=()=>{c.firstName="John",c.lastName=`Doe${le()}`,c.email=`john.doe.${le()}@example.com`,c.phone=`555-${le().slice(0,3)}-${le().slice(0,4)}`,c.bio="Software developer with a passion for clean code."},$=`const sourceData = { + firstName: 'Alice', lastName: 'Smith', email: 'alice.smith@example.com', phone: '', bio: '' +}; + +const { data, reset, rollback, state: { errors, hasErrors, isDirty, snapshots } } = + createSvState(sourceData, { + validator: (source) => ({ /* validation rules */ }), + effect: ({ snapshot, property }) => { + snapshot(\`Changed \${formatFieldName(property)}\`); + } + });`,q=`// Effect callback creates snapshots on each change +effect: ({ snapshot, property }) => { + snapshot(\`Changed \${property}\`); // Creates undo point + // If same title, replaces last snapshot (debouncing) + // Use snapshot(title, false) to always create new +}`,k=`// Undo last change (disabled if only initial snapshot) + + +// Rollback multiple steps at once +rollback(3); // Undo 3 changes + +// Reset to initial state (clears all snapshots) +`;ot(e,{description:"Shows snapshot creation for undo functionality with rollback() support.",title:"Snapshot & Rollback Demo",main:w=>{var N=As(),T=te(N);ut(T,{get hasErrors(){return r()},get isDirty(){return n()}});var O=d(T,2),P=f(O),ae=f(P),M=d(O,2),L=f(M);{let A=I(()=>i()?.firstName);Q(L,{id:"firstName",get error(){return p(A)},label:"First Name",placeholder:"Enter first name",get value(){return c.firstName},set value(G){c.firstName=G}})}var F=d(L,2);{let A=I(()=>i()?.lastName);Q(F,{id:"lastName",get error(){return p(A)},label:"Last Name",placeholder:"Enter last name",get value(){return c.lastName},set value(G){c.lastName=G}})}var ee=d(F,2);{let A=I(()=>i()?.email);Q(ee,{id:"email",get error(){return p(A)},label:"Email",placeholder:"Enter email",type:"email",get value(){return c.email},set value(G){c.email=G}})}var ne=d(ee,2);{let A=I(()=>i()?.phone);Q(ne,{id:"phone",get error(){return p(A)},label:"Phone",placeholder:"555-123-4567",get value(){return c.phone},set value(G){c.phone=G}})}var se=d(ne,2);{let A=I(()=>i()?.bio);zr(se,{id:"bio",get error(){return p(A)},label:"Bio",placeholder:"Tell us about yourself",required:!1,get value(){return c.bio},set value(G){c.bio=G}})}var z=d(M,2),B=f(z);B.__click=()=>v();var J=d(B,2);{var R=A=>{var G=ks();G.__click=m,E(A,G)};ie(J,A=>{n()&&A(R)})}H(()=>{V(ae,`${a().length??""} Snapshot${a().length===1?"":"s"}`),B.disabled=a().length<=1}),E(w,N)},sidebar:w=>{var N=Ts(),T=f(N);st(T,{get data(){return c},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:b,width:"xl:w-96"});var O=d(T,2),P=d(f(O),2);{var ae=L=>{var F=qs();E(L,F)},M=L=>{var F=Ls();jr(F,5,a,Fr,(ee,ne,se)=>{var z=Ps(),B=f(z);B.textContent=se+1;var J=d(B,2),R=f(J);H(()=>V(R,p(ne).title)),E(ee,z)}),E(L,F)};ie(P,L=>{a().length===0?L(ae):L(M,!1)})}E(w,N)},sourceCode:w=>{lt(w,{children:(N,T)=>{var O=Is(),P=te(O);de(P,{code:$,title:"State Setup with Snapshots"});var ae=d(P,2);de(ae,{code:q,title:"Effect with Snapshot Creation"});var M=d(ae,2);de(M,{code:k,title:"Rollback & Reset Usage"}),E(N,O)}})}}),Re(),l()}at(["click"]);var Ms=D(""),Vs=D(`
      svstate logo

      svstate

      A Svelte 5 library that provides a supercharged $state() with deep reactive proxies, validation, snapshot/undo, + and side effects — built for complex, real-world applications.

      $ npm i svstate
      `);function Rs(e){const t=[{value:"basic-validation",name:"Basic Validation"},{value:"nested-objects",name:"Nested Objects"},{value:"array-property",name:"Array Property"},{value:"calculated-fields",name:"Calculated Fields"},{value:"calculated-class",name:"State with Methods"},{value:"reset-demo",name:"Reset"},{value:"snapshot-demo",name:"Snapshot & Rollback"},{value:"action-demo",name:"Action & Error"},{value:"options-demo",name:"Options"}];let r=fe("basic-validation");const n="1.1.0",a="/svstate";var i=Vs(),o=f(i),l=f(o),s=d(l,2),u=f(s),c=d(f(u),2),m=f(c),v=d(u,4),h=d(f(v),4);h.__click=()=>navigator.clipboard.writeText(`npm i svstate@${n}`);var _=d(v,2),y=d(o,2),g=f(y),b=f(g),$=d(f(b),2);jr($,21,()=>t,Fr,(x,w)=>{var N=Ms(),T=f(N),O={};H(()=>{V(T,p(w).name),O!==(O=p(w).value)&&(N.value=(N.__value=p(w).value)??"")}),E(x,N)});var q=d(g,2),k=f(q);{var S=x=>{ts(x,{})},C=x=>{var w=je(),N=te(w);{var T=P=>{hs(P,{})},O=P=>{var ae=je(),M=te(ae);{var L=ee=>{Xi(ee,{})},F=ee=>{var ne=je(),se=te(ne);{var z=J=>{us(J,{})},B=J=>{var R=je(),A=te(R);{var G=j=>{ss(j,{})},he=j=>{var U=je(),ve=te(U);{var ke=ce=>{Ns(ce,{})},re=ce=>{var $e=je(),we=te($e);{var Fe=He=>{Os(He,{})},ye=He=>{var At=je(),Bt=te(At);{var Y=Le=>{ji(Le,{})},me=Le=>{var ct=je(),zt=te(ct);{var Ya=gr=>{$s(gr,{})};ie(zt,gr=>{p(r)==="options-demo"&&gr(Ya)},!0)}E(Le,ct)};ie(Bt,Le=>{p(r)==="action-demo"?Le(Y):Le(me,!1)},!0)}E(He,At)};ie(we,He=>{p(r)==="snapshot-demo"?He(Fe):He(ye,!1)},!0)}E(ce,$e)};ie(ve,ce=>{p(r)==="reset-demo"?ce(ke):ce(re,!1)},!0)}E(j,U)};ie(A,j=>{p(r)==="calculated-class"?j(G):j(he,!1)},!0)}E(J,R)};ie(se,J=>{p(r)==="calculated-fields"?J(z):J(B,!1)},!0)}E(ee,ne)};ie(M,ee=>{p(r)==="array-property"?ee(L):ee(F,!1)},!0)}E(P,ae)};ie(N,P=>{p(r)==="nested-objects"?P(T):P(O,!1)},!0)}E(x,w)};ie(k,x=>{p(r)==="basic-validation"?x(S):x(C,!1)})}H(()=>{_e(l,"src",`${a}/favicon.png`),V(m,`v${n}`),_e(_,"href",`${a}/llms.txt`)}),ui($,()=>p(r),x=>oe(r,x)),E(e,i)}at(["click"]);ei(Rs,{target:document.querySelector("#app")}); diff --git a/docs/assets/index-Bq4AALX0.css b/docs/assets/index-Bq4AALX0.css new file mode 100644 index 0000000..6c44f9c --- /dev/null +++ b/docs/assets/index-Bq4AALX0.css @@ -0,0 +1 @@ +@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking: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}}}@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-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--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-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--radius-md:.375rem;--radius-lg:.5rem;--animate-spin:spin 1s linear infinite;--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}}@layer components;@layer utilities{.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-20{height:calc(var(--spacing)*20)}.max-h-48{max-height:calc(var(--spacing)*48)}.min-h-screen{min-height:100vh}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-20{width:calc(var(--spacing)*20)}.w-full{width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.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)}: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-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*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-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-200{border-color:var(--color-blue-200)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-purple-200{border-color:var(--color-purple-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-500{border-color:var(--color-red-500)}.bg-amber-600{background-color:var(--color-amber-600)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-600{background-color:var(--color-green-600)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-200{background-color:var(--color-purple-200)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.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-3{padding-block:calc(var(--spacing)*3)}.pt-2{padding-top:calc(var(--spacing)*2)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.text-center{text-align:center}.text-left{text-align:left}.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))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-gray-100{color:var(--color-gray-100)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-800{color:var(--color-green-800)}.text-purple-600{color:var(--color-purple-600)}.text-purple-800{color:var(--color-purple-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-white{color:var(--color-white)}.text-yellow-800{color:var(--color-yellow-800)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.placeholder-red-400::placeholder{color:var(--color-red-400)}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow-inner{--tw-shadow:inset 0 2px 4px 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)}.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)}.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-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-white:hover{color:var(--color-white)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.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-amber-500:focus{--tw-ring-color:var(--color-amber-500)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-green-500:focus{--tw-ring-color:var(--color-green-500)}.focus\:ring-orange-500:focus{--tw-ring-color:var(--color-orange-500)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:mb-8{margin-bottom:calc(var(--spacing)*8)}.sm\:inline-flex{display:inline-flex}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-32{height:calc(var(--spacing)*32)}.sm\:w-5{width:calc(var(--spacing)*5)}.sm\:w-32{width:calc(var(--spacing)*32)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:text-left{text-align:left}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media(min-width:48rem){.md\:p-8{padding:calc(var(--spacing)*8)}}@media(min-width:64rem){.lg\:w-64{width:calc(var(--spacing)*64)}.lg\:flex-shrink-0{flex-shrink:0}.lg\:flex-row{flex-direction:row}.lg\:gap-6{gap:calc(var(--spacing)*6)}}@media(min-width:80rem){.xl\:w-80{width:calc(var(--spacing)*80)}.xl\:w-96{width:calc(var(--spacing)*96)}.xl\:flex-row{flex-direction:row}.xl\:gap-6{gap:calc(var(--spacing)*6)}}}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/docs/assets/index-N5oYkhDF.js b/docs/assets/index-N5oYkhDF.js deleted file mode 100644 index 9e2eeac..0000000 --- a/docs/assets/index-N5oYkhDF.js +++ /dev/null @@ -1,229 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))a(n);new MutationObserver(n=>{for(const i of n)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&a(o)}).observe(document,{childList:!0,subtree:!0});function r(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(n){if(n.ep)return;n.ep=!0;const i=r(n);fetch(n.href,i)}})();const _r=!1;var kr=Array.isArray,Yn=Array.prototype.indexOf,dr=Array.from,en=Object.defineProperty,qt=Object.getOwnPropertyDescriptor,Kn=Object.getOwnPropertyDescriptors,Jn=Object.prototype,Gn=Array.prototype,tn=Object.getPrototypeOf,zr=Object.isExtensible;const it=()=>{};function rn(e){for(var t=0;t{e=a,t=n});return{promise:r,resolve:e,reject:t}}const ge=2,sr=4,fr=8,an=1<<24,Qe=16,ut=32,Dt=64,Ar=128,Te=512,ye=1024,Ee=2048,et=4096,qe=8192,Je=16384,sn=32768,wt=65536,Ur=1<<17,on=1<<18,Rt=1<<19,Zn=1<<20,Ye=1<<25,Et=32768,br=1<<21,Nr=1<<22,st=1<<23,Pt=Symbol("$state"),Xn=Symbol("legacy props"),Qn=Symbol(""),Lt=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"};function ea(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function ta(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function ra(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function na(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function aa(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function ia(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function sa(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const oa=1,la=2,ln=4,ua=8,ca=16,da=1,fa=4,va=8,ma=16,ha=1,pa=2,he=Symbol(),ga="http://www.w3.org/1999/xhtml";function _a(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function ba(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function un(e){return e===this.v}function cn(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function dn(e){return!cn(e,this.v)}let ya=!1,Fe=null;function Tt(e){Fe=e}function Be(e,t=!1,r){Fe={p:Fe,i:!1,c:null,e:null,s:e,x:null,l:null}}function je(e){var t=Fe,r=t.e;if(r!==null){t.e=null;for(var a of r)Fa(a)}return t.i=!0,Fe=t.p,{}}function fn(){return!0}let gt=[];function vn(){var e=gt;gt=[],rn(e)}function bt(e){if(gt.length===0&&!Ut){var t=gt;queueMicrotask(()=>{t===gt&&vn()})}gt.push(e)}function xa(){for(;gt.length>0;)vn()}function mn(e){var t=ae;if(t===null)return B.f|=st,e;if((t.f&sn)===0){if((t.f&Ar)===0)throw e;t.b.error(e)}else Ot(e,t)}function Ot(e,t){for(;t!==null;){if((t.f&Ar)!==0)try{t.b.error(e);return}catch(r){e=r}t=t.parent}throw e}const wa=-7169;function me(e,t){e.f=e.f&wa|t}function Cr(e){(e.f&Te)!==0||e.deps===null?me(e,ye):me(e,et)}function hn(e){if(e!==null)for(const t of e)(t.f&ge)===0||(t.f&Et)===0||(t.f^=Et,hn(t.deps))}function pn(e,t,r){(e.f&Ee)!==0?t.add(e):(e.f&et)!==0&&r.add(e),hn(e.deps),me(e,ye)}const tr=new Set;let H=null,or=null,Re=null,Le=[],vr=null,yr=!1,Ut=!1;class ot{committed=!1;current=new Map;previous=new Map;#t=new Set;#s=new Set;#e=0;#a=0;#i=null;#n=new Set;#r=new Set;skipped_effects=new Set;is_fork=!1;#o=!1;is_deferred(){return this.is_fork||this.#a>0}process(t){Le=[],this.apply();var r=[],a=[];for(const n of t)this.#l(n,r,a);if(this.is_deferred())this.#u(a),this.#u(r);else{for(const n of this.#t)n();this.#t.clear(),this.#e===0&&this.#c(),or=this,H=null,Wr(a),Wr(r),or=null,this.#i?.resolve()}Re=null}#l(t,r,a){t.f^=ye;for(var n=t.first,i=null;n!==null;){var o=n.f,l=(o&(ut|Dt))!==0,s=l&&(o&ye)!==0,u=s||(o&qe)!==0||this.skipped_effects.has(n);if(!u&&n.fn!==null){l?n.f^=ye:i!==null&&(o&(sr|fr|an))!==0?i.b.defer_effect(n):(o&sr)!==0?r.push(n):Qt(n)&&((o&Qe)!==0&&this.#n.add(n),Jt(n));var c=n.first;if(c!==null){n=c;continue}}var m=n.parent;for(n=n.next;n===null&&m!==null;)m===i&&(i=null),n=m.next,m=m.parent}}#u(t){for(var r=0;r0){if(gn(),H!==null&&H!==this)return}else this.#e===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#s)t(this);this.#s.clear()}#c(){if(tr.size>1){this.previous.clear();var t=Re,r=!0;for(const n of tr){if(n===this){r=!1;continue}const i=[];for(const[l,s]of this.current){if(n.current.has(l))if(r&&s!==n.current.get(l))n.current.set(l,s);else continue;i.push(l)}if(i.length===0)continue;const o=[...n.current.keys()].filter(l=>!this.current.has(l));if(o.length>0){var a=Le;Le=[];const l=new Set,s=new Map;for(const u of i)_n(u,o,l,s);if(Le.length>0){H=n,n.apply();for(const u of Le)n.#l(u,[],[]);n.deactivate()}Le=a}}H=null,Re=t}this.committed=!0,tr.delete(this)}increment(t){this.#e+=1,t&&(this.#a+=1)}decrement(t){this.#e-=1,t&&(this.#a-=1),!this.#o&&(this.#o=!0,bt(()=>{this.#o=!1,this.is_deferred()?Le.length>0&&this.flush():this.revive()}))}revive(){for(const t of this.#n)this.#r.delete(t),me(t,Ee),Xe(t);for(const t of this.#r)me(t,et),Xe(t);this.flush()}oncommit(t){this.#t.add(t)}ondiscard(t){this.#s.add(t)}settled(){return(this.#i??=nn()).promise}static ensure(){if(H===null){const t=H=new ot;tr.add(H),Ut||bt(()=>{H===t&&t.flush()})}return H}apply(){}}function Ea(e){var t=Ut;Ut=!0;try{for(var r;;){if(xa(),Le.length===0&&(H?.flush(),Le.length===0))return vr=null,r;gn()}}finally{Ut=t}}function gn(){yr=!0;var e=null;try{for(var t=0;Le.length>0;){var r=ot.ensure();if(t++>1e3){var a,n;Sa()}r.process(Le),lt.clear()}}finally{yr=!1,vr=null}}function Sa(){try{ta()}catch(e){Ot(e,vr)}}let He=null;function Wr(e){var t=e.length;if(t!==0){for(var r=0;r0)){lt.clear();for(const n of He){if((n.f&(Je|qe))!==0)continue;const i=[n];let o=n.parent;for(;o!==null;)He.has(o)&&(He.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const s=i[l];(s.f&(Je|qe))===0&&Jt(s)}}He.clear()}}He=null}}function _n(e,t,r,a){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const n of e.reactions){const i=n.f;(i&ge)!==0?_n(n,t,r,a):(i&(Nr|Qe))!==0&&(i&Ee)===0&&bn(n,t,a)&&(me(n,Ee),Xe(n))}}function bn(e,t,r){const a=r.get(e);if(a!==void 0)return a;if(e.deps!==null)for(const n of e.deps){if(t.includes(n))return!0;if((n.f&ge)!==0&&bn(n,t,r))return r.set(n,!0),!0}return r.set(e,!1),!1}function Xe(e){for(var t=vr=e;t.parent!==null;){t=t.parent;var r=t.f;if(yr&&t===ae&&(r&Qe)!==0&&(r&on)===0)return;if((r&(Dt|ut))!==0){if((r&ye)===0)return;t.f^=ye}}Le.push(t)}function $a(e){let t=0,r=St(0),a;return()=>{Ir()&&(p(r),Or(()=>(t===0&&(a=er(()=>e(()=>Wt(r)))),t+=1,()=>{bt(()=>{t-=1,t===0&&(a?.(),a=void 0,Wt(r))})})))}}var Da=wt|Rt|Ar;function ka(e,t,r){new Aa(e,t,r)}class Aa{parent;is_pending=!1;#t;#s=null;#e;#a;#i;#n=null;#r=null;#o=null;#l=null;#u=null;#c=0;#f=0;#m=!1;#v=!1;#h=new Set;#p=new Set;#d=null;#x=$a(()=>(this.#d=St(this.#c),()=>{this.#d=null}));constructor(t,r,a){this.#t=t,this.#e=r,this.#a=a,this.parent=ae.b,this.is_pending=!!this.#e.pending,this.#i=Xt(()=>{ae.b=this;{var n=this.#b();try{this.#n=Ie(()=>a(n))}catch(i){this.error(i)}this.#f>0?this.#_():this.is_pending=!1}return()=>{this.#u?.remove()}},Da)}#w(){try{this.#n=Ie(()=>this.#a(this.#t))}catch(t){this.error(t)}}#E(){const t=this.#e.pending;t&&(this.#r=Ie(()=>t(this.#t)),bt(()=>{var r=this.#b();this.#n=this.#g(()=>(ot.ensure(),Ie(()=>this.#a(r)))),this.#f>0?this.#_():(yt(this.#r,()=>{this.#r=null}),this.is_pending=!1)}))}#b(){var t=this.#t;return this.is_pending&&(this.#u=Ge(),this.#t.before(this.#u),t=this.#u),t}defer_effect(t){pn(t,this.#h,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#e.pending}#g(t){var r=ae,a=B,n=Fe;We(this.#i),ke(this.#i),Tt(this.#i.ctx);try{return t()}catch(i){return mn(i),null}finally{We(r),ke(a),Tt(n)}}#_(){const t=this.#e.pending;this.#n!==null&&(this.#l=document.createDocumentFragment(),this.#l.append(this.#u),Tn(this.#n,this.#l)),this.#r===null&&(this.#r=Ie(()=>t(this.#t)))}#y(t){if(!this.has_pending_snippet()){this.parent&&this.parent.#y(t);return}if(this.#f+=t,this.#f===0){this.is_pending=!1;for(const r of this.#h)me(r,Ee),Xe(r);for(const r of this.#p)me(r,et),Xe(r);this.#h.clear(),this.#p.clear(),this.#r&&yt(this.#r,()=>{this.#r=null}),this.#l&&(this.#t.before(this.#l),this.#l=null)}}update_pending_count(t){this.#y(t),this.#c+=t,!(!this.#d||this.#m)&&(this.#m=!0,bt(()=>{this.#m=!1,this.#d&&Mt(this.#d,this.#c)}))}get_effect_pending(){return this.#x(),p(this.#d)}error(t){var r=this.#e.onerror;let a=this.#e.failed;if(this.#v||!r&&!a)throw t;this.#n&&(Ae(this.#n),this.#n=null),this.#r&&(Ae(this.#r),this.#r=null),this.#o&&(Ae(this.#o),this.#o=null);var n=!1,i=!1;const o=()=>{if(n){ba();return}n=!0,i&&sa(),ot.ensure(),this.#c=0,this.#o!==null&&yt(this.#o,()=>{this.#o=null}),this.is_pending=this.has_pending_snippet(),this.#n=this.#g(()=>(this.#v=!1,Ie(()=>this.#a(this.#t)))),this.#f>0?this.#_():this.is_pending=!1};var l=B;try{ke(null),i=!0,r?.(t,o),i=!1}catch(s){Ot(s,this.#i&&this.#i.parent)}finally{ke(l)}a&&bt(()=>{this.#o=this.#g(()=>{ot.ensure(),this.#v=!0;try{return Ie(()=>{a(this.#t,()=>t,()=>o)})}catch(s){return Ot(s,this.#i.parent),null}finally{this.#v=!1}})})}}function Na(e,t,r,a){const n=mr;var i=e.filter(v=>!v.settled);if(r.length===0&&i.length===0){a(t.map(n));return}var o=H,l=ae,s=Ca(),u=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(v=>v.promise)):null;function c(v){s();try{a(v)}catch(h){(l.f&Je)===0&&Ot(h,l)}o?.deactivate(),xr()}if(r.length===0){u.then(()=>c(t.map(n)));return}function m(){s(),Promise.all(r.map(v=>La(v))).then(v=>c([...t.map(n),...v])).catch(v=>Ot(v,l))}u?u.then(m):m()}function Ca(){var e=ae,t=B,r=Fe,a=H;return function(i=!0){We(e),ke(t),Tt(r),i&&a?.activate()}}function xr(){We(null),ke(null),Tt(null)}function mr(e){var t=ge|Ee,r=B!==null&&(B.f&ge)!==0?B:null;return ae!==null&&(ae.f|=Rt),{ctx:Fe,deps:null,effects:null,equals:un,f:t,fn:e,reactions:null,rv:0,v:he,wv:0,parent:r??ae,ac:null}}function La(e,t,r){let a=ae;a===null&&ea();var n=a.b,i=void 0,o=St(he),l=!B,s=new Map;return za(()=>{var u=nn();i=u.promise;try{Promise.resolve(e()).then(u.resolve,u.reject).then(()=>{c===H&&c.committed&&c.deactivate(),xr()})}catch(h){u.reject(h),xr()}var c=H;if(l){var m=n.is_rendered();n.update_pending_count(1),c.increment(m),s.get(c)?.reject(Lt),s.delete(c),s.set(c,u)}const v=(h,_=void 0)=>{if(c.activate(),_)_!==Lt&&(o.f|=st,Mt(o,_));else{(o.f&st)!==0&&(o.f^=st),Mt(o,h);for(const[b,g]of s){if(s.delete(b),b===c)break;g.reject(Lt)}}l&&(n.update_pending_count(-1),c.decrement(m))};u.promise.then(v,h=>v(null,h||"unknown"))}),Tr(()=>{for(const u of s.values())u.reject(Lt)}),new Promise(u=>{function c(m){function v(){m===i?u(o):c(i)}m.then(v,v)}c(i)})}function I(e){const t=mr(e);return On(t),t}function yn(e){const t=mr(e);return t.equals=dn,t}function xn(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r0&&!En&&Pa()}return t}function Pa(){En=!1;for(const e of wr)(e.f&ye)!==0&&me(e,et),Qt(e)&&Jt(e);wr.clear()}function Ia(e,t=1){var r=p(e),a=t===1?r++:r--;return te(e,r),a}function Wt(e){te(e,e.v+1)}function $n(e,t){var r=e.reactions;if(r!==null)for(var a=r.length,n=0;n{if(xt===i)return l();var s=B,u=xt;ke(null),Gr(i);var c=l();return ke(s),Gr(u),c};return a&&r.set("length",fe(e.length)),new Proxy(e,{defineProperty(l,s,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&na();var c=r.get(s);return c===void 0?c=o(()=>{var m=fe(u.value);return r.set(s,m),m}):te(c,u.value,!0),!0},deleteProperty(l,s){var u=r.get(s);if(u===void 0){if(s in l){const c=o(()=>fe(he));r.set(s,c),Wt(n)}}else te(u,he),Wt(n);return!0},get(l,s,u){if(s===Pt)return e;var c=r.get(s),m=s in l;if(c===void 0&&(!m||qt(l,s)?.writable)&&(c=o(()=>{var h=at(m?l[s]:he),_=fe(h);return _}),r.set(s,c)),c!==void 0){var v=p(c);return v===he?void 0:v}return Reflect.get(l,s,u)},getOwnPropertyDescriptor(l,s){var u=Reflect.getOwnPropertyDescriptor(l,s);if(u&&"value"in u){var c=r.get(s);c&&(u.value=p(c))}else if(u===void 0){var m=r.get(s),v=m?.v;if(m!==void 0&&v!==he)return{enumerable:!0,configurable:!0,value:v,writable:!0}}return u},has(l,s){if(s===Pt)return!0;var u=r.get(s),c=u!==void 0&&u.v!==he||Reflect.has(l,s);if(u!==void 0||ae!==null&&(!c||qt(l,s)?.writable)){u===void 0&&(u=o(()=>{var v=c?at(l[s]):he,h=fe(v);return h}),r.set(s,u));var m=p(u);if(m===he)return!1}return c},set(l,s,u,c){var m=r.get(s),v=s in l;if(a&&s==="length")for(var h=u;hfe(he)),r.set(h+"",_))}if(m===void 0)(!v||qt(l,s)?.writable)&&(m=o(()=>fe(void 0)),te(m,at(u)),r.set(s,m));else{v=m.v!==he;var b=o(()=>at(u));te(m,b)}var g=Reflect.getOwnPropertyDescriptor(l,s);if(g?.set&&g.set.call(c,u),!v){if(a&&typeof s=="string"){var y=r.get("length"),S=Number(s);Number.isInteger(S)&&S>=y.v&&te(y,S+1)}Wt(n)}return!0},ownKeys(l){p(n);var s=Reflect.ownKeys(l).filter(m=>{var v=r.get(m);return v===void 0||v.v!==he});for(var[u,c]of r)c.v!==he&&!(u in l)&&s.push(u);return s},setPrototypeOf(){aa()}})}function Hr(e){try{if(e!==null&&typeof e=="object"&&Pt in e)return e[Pt]}catch{}return e}function Ta(e,t){return Object.is(Hr(e),Hr(t))}var Yr,Dn,kn,An;function Oa(){if(Yr===void 0){Yr=window,Dn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;kn=qt(t,"firstChild").get,An=qt(t,"nextSibling").get,zr(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),zr(r)&&(r.__t=void 0)}}function Ge(e=""){return document.createTextNode(e)}function lr(e){return kn.call(e)}function Zt(e){return An.call(e)}function f(e,t){return lr(e)}function ne(e,t=!1){{var r=lr(e);return r instanceof Comment&&r.data===""?Zt(r):r}}function d(e,t=1,r=!1){let a=e;for(;t--;)a=Zt(a);return a}function Ma(e){e.textContent=""}function Nn(){return!1}let Kr=!1;function Ra(){Kr||(Kr=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function qr(e){var t=B,r=ae;ke(null),We(null);try{return e()}finally{ke(t),We(r)}}function Pr(e,t,r,a=r){e.addEventListener(t,()=>qr(r));const n=e.__on_r;n?e.__on_r=()=>{n(),a(!0)}:e.__on_r=()=>a(!0),Ra()}function Va(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function tt(e,t,r){var a=ae;a!==null&&(a.f&qe)!==0&&(e|=qe);var n={ctx:Fe,deps:null,nodes:null,f:e|Ee|Te,first:null,fn:t,last:null,next:null,parent:a,b:a&&a.b,prev:null,teardown:null,wv:0,ac:null};if(r)try{Jt(n),n.f|=sn}catch(l){throw Ae(n),l}else t!==null&&Xe(n);var i=n;if(r&&i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&(i.f&Rt)===0&&(i=i.first,(e&Qe)!==0&&(e&wt)!==0&&i!==null&&(i.f|=wt)),i!==null&&(i.parent=a,a!==null&&Va(i,a),B!==null&&(B.f&ge)!==0&&(e&Dt)===0)){var o=B;(o.effects??=[]).push(i)}return n}function Ir(){return B!==null&&!Ve}function Tr(e){const t=tt(fr,null,!1);return me(t,ye),t.teardown=e,t}function Fa(e){return tt(sr|Zn,e,!1)}function Ba(e){ot.ensure();const t=tt(Dt|Rt,e,!0);return(r={})=>new Promise(a=>{r.outro?yt(t,()=>{Ae(t),a(void 0)}):(Ae(t),a(void 0))})}function ja(e){return tt(sr,e,!1)}function za(e){return tt(Nr|Rt,e,!0)}function Or(e,t=0){return tt(fr|t,e,!0)}function W(e,t=[],r=[],a=[]){Na(a,t,r,n=>{tt(fr,()=>e(...n.map(p)),!0)})}function Xt(e,t=0){var r=tt(Qe|t,e,!0);return r}function Ie(e){return tt(ut|Rt,e,!0)}function Cn(e){var t=e.teardown;if(t!==null){const r=$t,a=B;Jr(!0),ke(null);try{t.call(null)}finally{Jr(r),ke(a)}}}function Ln(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const n=r.ac;n!==null&&qr(()=>{n.abort(Lt)});var a=r.next;(r.f&Dt)!==0?r.parent=null:Ae(r,t),r=a}}function Ua(e){for(var t=e.first;t!==null;){var r=t.next;(t.f&ut)===0&&Ae(t),t=r}}function Ae(e,t=!0){var r=!1;(t||(e.f&on)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(Wa(e.nodes.start,e.nodes.end),r=!0),Ln(e,t&&!r),ur(e,0),me(e,Je);var a=e.nodes&&e.nodes.t;if(a!==null)for(const i of a)i.stop();Cn(e);var n=e.parent;n!==null&&n.first!==null&&qn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function Wa(e,t){for(;e!==null;){var r=e===t?null:Zt(e);e.remove(),e=r}}function qn(e){var t=e.parent,r=e.prev,a=e.next;r!==null&&(r.next=a),a!==null&&(a.prev=r),t!==null&&(t.first===e&&(t.first=a),t.last===e&&(t.last=r))}function yt(e,t,r=!0){var a=[];Pn(e,a,!0);var n=()=>{r&&Ae(e),t&&t()},i=a.length;if(i>0){var o=()=>--i||n();for(var l of a)l.out(o)}else n()}function Pn(e,t,r){if((e.f&qe)===0){e.f^=qe;var a=e.nodes&&e.nodes.t;if(a!==null)for(const l of a)(l.is_global||r)&&t.push(l);for(var n=e.first;n!==null;){var i=n.next,o=(n.f&wt)!==0||(n.f&ut)!==0&&(e.f&Qe)!==0;Pn(n,t,o?r:!1),n=i}}}function Mr(e){In(e,!0)}function In(e,t){if((e.f&qe)!==0){e.f^=qe,(e.f&ye)===0&&(me(e,Ee),Xe(e));for(var r=e.first;r!==null;){var a=r.next,n=(r.f&wt)!==0||(r.f&ut)!==0;In(r,n?t:!1),r=a}var i=e.nodes&&e.nodes.t;if(i!==null)for(const o of i)(o.is_global||t)&&o.in()}}function Tn(e,t){if(e.nodes)for(var r=e.nodes.start,a=e.nodes.end;r!==null;){var n=r===a?null:Zt(r);t.append(r),r=n}}let ar=!1,$t=!1;function Jr(e){$t=e}let B=null,Ve=!1;function ke(e){B=e}let ae=null;function We(e){ae=e}let Ze=null;function On(e){B!==null&&(Ze===null?Ze=[e]:Ze.push(e))}let $e=null,Ce=0,Pe=null;function Ha(e){Pe=e}let Mn=1,_t=0,xt=_t;function Gr(e){xt=e}function Rn(){return++Mn}function Qt(e){var t=e.f;if((t&Ee)!==0)return!0;if(t&ge&&(e.f&=~Et),(t&et)!==0){for(var r=e.deps,a=r.length,n=0;ne.wv)return!0}(t&Te)!==0&&Re===null&&me(e,ye)}return!1}function Vn(e,t,r=!0){var a=e.reactions;if(a!==null&&!Ze?.includes(e))for(var n=0;n{e.ac.abort(Lt)}),e.ac=null);try{e.f|=br;var c=e.fn,m=c(),v=e.deps;if($e!==null){var h;if(ur(e,Ce),v!==null&&Ce>0)for(v.length=Ce+$e.length,h=0;h<$e.length;h++)v[Ce+h]=$e[h];else e.deps=v=$e;if(Ir()&&(e.f&Te)!==0)for(h=Ce;h{throw g});throw v}}finally{e.__root=t,delete e.currentTarget,ke(c),We(m)}}}function Za(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("",""),t.content}function cr(e,t){var r=ae;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function $(e,t){var r=(t&ha)!==0,a=(t&pa)!==0,n,i=!e.startsWith("");return()=>{n===void 0&&(n=Za(i?e:""+e),r||(n=lr(n)));var o=a||Dn?document.importNode(n,!0):n.cloneNode(!0);if(r){var l=lr(o),s=o.lastChild;cr(l,s)}else cr(o,o);return o}}function Un(e=""){{var t=Ge(e+"");return cr(t,t),t}}function Ue(){var e=document.createDocumentFragment(),t=document.createComment(""),r=Ge();return e.append(t,r),cr(t,r),e}function E(e,t){e!==null&&e.before(t)}function V(e,t){var r=t==null?"":typeof t=="object"?t+"":t;r!==(e.__t??=e.nodeValue)&&(e.__t=r,e.nodeValue=r+"")}function Xa(e,t){return Qa(e,t)}const At=new Map;function Qa(e,{target:t,anchor:r,props:a={},events:n,context:i,intro:o=!0}){Oa();var l=new Set,s=m=>{for(var v=0;v{var m=r??t.appendChild(Ge());return ka(m,{pending:()=>{}},v=>{if(i){Be({});var h=Fe;h.c=i}n&&(a.$$events=n),u=e(v,a)||{},i&&je()}),()=>{for(var v of l){t.removeEventListener(v,rr);var h=At.get(v);--h===0?(document.removeEventListener(v,rr),At.delete(v)):At.set(v,h)}Er.delete(s),m!==r&&m.parentNode?.removeChild(m)}});return ei.set(u,c),u}let ei=new WeakMap;class Rr{anchor;#t=new Map;#s=new Map;#e=new Map;#a=new Set;#i=!0;constructor(t,r=!0){this.anchor=t,this.#i=r}#n=()=>{var t=H;if(this.#t.has(t)){var r=this.#t.get(t),a=this.#s.get(r);if(a)Mr(a),this.#a.delete(r);else{var n=this.#e.get(r);n&&(this.#s.set(r,n.effect),this.#e.delete(r),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),a=n.effect)}for(const[i,o]of this.#t){if(this.#t.delete(i),i===t)break;const l=this.#e.get(o);l&&(Ae(l.effect),this.#e.delete(o))}for(const[i,o]of this.#s){if(i===r||this.#a.has(i))continue;const l=()=>{if(Array.from(this.#t.values()).includes(i)){var u=document.createDocumentFragment();Tn(o,u),u.append(Ge()),this.#e.set(i,{effect:o,fragment:u})}else Ae(o);this.#a.delete(i),this.#s.delete(i)};this.#i||!a?(this.#a.add(i),yt(o,l,!1)):l()}}};#r=t=>{this.#t.delete(t);const r=Array.from(this.#t.values());for(const[a,n]of this.#e)r.includes(a)||(Ae(n.effect),this.#e.delete(a))};ensure(t,r){var a=H,n=Nn();if(r&&!this.#s.has(t)&&!this.#e.has(t))if(n){var i=document.createDocumentFragment(),o=Ge();i.append(o),this.#e.set(t,{effect:Ie(()=>r(o)),fragment:i})}else this.#s.set(t,Ie(()=>r(this.anchor)));if(this.#t.set(a,t),n){for(const[l,s]of this.#s)l===t?a.skipped_effects.delete(s):a.skipped_effects.add(s);for(const[l,s]of this.#e)l===t?a.skipped_effects.delete(s.effect):a.skipped_effects.add(s.effect);a.oncommit(this.#n),a.ondiscard(this.#r)}else this.#n()}}function re(e,t,r=!1){var a=new Rr(e),n=r?wt:0;function i(o,l){a.ensure(o,l)}Xt(()=>{var o=!1;t((l,s=!0)=>{o=!0,i(s,l)}),o||i(!1,null)},n)}function ti(e,t,r){var a=new Rr(e);Xt(()=>{var n=t();a.ensure(n,r)})}function Vr(e,t){return t}function ri(e,t,r){for(var a=[],n=t.length,i,o=t.length,l=0;l{if(i){if(i.pending.delete(m),i.done.add(m),i.pending.size===0){var v=e.outrogroups;Sr(dr(i.done)),v.delete(i),v.size===0&&(e.outrogroups=null)}}else o-=1},!1)}if(o===0){var s=a.length===0&&r!==null;if(s){var u=r,c=u.parentNode;Ma(c),c.append(u),e.items.clear()}Sr(t,!s)}else i={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(i)}function Sr(e,t=!0){for(var r=0;r{var y=r();return kr(y)?y:y==null?[]:dr(y)}),v,h=!0;function _(){g.fallback=c,ni(g,v,o,t,a),c!==null&&(v.length===0?(c.f&Ye)===0?Mr(c):(c.f^=Ye,jt(c,null,o)):yt(c,()=>{c=null}))}var b=Xt(()=>{v=p(m);for(var y=v.length,S=new Set,L=H,C=Nn(),D=0;Di(o)):(c=Ie(()=>i(Xr??=Ge())),c.f|=Ye)),!h)if(C){for(const[N,T]of l)S.has(N)||L.skipped_effects.add(T.e);L.oncommit(_),L.ondiscard(()=>{})}else _();p(m)}),g={effect:b,items:l,outrogroups:null,fallback:c};h=!1}function ni(e,t,r,a,n){var i=(a&ua)!==0,o=t.length,l=e.items,s=e.effect.first,u,c=null,m,v=[],h=[],_,b,g,y;if(i)for(y=0;y0){var N=(a&ln)!==0&&o===0?r:null;if(i){for(y=0;y{if(m!==void 0)for(g of m)g.nodes?.a?.apply()})}function ai(e,t,r,a,n,i,o,l){var s=(o&oa)!==0?(o&ca)===0?Sn(r,!1,!1):St(r):null,u=(o&la)!==0?St(n):null;return{v:s,i:u,e:Ie(()=>(i(t,s??r,u??n,l),()=>{e.delete(a)}))}}function jt(e,t,r){if(e.nodes)for(var a=e.nodes.start,n=e.nodes.end,i=t&&(t.f&Ye)===0?t.nodes.start:r;a!==null;){var o=Zt(a);if(i.before(a),a===n)return;a=o}}function nt(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}function It(e,t,...r){var a=new Rr(e);Xt(()=>{const n=t()??null;a.ensure(n,n&&(i=>n(i,...r)))},wt)}function ii(e,t,r){var a=e==null?"":""+e;return a===""?null:a}function Oe(e,t,r,a,n,i){var o=e.__className;if(o!==r||o===void 0){var l=ii(r);l==null?e.removeAttribute("class"):t?e.className=l:e.setAttribute("class",l),e.__className=r}return i}function Wn(e,t,r=!1){if(e.multiple){if(t==null)return;if(!kr(t))return _a();for(var a of e.options)a.selected=t.includes(Ht(a));return}for(a of e.options){var n=Ht(a);if(Ta(n,t)){a.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function si(e){var t=new MutationObserver(()=>{Wn(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Tr(()=>{t.disconnect()})}function oi(e,t,r=t){var a=new WeakSet,n=!0;Pr(e,"change",i=>{var o=i?"[selected]":":checked",l;if(e.multiple)l=[].map.call(e.querySelectorAll(o),Ht);else{var s=e.querySelector(o)??e.querySelector("option:not([disabled])");l=s&&Ht(s)}r(l),H!==null&&a.add(H)}),ja(()=>{var i=t();if(e===document.activeElement){var o=or??H;if(a.has(o))return}if(Wn(e,i,n),n&&i===void 0){var l=e.querySelector(":checked");l!==null&&(i=Ht(l),r(i))}e.__value=i,n=!1}),si(e)}function Ht(e){return"__value"in e?e.__value:e.value}const li=Symbol("is custom element"),ui=Symbol("is html");function pe(e,t,r,a){var n=ci(e);n[t]!==(n[t]=r)&&(t==="loading"&&(e[Qn]=r),r==null?e.removeAttribute(t):typeof r!="string"&&di(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function ci(e){return e.__attributes??={[li]:e.nodeName.includes("-"),[ui]:e.namespaceURI===ga}}var Qr=new Map;function di(e){var t=e.getAttribute("is")||e.nodeName,r=Qr.get(t);if(r)return r;Qr.set(t,r=[]);for(var a,n=e,i=Element.prototype;i!==n;){a=Kn(n);for(var o in a)a[o].set&&r.push(o);n=tn(n)}return r}function Gt(e,t,r=t){var a=new WeakSet;Pr(e,"input",async n=>{var i=n?e.defaultValue:e.value;if(i=pr(e)?gr(i):i,r(i),H!==null&&a.add(H),await Ka(),i!==(i=t())){var o=e.selectionStart,l=e.selectionEnd,s=e.value.length;if(e.value=i??"",l!==null){var u=e.value.length;o===l&&l===s&&u>s?(e.selectionStart=u,e.selectionEnd=u):(e.selectionStart=o,e.selectionEnd=Math.min(l,u))}}}),er(t)==null&&e.value&&(r(pr(e)?gr(e.value):e.value),H!==null&&a.add(H)),Or(()=>{var n=t();if(e===document.activeElement){var i=or??H;if(a.has(i))return}pr(e)&&n===gr(e.value)||e.type==="date"&&!n&&!e.value||n!==e.value&&(e.value=n??"")})}function ir(e,t,r=t){Pr(e,"change",a=>{var n=a?e.defaultChecked:e.checked;r(n)}),er(t)==null&&r(e.checked),Or(()=>{var a=t();e.checked=!!a})}function pr(e){var t=e.type;return t==="number"||t==="range"}function gr(e){return e===""?null:+e}function Br(e,t,r){if(e==null)return t(void 0),r&&r(void 0),it;const a=er(()=>e.subscribe(t,r));return a.unsubscribe?()=>a.unsubscribe():a}const Nt=[];function fi(e,t){return{subscribe:Ct(e,t).subscribe}}function Ct(e,t=it){let r=null;const a=new Set;function n(l){if(cn(e,l)&&(e=l,r)){const s=!Nt.length;for(const u of a)u[1](),Nt.push(u,e);if(s){for(let u=0;u{a.delete(u),a.size===0&&r&&(r(),r=null)}}return{set:n,update:i,subscribe:o}}function vi(e,t,r){const a=!Array.isArray(e),n=a?[e]:e;if(!n.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return fi(r,(o,l)=>{let s=!1;const u=[];let c=0,m=it;const v=()=>{if(c)return;m();const _=t(a?u[0]:u,o,l);i?o(_):m=typeof _=="function"?_:it},h=n.map((_,b)=>Br(_,g=>{u[b]=g,c&=~(1<{c|=1<t=r)(),t}let nr=!1,$r=Symbol();function Z(e,t,r){const a=r[t]??={store:null,source:Sn(void 0),unsubscribe:it};if(a.store!==e&&!($r in r))if(a.unsubscribe(),a.store=e??null,e==null)a.source.v=void 0,a.unsubscribe=it;else{var n=!0;a.unsubscribe=Br(e,i=>{n?a.source.v=i:te(a.source,i)}),n=!1}return e&&$r in r?zt(e):p(a.source)}function ct(){const e={};function t(){Tr(()=>{for(var r in e)e[r].unsubscribe();en(e,$r,{enumerable:!1,value:!0})})}return[e,t]}function mi(e){var t=nr;try{return nr=!1,[e(),nr]}finally{nr=t}}function De(e,t,r,a){var n=(r&va)!==0,i=(r&ma)!==0,o=a,l=!0,s=()=>(l&&(l=!1,o=i?er(a):a),o),u;if(n){var c=Pt in e||Xn in e;u=qt(e,t)?.set??(c&&t in e?S=>e[t]=S:void 0)}var m,v=!1;n?[m,v]=mi(()=>e[t]):m=e[t],m===void 0&&a!==void 0&&(m=s(),u&&(ra(),u(m)));var h;if(h=()=>{var S=e[t];return S===void 0?s():(l=!0,S)},(r&fa)===0)return h;if(u){var _=e.$$legacy;return(function(S,L){return arguments.length>0?((!L||_||v)&&u(L?h():S),S):h()})}var b=!1,g=((r&da)!==0?mr:yn)(()=>(b=!1,h()));n&&p(g);var y=ae;return(function(S,L){if(arguments.length>0){const C=L?p(g):n?at(S):S;return te(g,C),b=!0,o!==void 0&&(o=C),S}return $t&&b||(y.f&Je)!==0?g.v:p(g)})}const hi="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(hi);const pi=e=>typeof e=="object"&&e!==null&&!(e instanceof Date)&&!(e instanceof Map)&&!(e instanceof Set)&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!(e instanceof RegExp)&&!(e instanceof Error)&&!(e instanceof Promise),gi=(e,t)=>{const r=(n,i)=>new Proxy(n,{get(o,l){const s=o[l];if(pi(s)){const u=Number.isInteger(Number(l))?"":String(l),c=u?i?`${i}.${u}`:u:i;return r(s,c)}return s},set(o,l,s){const u=o[l];if(u!==s){o[l]=s;const c=Number.isInteger(Number(l))?"":String(l),m=c?i?`${i}.${c}`:c:i;t(a,m,s,u)}return!0}}),a=r(e,"");return a},Hn=e=>Object.values(e).some(t=>typeof t=="string"?!!t:Hn(t)),_i=e=>!!e&&Hn(e),pt=e=>{if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return e.map(r=>pt(r));const t={};for(const r of Object.keys(e))t[r]=pt(e[r]);return t},bi={resetDirtyOnAction:!0,debounceValidation:0,allowConcurrentActions:!1,persistActionError:!1};function dt(e,t,r){const a={...bi,...r},{validator:n,effect:i}=t??{},o=Ct(),l=vi(o,_i),s=Ct(!1),u=Ct(!1),c=Ct(),m=Ct([{title:"Initial",data:pt(e)}]),v=at(e),h=(k,x=!0)=>{const w=zt(m),N={title:k,data:pt(v)},T=w.at(-1);x&&T&&T.title===k?m.set([...w.slice(0,-1),N]):m.set([...w,N])};let _=!1,b;const g=()=>{if(n)if(a.debounceValidation>0)clearTimeout(b),b=setTimeout(()=>{o.set(n(y))},a.debounceValidation);else{if(_)return;_=!0,queueMicrotask(()=>{o.set(n(y)),_=!1})}},y=gi(v,(k,x,w,N)=>{if(a.persistActionError||c.set(void 0),s.set(!0),i?.({snapshot:h,target:k,property:x,currentValue:w,oldValue:N})instanceof Promise)throw new Error("svstate: effect callback must be synchronous. Use action for async operations.");g()});return n&&o.set(n(y)),{data:y,execute:async k=>{if(!(!a.allowConcurrentActions&&zt(u))){c.set(void 0),u.set(!0);try{await t?.action?.(k),a.resetDirtyOnAction&&s.set(!1),m.set([{title:"Initial",data:pt(v)}]),await t?.actionCompleted?.()}catch(x){await t?.actionCompleted?.(x),c.set(x instanceof Error?x:void 0)}finally{u.set(!1)}}},state:{errors:o,hasErrors:l,isDirty:s,actionInProgress:u,actionError:c,snapshots:m},rollback:(k=1)=>{const x=zt(m);if(x.length<=1)return;const w=Math.max(0,x.length-1-k),N=x[w];N&&(Object.assign(v,pt(N.data)),m.set(x.slice(0,w+1)),n&&o.set(n(y)))},reset:()=>{const x=zt(m)[0];x&&(Object.assign(v,pt(x.data)),m.set([x]),n&&o.set(n(y)))}}}const yi={trim:e=>e.trim(),normalize:e=>e.replaceAll(/\s{2,}/g," "),upper:e=>e.toUpperCase(),lower:e=>e.toLowerCase()};function Y(e,...t){let r="";const a=o=>{r||(r=o)},n=t.reduce((o,l)=>yi[l](o),e),i={required(){return!r&&!n&&a("Required"),i},noSpace(){return!r&&n.includes(" ")&&a("No space allowed"),i},minLength(o){return!r&&n.lengtho&&a(`Max length ${o}`),i},uppercase(){return!r&&n!==n.toUpperCase()&&a("Uppercase only"),i},lowercase(){return!r&&n!==n.toLowerCase()&&a("Lowercase only"),i},startsWith(o){if(r)return i;const l=Array.isArray(o)?o:[o];return n&&!l.some(s=>n.startsWith(s))&&a(`Must start with ${l.join(", ")}`),i},regexp(o,l){return!r&&n&&!o.test(n)&&a(l??"Not allowed chars"),i},inArray(o){if(r)return i;const l=Array.isArray(o)?o:Object.keys(o);return n&&!l.includes(n)&&a(`Must be one of: ${l.join(", ")}`),i},email(){return!r&&n&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)&&a("Invalid email format"),i},website(o="optional"){if(r||!n||o==="optional")return i;const l=/^https?:\/\//.test(n);return o==="required"&&!l?a("Must start with http:// or https://"):o==="forbidden"&&l&&a("Must not start with http:// or https://"),i},endsWith(o){if(r||!n)return i;const l=Array.isArray(o)?o:[o];return l.some(s=>n.endsWith(s))||a(`Must end with ${l.join(", ")}`),i},contains(o){return!r&&n&&!n.includes(o)&&a(`Must contain "${o}"`),i},alphanumeric(){return!r&&n&&!/^[\dA-Za-z]+$/.test(n)&&a("Only letters and numbers allowed"),i},numeric(){return!r&&n&&!/^\d+$/.test(n)&&a("Only numbers allowed"),i},getError(){return r}};return i}function Dr(e){let t="";const r=n=>{t||(t=n)},a={required(){return!t&&Number.isNaN(e)&&r("Required"),a},min(n){return!t&&en&&r(`Maximum ${n}`),a},between(n,i){return!t&&(ei)&&r(`Must be between ${n} and ${i}`),a},integer(){return!t&&!Number.isInteger(e)&&r("Must be an integer"),a},positive(){return!t&&e<=0&&r("Must be positive"),a},negative(){return!t&&e>=0&&r("Must be negative"),a},nonNegative(){return!t&&e<0&&r("Must be non-negative"),a},multipleOf(n){return!t&&e%n!==0&&r(`Must be a multiple of ${n}`),a},decimal(n){return t||Number.isNaN(e)||(String(e).split(".")[1]?.length??0)>n&&r(`Maximum ${n} decimal places`),a},percentage(){return!t&&(e<0||e>100)&&r("Must be between 0 and 100"),a},getError(){return t}};return a}function xi(e){let t="";const r=n=>{t||(t=n)},a={required(){return!t&&e.length===0&&r("Required"),a},minLength(n){return!t&&e.lengthn&&r(`Maximum ${n} items`),a},unique(){if(t)return a;const n=new Set;for(const i of e){const o=typeof i=="object"?JSON.stringify(i):String(i);if(n.has(o)){r("Items must be unique");break}n.add(o)}return a},getError(){return t}};return a}var wi=$('
      '),Ei=$('
       
      ');function ve(e,t){var r=Ei(),a=f(r);{var n=l=>{var s=wi(),u=f(s);W(()=>V(u,t.title)),E(l,s)};re(a,l=>{t.title&&l(n)})}var i=d(a,2),o=f(i);W(()=>V(o,t.code)),E(e,r)}var Si=$('
      State Object
       
      State Info
      isDirty:
      hasErrors:
      Errors
       
      ');function ft(e,t){let r=De(t,"width",3,"xl:w-80");var a=Si(),n=f(a),i=d(f(n),2),o=f(i),l=d(n,2),s=d(f(l),2),u=f(s),c=d(f(u)),m=d(u,2),v=d(f(m)),h=d(l,2),_=d(f(h),2),b=f(_),g=d(h,2);g.__click=function(...y){t.onFill?.apply(this,y)},W((y,S)=>{Oe(a,1,`w-full ${r()??""} flex-shrink-0 space-y-4`),V(o,y),V(c,` ${t.isDirty??""}`),V(v,` ${t.hasErrors??""}`),V(b,S)},[()=>JSON.stringify(t.data,void 0,2),()=>JSON.stringify(t.errors,void 0,2)]),E(e,a)}rt(["click"]);var $i=$('

      ');function Yt(e,t){var r=Ue(),a=ne(r);{var n=i=>{var o=$i(),l=f(o);W(()=>V(l,t.error)),E(i,o)};re(a,i=>{t.error&&i(n)})}E(e,r)}var Di=$("
      ");function ee(e,t){Be(t,!0);let r=De(t,"type",3,"text"),a=De(t,"placeholder",3,""),n=De(t,"value",15),i=De(t,"error",3,""),o=De(t,"required",3,!0),l=De(t,"disabled",3,!1),s=De(t,"variant",3,"default");const u=I(()=>s()==="nested"?"bg-white":"bg-gray-50");var c=Di(),m=f(c),v=f(m),h=d(m,2),_=d(h,2);{let b=I(()=>i()??"");Yt(_,{get error(){return p(b)}})}W(()=>{Oe(m,1,`mb-2 block text-sm text-gray-900 ${o()?"font-bold":""}`),pe(m,"for",t.id),V(v,t.label),pe(h,"id",t.id),Oe(h,1,`block w-full rounded-lg border p-2.5 text-sm ${i()?"border-red-500 bg-red-50 text-red-900 placeholder-red-400 focus:border-red-500 focus:ring-red-500":`border-gray-300 ${p(u)} text-gray-900 focus:border-blue-500 focus:ring-blue-500`} ${l()?"cursor-not-allowed opacity-50":""}`),h.disabled=l(),pe(h,"max",t.max),pe(h,"min",t.min),pe(h,"placeholder",a()),pe(h,"step",t.step),pe(h,"type",r())}),Gt(h,n),E(e,c),je()}var ki=$('

      '),Ai=$('
      '),Ni=$('
      ',1);function vt(e,t){var r=Ni(),a=ne(r),n=f(a),i=f(n),o=f(i),l=d(i,2);{var s=_=>{var b=ki(),g=f(b);W(()=>V(g,t.description)),E(_,b)},u=_=>{var b=Ai();E(_,b)};re(l,_=>{t.description?_(s):_(u,!1)})}var c=d(l,2);It(c,()=>t.main);var m=d(n,2);It(m,()=>t.sidebar);var v=d(a,2);{var h=_=>{var b=Ue(),g=ne(b);It(g,()=>t.sourceCode),E(_,b)};re(v,_=>{t.sourceCode&&_(h)})}W(()=>V(o,t.title)),E(e,r)}var Ci=$('
      '),Li=$('
      ');function mt(e,t){let r=fe(!1);var a=Li(),n=f(a);n.__click=()=>te(r,!p(r));var i=d(f(n),2),o=d(n,2);{var l=s=>{var u=Ci(),c=f(u);It(c,()=>t.children),E(s,u)};re(o,s=>{p(r)&&s(l)})}W(()=>{Oe(n,1,`flex w-full cursor-pointer items-center justify-between px-4 py-3 text-left text-sm font-medium text-gray-900 hover:bg-gray-50 ${p(r)?"border-b border-gray-200":""}`),Oe(i,0,`h-5 w-5 transform transition-transform ${p(r)?"rotate-180":""}`)}),E(e,a)}rt(["click"]);var qi=$('
      ');function ht(e,t){var r=qi(),a=f(r),n=f(a),i=d(a,2),o=f(i);W(()=>{Oe(a,1,`rounded px-2.5 py-0.5 text-xs font-medium ${t.hasErrors?"bg-red-100 text-red-800":"bg-green-100 text-green-800"}`),V(n,t.hasErrors?"Has Errors":"Valid"),Oe(i,1,`rounded px-2.5 py-0.5 text-xs font-medium ${t.isDirty?"bg-yellow-100 text-yellow-800":"bg-gray-100 text-gray-800"}`),V(o,t.isDirty?"Modified":"Clean")}),E(e,r)}const ce=()=>Math.random().toString(36).slice(2,8),Ke=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;var Pi=$('
      '),Ii=$('
      '),Ti=$(' Submitting...'),Oi=$('
      ',1),Mi=$('
      Action State
      actionInProgress:
      actionError:
      '),Ri=$(" ",1);function Vi(e,t){Be(t,!0);const r=()=>Z(b,"$hasErrors",l),a=()=>Z(g,"$isDirty",l),n=()=>Z(y,"$actionInProgress",l),i=()=>Z(_,"$errors",l),o=()=>Z(S,"$actionError",l),[l,s]=ct(),u={title:`Task ${ce()}`,description:`This is a sample task description with ID ${ce()}`};let c=fe(!1),m=fe(void 0);const{data:v,execute:h,state:{errors:_,hasErrors:b,isDirty:g,actionInProgress:y,actionError:S}}=dt(u,{validator:w=>({title:Y(w.title,"trim").required().minLength(3).maxLength(50).getError(),description:Y(w.description,"trim").required().minLength(10).maxLength(200).getError()}),action:async()=>{const w=Ke(100,1e3);if(await new Promise(N=>setTimeout(N,w)),p(c))throw new Error(`Simulated server error after ${w}ms`);te(m,`Submitted successfully in ${w}ms!`)},actionCompleted:w=>{w&&te(m,void 0)}}),L=()=>{v.title=`Task ${ce()}`,v.description=`This is a sample task description with ID ${ce()}`},C=()=>{te(m,void 0),h()},D=`const { data, execute, state: { errors, hasErrors, isDirty, actionInProgress, actionError } } = - createSvState(sourceData, { - validator: (source) => ({ - title: stringValidator(source.title, 'trim').required().minLength(3).maxLength(50).getError(), - description: stringValidator(source.description, 'trim').required().minLength(10).getError() - }), - action: async () => { - // Simulate API call with 100-1000ms delay - const delay = randomInt(100, 1000); - await new Promise((resolve) => setTimeout(resolve, delay)); - - if (shouldFail) { - throw new Error('Simulated server error'); - } - }, - actionCompleted: (error) => { - // Called after action completes (success or failure) - console.log(error ? 'Action failed' : 'Action succeeded'); - } - });`,k=`// Execute the action - - -// With parameters (if action accepts them) -execute({ userId: 123 });`,x=`// Display action error -{#if $actionError} -
      - {$actionError.message} -
      -{/if} - -// Check if action is in progress -{#if $actionInProgress} -
      Submitting...
      -{/if}`;vt(e,{description:"Demonstrates async action execution with loading states and error handling.",title:"Action Demo",main:O=>{var q=Oi(),ie=ne(q);ht(ie,{get hasErrors(){return r()},get isDirty(){return a()}});var M=d(ie,2),P=f(M),F=f(P),X=d(M,2),oe=f(X);{let G=I(()=>i()?.title);ee(oe,{id:"title",get disabled(){return n()},get error(){return p(G)},label:"Title",placeholder:"Enter task title",get value(){return v.title},set value(se){v.title=se}})}var le=d(oe,2);{let G=I(()=>i()?.description);ee(le,{id:"description",get disabled(){return n()},get error(){return p(G)},label:"Description",placeholder:"Enter task description (min 10 characters)",get value(){return v.description},set value(se){v.description=se}})}var j=d(le,2),z=f(j),K=d(X,2);{var R=G=>{var se=Pi(),Se=f(se),we=d(f(Se),2),Me=f(we);W(()=>V(Me,o().message)),E(G,se)};re(K,G=>{o()&&G(R)})}var A=d(K,2);{var J=G=>{var se=Ii(),Se=f(se),we=d(f(Se),2),Me=f(we);W(()=>V(Me,p(m))),E(G,se)};re(A,G=>{p(m)&&G(J)})}var xe=d(A,2),Q=f(xe);Q.__click=C;var ue=f(Q);{var _e=G=>{var se=Ti();E(G,se)},Ne=G=>{var se=Un("Submit");E(G,se)};re(ue,G=>{n()?G(_e):G(Ne,!1)})}W(()=>{Oe(P,1,`rounded px-2.5 py-0.5 text-xs font-medium ${n()?"bg-blue-100 text-blue-800":"bg-gray-100 text-gray-800"}`),V(F,n()?"In Progress":"Idle"),z.disabled=n(),Q.disabled=r()||n()}),ir(z,()=>p(c),G=>te(c,G)),E(O,q)},sidebar:O=>{var q=Mi(),ie=f(q);ft(ie,{get data(){return v},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return a()},onFill:L});var M=d(ie,2),P=d(f(M),2),F=f(P),X=d(f(F)),oe=d(F,2),le=d(f(oe));W(()=>{V(X,` ${n()??""}`),V(le,` ${o()?.message??"none"??""}`)}),E(O,q)},sourceCode:O=>{mt(O,{children:(q,ie)=>{var M=Ri(),P=ne(M);ve(P,{code:D,title:"State Setup with Action"});var F=d(P,2);ve(F,{code:k,title:"Execute Action"});var X=d(F,2);ve(X,{code:x,title:"Error & Loading States"}),E(q,M)}})}}),je(),s()}rt(["click"]);var Fi=$('
      ');function Bi(e,t){let r=De(t,"label",3,"Item");var a=Fi(),n=f(a),i=f(n),o=f(i),l=d(i,2);l.__click=function(...u){t.onRemove?.apply(this,u)};var s=d(n,2);It(s,()=>t.children),W(()=>V(o,`${r()??""} #${t.index+1}`)),E(e,a)}rt(["click"]);var ji=$('

      ');function zi(e,t){var r=ji(),a=f(r),n=f(a);W(()=>V(n,t.message)),E(e,r)}var Ui=$('
      '),Wi=$('
      '),Hi=$('
      '),Yi=$('
      Contacts
      ',1),Ki=$(" ",1);function Ji(e,t){Be(t,!0);const r=()=>Z(c,"$hasErrors",i),a=()=>Z(m,"$isDirty",i),n=()=>Z(u,"$errors",i),[i,o]=ct(),l={listName:"",items:[]},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=dt(l,{validator:y=>({listName:Y(y.listName,"trim").required().minLength(2).getError(),items:xi(y.items).required().minLength(1).getError(),...Object.fromEntries(y.items.map((S,L)=>[`item_${L}`,{name:Y(S.name,"trim").required().minLength(2).getError(),email:Y(S.email,"trim").required().email().getError()}]))})}),v=()=>{s.items=[...s.items,{name:"",email:""}]},h=y=>{s.items=s.items.filter((S,L)=>L!==y)},_=()=>{s.listName=`Contact List ${ce()}`,s.items=[{name:"John Doe",email:"john@example.com"},{name:"Jane Smith",email:"jane@example.com"},{name:"Bob Wilson",email:"bob@example.com"}]},b=`const sourceData = { - listName: '', - items: [] as { name: string; email: string }[] -}; - -const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - listName: stringValidator(source.listName, 'trim').required().minLength(2).getError(), - items: arrayValidator(source.items).required().minLength(1).getError(), - // Per-item validation using indexed keys - ...Object.fromEntries( - source.items.map((item, index) => [ - \`item_\${index}\`, - { - name: stringValidator(item.name, 'trim').required().minLength(2).getError(), - email: stringValidator(item.email, 'trim').required().email().getError() - } - ]) - ) - }) -});`,g=`// Define type for item errors -type ItemErrors = Record; - -{#each data.items as item, index} - - - - - -{/each}`;vt(e,{description:"Shows how to validate dynamic arrays with per-item validation using indexed error keys.",title:"Array Property Demo",main:C=>{var D=Yi(),k=ne(D);ht(k,{get hasErrors(){return r()},get isDirty(){return a()}});var x=d(k,2),w=f(x);{let j=I(()=>n()?.listName);ee(w,{id:"listName",get error(){return p(j)},label:"List Name",placeholder:"Enter list name",get value(){return s.listName},set value(z){s.listName=z}})}var N=d(w,2),T=f(N),O=f(T),q=d(f(O)),ie=f(q),M=d(O,2);M.__click=v;var P=d(T,2);{var F=j=>{var z=Ui(),K=f(z);Yt(K,{get error(){return n().items}}),E(j,z)};re(P,j=>{n()?.items&&j(F)})}var X=d(P,2);{var oe=j=>{zi(j,{message:'No contacts yet. Click "Add Contact" to get started.'})},le=j=>{var z=Hi();Fr(z,21,()=>s.items,Vr,(K,R,A)=>{Bi(K,{index:A,label:"Contact",onRemove:()=>h(A),children:(J,xe)=>{var Q=Wi(),ue=f(Q),_e=f(ue);pe(_e,"for",`item-name-${A}`);var Ne=d(_e,2);pe(Ne,"id",`item-name-${A}`);var G=d(Ne,2);{let be=I(()=>n()?.[`item_${A}`]?.name??"");Yt(G,{get error(){return p(be)}})}var se=d(ue,2),Se=f(se);pe(Se,"for",`item-email-${A}`);var we=d(Se,2);pe(we,"id",`item-email-${A}`);var Me=d(we,2);{let be=I(()=>n()?.[`item_${A}`]?.email??"");Yt(Me,{get error(){return p(be)}})}W(()=>{Oe(Ne,1,`block w-full rounded-lg border p-2 text-sm ${n()?.[`item_${A}`]?.name?"border-red-500 bg-red-50 text-red-900 placeholder-red-400":"border-gray-300 bg-white text-gray-900"}`),Oe(we,1,`block w-full rounded-lg border p-2 text-sm ${n()?.[`item_${A}`]?.email?"border-red-500 bg-red-50 text-red-900 placeholder-red-400":"border-gray-300 bg-white text-gray-900"}`)}),Gt(Ne,()=>p(R).name,be=>p(R).name=be),Gt(we,()=>p(R).email,be=>p(R).email=be),E(J,Q)},$$slots:{default:!0}})}),E(j,z)};re(X,j=>{s.items.length===0?j(oe):j(le,!1)})}W(()=>V(ie,`${s.items.length??""} items`)),E(C,D)},sidebar:C=>{ft(C,{get data(){return s},get errors(){return n()},get hasErrors(){return r()},get isDirty(){return a()},onFill:_,width:"xl:w-96"})},sourceCode:C=>{mt(C,{children:(D,k)=>{var x=Ki(),w=ne(x);ve(w,{code:b,title:"State Setup with Array Item Validation"});var N=d(w,2);ve(N,{code:g,title:"Array Form Binding Examples"}),E(D,x)}})}}),je(),o()}rt(["click"]);var Gi=$("
      ");function jr(e,t){Be(t,!0);let r=De(t,"placeholder",3,""),a=De(t,"value",15),n=De(t,"error",3,""),i=De(t,"required",3,!1),o=De(t,"rows",3,3);var l=Gi(),s=f(l),u=f(s),c=d(s,2),m=d(c,2);{let v=I(()=>n()??"");Yt(m,{get error(){return p(v)}})}W(()=>{Oe(s,1,`mb-2 block text-sm text-gray-900 ${i()?"font-bold":""}`),pe(s,"for",t.id),V(u,t.label),pe(c,"id",t.id),Oe(c,1,`block w-full rounded-lg border p-2.5 text-sm ${n()?"border-red-500 bg-red-50 text-red-900 placeholder-red-400 focus:border-red-500 focus:ring-red-500":"border-gray-300 bg-gray-50 text-gray-900 focus:border-blue-500 focus:ring-blue-500"}`),pe(c,"placeholder",r()),pe(c,"rows",o())}),Gt(c,a),E(e,l),je()}var Zi=$('
      ',1),Xi=$(" ",1);function Qi(e,t){Be(t,!0);const r=()=>Z(c,"$hasErrors",i),a=()=>Z(m,"$isDirty",i),n=()=>Z(u,"$errors",i),[i,o]=ct(),l={username:"",email:"",age:0,bio:"",website:""},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=dt(l,{validator:b=>({username:Y(b.username,"trim").required().minLength(3).maxLength(20).noSpace().getError(),email:Y(b.email,"trim").required().email().getError(),age:Dr(b.age).required().min(18).max(120).integer().getError(),bio:Y(b.bio).maxLength(200).getError(),website:Y(b.website,"trim").website("required").getError()})}),v=()=>{s.username=`user${ce()}`,s.email=`${ce()}@example.com`,s.age=Ke(18,65),s.bio="Hello, I am a demo user!",s.website=`https://${ce()}.com`},h=`const sourceData = { - username: '', - email: '', - age: 0, - bio: '', - website: '' -}; - -const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - username: stringValidator(source.username, 'trim').required().minLength(3).maxLength(20).noSpace().getError(), - email: stringValidator(source.email, 'trim').required().email().getError(), - age: numberValidator(source.age).required().min(18).max(120).integer().getError(), - bio: stringValidator(source.bio).maxLength(200).getError(), - website: stringValidator(source.website, 'trim').website('required').getError() - }) -});`,_=` -`;vt(e,{description:"Demonstrates form validation with string, number, and email validators using the fluent API.",title:"Basic Validation Demo",main:S=>{var L=Zi(),C=ne(L);ht(C,{get hasErrors(){return r()},get isDirty(){return a()}});var D=d(C,2),k=f(D);{let O=I(()=>n()?.username);ee(k,{id:"username",get error(){return p(O)},label:"Username",placeholder:"Enter username",get value(){return s.username},set value(q){s.username=q}})}var x=d(k,2);{let O=I(()=>n()?.email);ee(x,{id:"email",get error(){return p(O)},label:"Email",placeholder:"Enter email",type:"email",get value(){return s.email},set value(q){s.email=q}})}var w=d(x,2);{let O=I(()=>n()?.age);ee(w,{id:"age",get error(){return p(O)},label:"Age",placeholder:"Enter age",type:"number",get value(){return s.age},set value(q){s.age=q}})}var N=d(w,2);{let O=I(()=>n()?.bio);jr(N,{id:"bio",get error(){return p(O)},label:"Bio",placeholder:"Tell us about yourself",get value(){return s.bio},set value(q){s.bio=q}})}var T=d(N,2);{let O=I(()=>n()?.website);ee(T,{id:"website",get error(){return p(O)},label:"Website",placeholder:"https://example.com",required:!1,get value(){return s.website},set value(q){s.website=q}})}E(S,L)},sidebar:S=>{ft(S,{get data(){return s},get errors(){return n()},get hasErrors(){return r()},get isDirty(){return a()},onFill:v})},sourceCode:S=>{mt(S,{children:(L,C)=>{var D=Xi(),k=ne(D);ve(k,{code:h,title:"State Setup"});var x=d(k,2);ve(x,{code:_,title:"Form Binding Example"}),E(L,D)}})}}),je(),o()}var es=$(' '),ts=$('
      ');function Kt(e,t){var r=ts(),a=f(r),n=d(a);{var i=o=>{var l=es(),s=f(l);W(()=>V(s,`(${t.subtitle??""})`)),E(o,l)};re(n,o=>{t.subtitle&&o(i)})}W(()=>V(a,`${t.title??""} `)),E(e,r)}var rs=$('
      Subtotal:
      Tax (8%):
      Total:
      ',1),ns=$(" ",1);function as(e,t){Be(t,!0);const r=()=>Z(m,"$hasErrors",i),a=()=>Z(v,"$isDirty",i),n=()=>Z(c,"$errors",i),[i,o]=ct(),l=.08,s={productName:`Widget ${ce()}`,item:{unitPrice:0,quantity:1},subtotal:0,tax:0,total:0},{data:u,state:{errors:c,hasErrors:m,isDirty:v}}=dt(s,{validator:y=>({productName:Y(y.productName,"trim").required().minLength(2).getError(),item:{unitPrice:Dr(y.item.unitPrice).required().positive().getError(),quantity:Dr(y.item.quantity).required().integer().min(1).max(100).getError()}}),effect:({property:y})=>{(y==="item.unitPrice"||y==="item.quantity")&&(u.subtotal=u.item.unitPrice*u.item.quantity,u.tax=u.subtotal*l,u.total=u.subtotal+u.tax)}}),h=()=>{u.productName=`Widget ${ce()}`,u.item.unitPrice=Ke(10,100),u.item.quantity=Ke(1,10)},_=y=>`$${y.toFixed(2)}`,b=`const sourceData = { - productName: '', - item: { unitPrice: 0, quantity: 1 }, - subtotal: 0, tax: 0, total: 0 // Calculated fields (set by effect) -}; - -const TAX_RATE = 0.08; - -const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - productName: stringValidator(source.productName, 'trim').required().minLength(2).getError(), - item: { - unitPrice: numberValidator(source.item.unitPrice).required().positive().getError(), - quantity: numberValidator(source.item.quantity).required().integer().min(1).max(100).getError() - } - }), - effect: ({ property }) => { - if (property === 'item.unitPrice' || property === 'item.quantity') { - data.subtotal = data.item.unitPrice * data.item.quantity; - data.tax = data.subtotal * TAX_RATE; - data.total = data.subtotal + data.tax; - } - } -});`,g=`effect: ({ property }) => { - if (property === 'item.unitPrice' || property === 'item.quantity') { - data.subtotal = data.item.unitPrice * data.item.quantity; - data.tax = data.subtotal * TAX_RATE; - data.total = data.subtotal + data.tax; - } -}`;vt(e,{description:"Uses the effect callback to automatically compute derived values like subtotals, taxes, and totals.",title:"Calculated Fields Demo",main:C=>{var D=rs(),k=ne(D);ht(k,{get hasErrors(){return r()},get isDirty(){return a()}});var x=d(k,2),w=f(x);{let Q=I(()=>n()?.productName);ee(w,{id:"productName",get error(){return p(Q)},label:"Product Name",placeholder:"Enter product name",get value(){return u.productName},set value(ue){u.productName=ue}})}var N=d(w,2),T=f(N);Kt(T,{subtitle:"nested object",title:"Item Details"});var O=d(T,2),q=f(O);{let Q=I(()=>n()?.item?.unitPrice);ee(q,{id:"unitPrice",get error(){return p(Q)},label:"Unit Price ($)",min:0,placeholder:"0.00",step:.01,type:"number",get value(){return u.item.unitPrice},set value(ue){u.item.unitPrice=ue}})}var ie=d(q,2);{let Q=I(()=>n()?.item?.quantity);ee(ie,{id:"quantity",get error(){return p(Q)},label:"Quantity",max:100,min:1,placeholder:"1",type:"number",get value(){return u.item.quantity},set value(ue){u.item.quantity=ue}})}var M=d(N,2),P=f(M);Kt(P,{subtitle:"computed by effect",title:"Calculated Totals"});var F=d(P,2),X=f(F),oe=f(X),le=d(f(oe),2),j=f(le),z=d(oe,2),K=d(f(z),2),R=f(K),A=d(z,2),J=d(f(A),2),xe=f(J);W((Q,ue,_e)=>{V(j,Q),V(R,ue),V(xe,_e)},[()=>_(u.subtotal),()=>_(u.tax),()=>_(u.total)]),E(C,D)},sidebar:C=>{ft(C,{get data(){return u},get errors(){return n()},get hasErrors(){return r()},get isDirty(){return a()},onFill:h})},sourceCode:C=>{mt(C,{children:(D,k)=>{var x=ns(),w=ne(x);ve(w,{code:b,title:"State Setup with Effect"});var N=d(w,2);ve(N,{code:g,title:"Effect Function"}),E(D,x)}})}}),je(),o()}var is=$(' '),ss=$('
      ');function os(e,t){var r=ss(),a=f(r),n=f(a),i=d(n);{var o=s=>{var u=is(),c=f(u);W(()=>V(c,`(${t.subtitle??""})`)),E(s,u)};re(i,s=>{t.subtitle&&s(o)})}var l=d(a,2);It(l,()=>t.children),W(()=>V(n,`${t.title??""} `)),E(e,r)}var ls=$('
      '),us=$('
      ',1),cs=$(" ",1);function ds(e,t){Be(t,!0);const r=()=>Z(c,"$hasErrors",i),a=()=>Z(m,"$isDirty",i),n=()=>Z(u,"$errors",i),[i,o]=ct(),l={name:"",address:{street:"",city:"",zip:""},company:{name:"",department:"",contact:{phone:"",email:""}}},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=dt(l,{validator:b=>({name:Y(b.name,"trim").required().minLength(2).maxLength(50).getError(),address:{street:Y(b.address.street,"trim").required().minLength(5).getError(),city:Y(b.address.city,"trim").required().minLength(2).getError(),zip:Y(b.address.zip,"trim").required().minLength(5).maxLength(10).getError()},company:{name:Y(b.company.name,"trim").required().minLength(2).getError(),department:Y(b.company.department,"trim").maxLength(50).getError(),contact:{phone:Y(b.company.contact.phone,"trim").required().minLength(10).getError(),email:Y(b.company.contact.email,"trim").required().email().getError()}}})}),v=()=>{s.name=`John ${ce()}`,s.address.street=`${Ke(100,9999)} Main Street`,s.address.city="New York",s.address.zip=`${Ke(1e4,99999)}`,s.company.name=`Acme ${ce()} Inc`,s.company.department="Engineering",s.company.contact.phone=`555-${Ke(100,999)}-${Ke(1e3,9999)}`,s.company.contact.email=`contact@${ce()}.com`},h=`const sourceData = { - name: '', - address: { street: '', city: '', zip: '' }, // 2-level nested - company: { // 3-level nested - name: '', - department: '', - contact: { phone: '', email: '' } - } -}; - -const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - name: stringValidator(source.name, 'trim').required().minLength(2).maxLength(50).getError(), - address: { - street: stringValidator(source.address.street, 'trim').required().minLength(5).getError(), - city: stringValidator(source.address.city, 'trim').required().minLength(2).getError(), - zip: stringValidator(source.address.zip, 'trim').required().minLength(5).maxLength(10).getError() - }, - company: { - name: stringValidator(source.company.name, 'trim').required().minLength(2).getError(), - department: stringValidator(source.company.department, 'trim').maxLength(50).getError(), - contact: { - phone: stringValidator(source.company.contact.phone, 'trim').required().minLength(10).getError(), - email: stringValidator(source.company.contact.email, 'trim').required().email().getError() - } - } - }) -});`,_=` - - - - - -`;vt(e,{description:"Illustrates validating deeply nested object structures with multi-level property paths.",title:"Nested Objects Demo",main:S=>{var L=us(),C=ne(L);ht(C,{get hasErrors(){return r()},get isDirty(){return a()}});var D=d(C,2),k=f(D),x=f(k);Kt(x,{title:"Personal Info"});var w=d(x,2);{let R=I(()=>n()?.name);ee(w,{id:"name",get error(){return p(R)},label:"Full Name",placeholder:"Enter your full name",get value(){return s.name},set value(A){s.name=A}})}var N=d(k,2),T=f(N);Kt(T,{subtitle:"2-level nested",title:"Address"});var O=d(T,2),q=f(O);{let R=I(()=>n()?.address?.street);ee(q,{id:"street",get error(){return p(R)},label:"Street",placeholder:"Enter street address",get value(){return s.address.street},set value(A){s.address.street=A}})}var ie=d(q,2),M=f(ie);{let R=I(()=>n()?.address?.city);ee(M,{id:"city",get error(){return p(R)},label:"City",placeholder:"Enter city",get value(){return s.address.city},set value(A){s.address.city=A}})}var P=d(M,2);{let R=I(()=>n()?.address?.zip);ee(P,{id:"zip",get error(){return p(R)},label:"ZIP Code",placeholder:"Enter ZIP",get value(){return s.address.zip},set value(A){s.address.zip=A}})}var F=d(N,2),X=f(F);Kt(X,{subtitle:"3-level nested",title:"Company"});var oe=d(X,2),le=f(oe),j=f(le);{let R=I(()=>n()?.company?.name);ee(j,{id:"company-name",get error(){return p(R)},label:"Company Name",placeholder:"Enter company name",get value(){return s.company.name},set value(A){s.company.name=A}})}var z=d(j,2);{let R=I(()=>n()?.company?.department);ee(z,{id:"department",get error(){return p(R)},label:"Department",placeholder:"Enter department",required:!1,get value(){return s.company.department},set value(A){s.company.department=A}})}var K=d(le,2);os(K,{subtitle:"3rd level",title:"Contact Info",children:(R,A)=>{var J=ls(),xe=f(J);{let ue=I(()=>n()?.company?.contact?.phone);ee(xe,{id:"contact-phone",get error(){return p(ue)},label:"Phone",placeholder:"Enter phone number",variant:"nested",get value(){return s.company.contact.phone},set value(_e){s.company.contact.phone=_e}})}var Q=d(xe,2);{let ue=I(()=>n()?.company?.contact?.email);ee(Q,{id:"contact-email",get error(){return p(ue)},label:"Email",placeholder:"Enter email address",type:"email",variant:"nested",get value(){return s.company.contact.email},set value(_e){s.company.contact.email=_e}})}E(R,J)}}),E(S,L)},sidebar:S=>{ft(S,{get data(){return s},get errors(){return n()},get hasErrors(){return r()},get isDirty(){return a()},onFill:v,width:"xl:w-96"})},sourceCode:S=>{mt(S,{children:(L,C)=>{var D=cs(),k=ne(D);ve(k,{code:h,title:"State Setup with Nested Validation"});var x=d(k,2);ve(x,{code:_,title:"Nested Form Binding Examples"}),E(L,D)}})}}),je(),o()}var fs=$('
      Effect triggered:
      '),vs=$('
      '),ms=$('
      '),hs=$(' Submitting...'),ps=$('
      ',1),gs=$('
      Options

      Reset isDirty after successful action

      Try 500ms and type quickly

      Keep errors until next action

      Current Options
      '),_s=$(" ",1);function bs(e,t){Be(t,!0);const r=()=>Z(p(D),"$hasErrors",l),a=()=>Z(p(k),"$isDirty",l),n=()=>Z(p(x),"$actionInProgress",l),i=()=>Z(p(C),"$errors",l),o=()=>Z(p(w),"$actionError",l),[l,s]=ct();let u=fe(!0),c=fe(0),m=fe(!1),v=fe(0),h=fe(!1),_=fe(void 0),b=fe(void 0);const g=()=>({name:`User ${ce()}`,email:`${ce()}@example.com`}),y=P=>dt(g(),{validator:F=>({name:Y(F.name,"trim").required().minLength(2).maxLength(50).getError(),email:Y(F.email,"trim").required().email().getError()}),effect:({property:F})=>{te(b,F,!0)},action:async()=>{const F=Ke(100,800);if(await new Promise(X=>setTimeout(X,F)),p(h))throw new Error(`Simulated error after ${F}ms`);te(_,`Submitted successfully in ${F}ms!`)},actionCompleted:F=>{F&&te(_,void 0)}},P);let S=fe(at(y({resetDirtyOnAction:!0,debounceValidation:0,persistActionError:!1})));const L=()=>{te(b,void 0),te(_,void 0),te(S,y({resetDirtyOnAction:p(u),debounceValidation:p(c),persistActionError:p(m)}),!0),Ia(v)},C=I(()=>p(S).state.errors),D=I(()=>p(S).state.hasErrors),k=I(()=>p(S).state.isDirty),x=I(()=>p(S).state.actionInProgress),w=I(()=>p(S).state.actionError),N=()=>{p(S).data.name=`User ${ce()}`,p(S).data.email=`${ce()}@example.com`},T=()=>{te(_,void 0),p(S).execute()},O=`const { data, execute, state } = createSvState( - sourceData, - { validator, effect, action }, - { - // Reset isDirty to false after successful action - resetDirtyOnAction: true, // default: true - - // Debounce validation by N milliseconds - debounceValidation: 0, // default: 0 (uses queueMicrotask) - - // Keep action errors until next action (not cleared on data change) - persistActionError: false // default: false - } -);`,q=`// With resetDirtyOnAction: true (default) -await execute(); -// isDirty is now false - -// With resetDirtyOnAction: false -await execute(); -// isDirty remains true`,ie=`// With debounceValidation: 0 (default) -// Validation runs via queueMicrotask after each change - -// With debounceValidation: 500 -// Validation runs 500ms after the last change -// Useful for expensive validators or rapid typing`,M=`// With persistActionError: false (default) -data.name = 'new value'; -// actionError is cleared immediately - -// With persistActionError: true -data.name = 'new value'; -// actionError remains until next execute() call`;vt(e,{description:"Interactive playground for configuring createSvState options like debouncing and error persistence.",title:"Options Demo",main:oe=>{var le=Ue(),j=ne(le);ti(j,()=>p(v),z=>{var K=ps(),R=ne(K);ht(R,{get hasErrors(){return r()},get isDirty(){return a()}});var A=d(R,2);{var J=U=>{var de=fs(),Ft=f(de),Bt=d(f(Ft));W(()=>V(Bt,` property "${p(b)??""}" changed`)),E(U,de)};re(A,U=>{p(b)&&U(J)})}var xe=d(A,2),Q=f(xe);{let U=I(()=>i()?.name);ee(Q,{id:"name",get disabled(){return n()},get error(){return p(U)},label:"Name",placeholder:"Enter name",get value(){return p(S).data.name},set value(de){p(S).data.name=de}})}var ue=d(Q,2);{let U=I(()=>i()?.email);ee(ue,{id:"email",get disabled(){return n()},get error(){return p(U)},label:"Email",placeholder:"Enter email",type:"email",get value(){return p(S).data.email},set value(de){p(S).data.email=de}})}var _e=d(ue,2),Ne=f(_e),G=d(xe,2);{var se=U=>{var de=vs(),Ft=f(de),Bt=d(f(Ft),2),hr=f(Bt);W(()=>V(hr,o().message)),E(U,de)};re(G,U=>{o()&&U(se)})}var Se=d(G,2);{var we=U=>{var de=ms(),Ft=f(de),Bt=d(f(Ft),2),hr=f(Bt);W(()=>V(hr,p(_))),E(U,de)};re(Se,U=>{p(_)&&U(we)})}var Me=d(Se,2),be=f(Me);be.__click=T;var ze=f(be);{var kt=U=>{var de=hs();E(U,de)},Vt=U=>{var de=Un("Submit");E(U,de)};re(ze,U=>{n()?U(kt):U(Vt,!1)})}W(()=>{Ne.disabled=n(),be.disabled=r()||n()}),ir(Ne,()=>p(h),U=>te(h,U)),E(z,K)}),E(oe,le)},sidebar:oe=>{var le=gs(),j=f(le);ft(j,{get data(){return p(S).data},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return a()},onFill:N});var z=d(j,2),K=d(f(z),2),R=f(K),A=f(R),J=f(A),xe=d(R,2),Q=d(f(xe),2),ue=d(xe,2),_e=f(ue),Ne=f(_e),G=d(ue,2);G.__click=L;var se=d(z,2),Se=d(f(se),2),we=f(Se),Me=f(we),be=d(we,2),ze=f(be),kt=d(be,2),Vt=f(kt);W(()=>{V(Me,`resetDirtyOnAction: ${p(u)??""}`),V(ze,`debounceValidation: ${p(c)??""}`),V(Vt,`persistActionError: ${p(m)??""}`)}),ir(J,()=>p(u),U=>te(u,U)),Gt(Q,()=>p(c),U=>te(c,U)),ir(Ne,()=>p(m),U=>te(m,U)),E(oe,le)},sourceCode:oe=>{mt(oe,{children:(le,j)=>{var z=_s(),K=ne(z);ve(K,{code:O,title:"Options Overview"});var R=d(K,2);ve(R,{code:q,title:"resetDirtyOnAction"});var A=d(R,2);ve(A,{code:ie,title:"debounceValidation"});var J=d(A,2);ve(J,{code:M,title:"persistActionError"}),E(le,z)}})}}),je(),s()}rt(["click"]);var ys=$('
      '),xs=$('
      ',1),ws=$(" ",1);function Es(e,t){Be(t,!0);const r=()=>Z(m,"$hasErrors",i),a=()=>Z(v,"$isDirty",i),n=()=>Z(c,"$errors",i),[i,o]=ct(),l={firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com",phone:"",bio:""},{data:s,reset:u,state:{errors:c,hasErrors:m,isDirty:v}}=dt(l,{validator:g=>({firstName:Y(g.firstName,"trim").required().minLength(2).maxLength(30).getError(),lastName:Y(g.lastName,"trim").required().minLength(2).maxLength(30).getError(),email:Y(g.email,"trim").required().email().getError(),phone:Y(g.phone,"trim").required().minLength(10).getError(),bio:Y(g.bio).maxLength(200).getError()})}),h=()=>{s.firstName="John",s.lastName=`Doe${ce()}`,s.email=`john.doe.${ce()}@example.com`,s.phone=`555-${ce().slice(0,3)}-${ce().slice(0,4)}`,s.bio="Software developer with a passion for clean code."},_=`const sourceData = { - firstName: 'Alice', - lastName: 'Smith', - email: 'alice.smith@example.com', - phone: '', - bio: '' -}; - -const { data, reset, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - firstName: stringValidator(source.firstName, 'trim').required().minLength(2).maxLength(30).getError(), - lastName: stringValidator(source.lastName, 'trim').required().minLength(2).maxLength(30).getError(), - email: stringValidator(source.email, 'trim').required().email().getError(), - phone: stringValidator(source.phone, 'trim').required().minLength(10).getError(), - bio: stringValidator(source.bio).maxLength(200).getError() - }) -});`,b=` -{#if $isDirty} - -{/if} - - -`;vt(e,{description:"Demonstrates the reset() function to restore state back to its initial values.",title:"Reset Demo",main:L=>{var C=xs(),D=ne(C);ht(D,{get hasErrors(){return r()},get isDirty(){return a()}});var k=d(D,2),x=f(k);{let M=I(()=>n()?.firstName);ee(x,{id:"firstName",get error(){return p(M)},label:"First Name",placeholder:"Enter first name",get value(){return s.firstName},set value(P){s.firstName=P}})}var w=d(x,2);{let M=I(()=>n()?.lastName);ee(w,{id:"lastName",get error(){return p(M)},label:"Last Name",placeholder:"Enter last name",get value(){return s.lastName},set value(P){s.lastName=P}})}var N=d(w,2);{let M=I(()=>n()?.email);ee(N,{id:"email",get error(){return p(M)},label:"Email",placeholder:"Enter email",type:"email",get value(){return s.email},set value(P){s.email=P}})}var T=d(N,2);{let M=I(()=>n()?.phone);ee(T,{id:"phone",get error(){return p(M)},label:"Phone",placeholder:"555-123-4567",get value(){return s.phone},set value(P){s.phone=P}})}var O=d(T,2);{let M=I(()=>n()?.bio);jr(O,{id:"bio",get error(){return p(M)},label:"Bio",placeholder:"Tell us about yourself",required:!1,get value(){return s.bio},set value(P){s.bio=P}})}var q=d(k,2);{var ie=M=>{var P=ys(),F=f(P);F.__click=u,E(M,P)};re(q,M=>{a()&&M(ie)})}E(L,C)},sidebar:L=>{ft(L,{get data(){return s},get errors(){return n()},get hasErrors(){return r()},get isDirty(){return a()},onFill:h})},sourceCode:L=>{mt(L,{children:(C,D)=>{var k=ws(),x=ne(k);ve(x,{code:_,title:"State Setup with Reset"});var w=d(x,2);ve(w,{code:b,title:"Conditional Reset Button"}),E(C,k)}})}}),je(),o()}rt(["click"]);var Ss=$(''),$s=$('
      ',1),Ds=$('

      No snapshots yet

      '),ks=$('
    • '),As=$('
        '),Ns=$('
        Snapshot History
        '),Cs=$(" ",1);function Ls(e,t){Be(t,!0);const r=()=>Z(_,"$hasErrors",o),a=()=>Z(b,"$isDirty",o),n=()=>Z(g,"$snapshots",o),i=()=>Z(h,"$errors",o),[o,l]=ct(),s={firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com",phone:"",bio:""},u=D=>D.charAt(0).toUpperCase()+D.slice(1).replaceAll(/([A-Z])/g," $1"),{data:c,reset:m,rollback:v,state:{errors:h,hasErrors:_,isDirty:b,snapshots:g}}=dt(s,{validator:D=>({firstName:Y(D.firstName,"trim").required().minLength(2).maxLength(30).getError(),lastName:Y(D.lastName,"trim").required().minLength(2).maxLength(30).getError(),email:Y(D.email,"trim").required().email().getError(),phone:Y(D.phone,"trim").required().minLength(10).getError(),bio:Y(D.bio).maxLength(200).getError()}),effect:({snapshot:D,property:k})=>{D(`Changed ${u(k)}`)}}),y=()=>{c.firstName="John",c.lastName=`Doe${ce()}`,c.email=`john.doe.${ce()}@example.com`,c.phone=`555-${ce().slice(0,3)}-${ce().slice(0,4)}`,c.bio="Software developer with a passion for clean code."},S=`const sourceData = { - firstName: 'Alice', lastName: 'Smith', email: 'alice.smith@example.com', phone: '', bio: '' -}; - -const { data, reset, rollback, state: { errors, hasErrors, isDirty, snapshots } } = - createSvState(sourceData, { - validator: (source) => ({ /* validation rules */ }), - effect: ({ snapshot, property }) => { - snapshot(\`Changed \${formatFieldName(property)}\`); - } - });`,L=`// Effect callback creates snapshots on each change -effect: ({ snapshot, property }) => { - snapshot(\`Changed \${property}\`); // Creates undo point - // If same title, replaces last snapshot (debouncing) - // Use snapshot(title, false) to always create new -}`,C=`// Undo last change (disabled if only initial snapshot) - - -// Rollback multiple steps at once -rollback(3); // Undo 3 changes - -// Reset to initial state (clears all snapshots) -`;vt(e,{description:"Shows snapshot creation for undo functionality with rollback() support.",title:"Snapshot & Rollback Demo",main:w=>{var N=$s(),T=ne(N);ht(T,{get hasErrors(){return r()},get isDirty(){return a()}});var O=d(T,2),q=f(O),ie=f(q),M=d(O,2),P=f(M);{let A=I(()=>i()?.firstName);ee(P,{id:"firstName",get error(){return p(A)},label:"First Name",placeholder:"Enter first name",get value(){return c.firstName},set value(J){c.firstName=J}})}var F=d(P,2);{let A=I(()=>i()?.lastName);ee(F,{id:"lastName",get error(){return p(A)},label:"Last Name",placeholder:"Enter last name",get value(){return c.lastName},set value(J){c.lastName=J}})}var X=d(F,2);{let A=I(()=>i()?.email);ee(X,{id:"email",get error(){return p(A)},label:"Email",placeholder:"Enter email",type:"email",get value(){return c.email},set value(J){c.email=J}})}var oe=d(X,2);{let A=I(()=>i()?.phone);ee(oe,{id:"phone",get error(){return p(A)},label:"Phone",placeholder:"555-123-4567",get value(){return c.phone},set value(J){c.phone=J}})}var le=d(oe,2);{let A=I(()=>i()?.bio);jr(le,{id:"bio",get error(){return p(A)},label:"Bio",placeholder:"Tell us about yourself",required:!1,get value(){return c.bio},set value(J){c.bio=J}})}var j=d(M,2),z=f(j);z.__click=()=>v();var K=d(z,2);{var R=A=>{var J=Ss();J.__click=m,E(A,J)};re(K,A=>{a()&&A(R)})}W(()=>{V(ie,`${n().length??""} Snapshot${n().length===1?"":"s"}`),z.disabled=n().length<=1}),E(w,N)},sidebar:w=>{var N=Ns(),T=f(N);ft(T,{get data(){return c},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return a()},onFill:y,width:"xl:w-96"});var O=d(T,2),q=d(f(O),2);{var ie=P=>{var F=Ds();E(P,F)},M=P=>{var F=As();Fr(F,5,n,Vr,(X,oe,le)=>{var j=ks(),z=f(j);z.textContent=le+1;var K=d(z,2),R=f(K);W(()=>V(R,p(oe).title)),E(X,j)}),E(P,F)};re(q,P=>{n().length===0?P(ie):P(M,!1)})}E(w,N)},sourceCode:w=>{mt(w,{children:(N,T)=>{var O=Cs(),q=ne(O);ve(q,{code:S,title:"State Setup with Snapshots"});var ie=d(q,2);ve(ie,{code:L,title:"Effect with Snapshot Creation"});var M=d(ie,2);ve(M,{code:C,title:"Rollback & Reset Usage"}),E(N,O)}})}}),je(),l()}rt(["click"]);var qs=$(""),Ps=$(`
        svstate logo

        svstate

        A Svelte 5 library that provides a supercharged $state() with deep reactive proxies, validation, snapshot/undo, - and side effects — built for complex, real-world applications.

        $ npm i svstate
        `);function Is(e){const t=[{value:"basic-validation",name:"Basic Validation"},{value:"nested-objects",name:"Nested Objects"},{value:"array-property",name:"Array Property"},{value:"calculated-fields",name:"Calculated Fields"},{value:"reset-demo",name:"Reset"},{value:"snapshot-demo",name:"Snapshot & Rollback"},{value:"action-demo",name:"Action & Error"},{value:"options-demo",name:"Options"}];let r=fe("basic-validation");const a="1.1.0",n="/svstate";var i=Ps(),o=f(i),l=f(o),s=d(l,2),u=f(s),c=d(f(u),2),m=f(c),v=d(u,4),h=d(f(v),4);h.__click=()=>navigator.clipboard.writeText(`npm i svstate@${a}`);var _=d(v,2),b=d(o,2),g=f(b),y=f(g),S=d(f(y),2);Fr(S,21,()=>t,Vr,(x,w)=>{var N=qs(),T=f(N),O={};W(()=>{V(T,p(w).name),O!==(O=p(w).value)&&(N.value=(N.__value=p(w).value)??"")}),E(x,N)});var L=d(g,2),C=f(L);{var D=x=>{Qi(x,{})},k=x=>{var w=Ue(),N=ne(w);{var T=q=>{ds(q,{})},O=q=>{var ie=Ue(),M=ne(ie);{var P=X=>{Ji(X,{})},F=X=>{var oe=Ue(),le=ne(oe);{var j=K=>{as(K,{})},z=K=>{var R=Ue(),A=ne(R);{var J=Q=>{Es(Q,{})},xe=Q=>{var ue=Ue(),_e=ne(ue);{var Ne=se=>{Ls(se,{})},G=se=>{var Se=Ue(),we=ne(Se);{var Me=ze=>{Vi(ze,{})},be=ze=>{var kt=Ue(),Vt=ne(kt);{var U=de=>{bs(de,{})};re(Vt,de=>{p(r)==="options-demo"&&de(U)},!0)}E(ze,kt)};re(we,ze=>{p(r)==="action-demo"?ze(Me):ze(be,!1)},!0)}E(se,Se)};re(_e,se=>{p(r)==="snapshot-demo"?se(Ne):se(G,!1)},!0)}E(Q,ue)};re(A,Q=>{p(r)==="reset-demo"?Q(J):Q(xe,!1)},!0)}E(K,R)};re(le,K=>{p(r)==="calculated-fields"?K(j):K(z,!1)},!0)}E(X,oe)};re(M,X=>{p(r)==="array-property"?X(P):X(F,!1)},!0)}E(q,ie)};re(N,q=>{p(r)==="nested-objects"?q(T):q(O,!1)},!0)}E(x,w)};re(C,x=>{p(r)==="basic-validation"?x(D):x(k,!1)})}W(()=>{pe(l,"src",`${n}/favicon.png`),V(m,`v${a}`),pe(_,"href",`${n}/llms.txt`)}),oi(S,()=>p(r),x=>te(r,x)),E(e,i)}rt(["click"]);Xa(Is,{target:document.querySelector("#app")}); diff --git a/docs/index.html b/docs/index.html index 933d2c8..f261c75 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,8 +5,8 @@ svstate demo - - + + From 06546cafcdb33250e3de3a924f4eac2e3f9154ed Mon Sep 17 00:00:00 2001 From: BCsabaEngine Date: Wed, 28 Jan 2026 17:30:07 +0100 Subject: [PATCH 5/7] feat: docs --- CLAUDE.md | 20 +++++++++++++++- README.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 9b1f878..c92ea39 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -92,7 +92,7 @@ const { data, execute, state, rollback, reset } = createSvState(init, actuators? **Returns:** -- `data` - Deep reactive proxy around the state object +- `data` - Deep reactive proxy around the state object (methods on the object are preserved and callable) - `execute(params)` - Async function to run the configured action - `rollback(steps?)` - Undo N steps (default 1), restores state and triggers validation - `reset()` - Return to initial snapshot, triggers validation @@ -140,6 +140,24 @@ effect: ({ snapshot, property }) => { - Successful action execution resets snapshots with current state as new initial - `rollback()` and `reset()` trigger validation after restoring state +### Deep Clone System (src/state.svelte.ts) + +The `deepClone` function preserves object prototypes using `Object.create(Object.getPrototypeOf(object))`. This allows state objects to include methods that operate on `this`: + +```typescript +const createState = () => ({ + value: 0, + format() { + return `$${this.value.toFixed(2)}`; + } +}); + +const { data } = createSvState(createState()); +data.format(); // Works — method preserved +``` + +Methods are preserved through snapshots, rollback, and reset operations. + ### Deep Proxy System (src/proxy.ts) - `ChangeProxy()` wraps objects with recursive Proxy handlers diff --git a/README.md b/README.md index 7b83921..02870a1 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ const customer = $state({ - ⚡ **Fires effects** when any property changes (with full context) - ⏪ **Snapshots & undo** for complex editing workflows - 🎯 **Tracks dirty state** automatically +- 🔧 **Supports methods** on state objects for computed values and formatting ```typescript import { createSvState, stringValidator, numberValidator } from 'svstate'; @@ -334,6 +335,70 @@ const { data } = createSvState(formData, actuators, { --- +### 6️⃣ State Objects with Methods + +State objects can include methods that operate on `this`. Methods are preserved through snapshots and undo operations, making it easy to encapsulate computed values and formatting logic: + +```typescript +import { createSvState, numberValidator } from 'svstate'; + +// Define state with methods +type InvoiceData = { + unitPrice: number; + quantity: number; + subtotal: number; + tax: number; + total: number; + calculateTotals: (taxRate?: number) => void; + formatCurrency: (value: number) => string; +}; + +const createInvoice = (): InvoiceData => ({ + unitPrice: 0, + quantity: 1, + subtotal: 0, + tax: 0, + total: 0, + calculateTotals(taxRate = 0.08) { + this.subtotal = this.unitPrice * this.quantity; + this.tax = this.subtotal * taxRate; + this.total = this.subtotal + this.tax; + }, + formatCurrency(value: number) { + return `$${value.toFixed(2)}`; + } +}); + +const { + data, + state: { errors } +} = createSvState(createInvoice(), { + validator: (source) => ({ + unitPrice: numberValidator(source.unitPrice).required().positive().getError(), + quantity: numberValidator(source.quantity).required().integer().min(1).getError() + }), + effect: ({ property }) => { + // Call method directly on state when inputs change + if (property === 'unitPrice' || property === 'quantity') { + data.calculateTotals(); + } + } +}); + +// In template: use methods for formatting +// {data.formatCurrency(data.subtotal)} → "$99.00" +// {data.formatCurrency(data.total)} → "$106.92" +``` + +**Key features:** + +- 🔧 Methods can modify `this` properties (triggers validation/effects) +- 📸 Methods preserved through `rollback()` and `reset()` +- 🎯 Call methods from effects to compute derived values +- 📐 Encapsulate formatting and business logic in state object + +--- + ## 🏗️ Complete Examples ### Example 1: ERP Customer Form with Nested Addresses @@ -698,7 +763,7 @@ Creates a supercharged state object. **Returns:** | Property | Type | Description | |----------|------|-------------| -| `data` | `T` | Deep reactive proxy — bind directly | +| `data` | `T` | Deep reactive proxy — bind directly, methods preserved | | `execute(params?)` | `(P?) => Promise` | Run the configured action | | `rollback(steps?)` | `(n?: number) => void` | Undo N changes (default: 1) | | `reset()` | `() => void` | Return to initial state | @@ -786,6 +851,7 @@ const { data, state } = createSvState( | Undo/Redo | ❌ DIY | ✅ Built-in | | Dirty tracking | ❌ DIY | ✅ Automatic | | Action loading states | ❌ DIY | ✅ Built-in | +| State with methods | ⚠️ Manual cloning | ✅ Automatic | **svstate is for:** From d62e97b276c7ba551c98fa7c6391695cf05e5f5b Mon Sep 17 00:00:00 2001 From: BCsabaEngine Date: Wed, 28 Jan 2026 17:32:19 +0100 Subject: [PATCH 6/7] chore: deps --- demo/package-lock.json | 338 ++++++++++++++++++++--------------------- demo/package.json | 6 +- package-lock.json | 338 ++++++++++++++++++++--------------------- package.json | 6 +- 4 files changed, 344 insertions(+), 344 deletions(-) diff --git a/demo/package-lock.json b/demo/package-lock.json index eded487..0c733c8 100644 --- a/demo/package-lock.json +++ b/demo/package-lock.json @@ -8,15 +8,15 @@ "name": "svstate-demo", "version": "1.0.0", "dependencies": { - "svelte": "^5.48.2" + "svelte": "^5.48.5" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^6.2.4", "@tailwindcss/postcss": "^4.1.18", "@tailwindcss/vite": "^4.1.18", "@tsconfig/svelte": "^5.0.6", - "@typescript-eslint/eslint-plugin": "^8.53.1", - "@typescript-eslint/parser": "^8.53.1", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/parser": "^8.54.0", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-simple-import-sort": "^12.1.1", @@ -790,9 +790,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", - "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz", + "integrity": "sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==", "cpu": [ "arm" ], @@ -804,9 +804,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", - "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz", + "integrity": "sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==", "cpu": [ "arm64" ], @@ -818,9 +818,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", - "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz", + "integrity": "sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==", "cpu": [ "arm64" ], @@ -832,9 +832,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", - "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz", + "integrity": "sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==", "cpu": [ "x64" ], @@ -846,9 +846,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", - "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz", + "integrity": "sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==", "cpu": [ "arm64" ], @@ -860,9 +860,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", - "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz", + "integrity": "sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==", "cpu": [ "x64" ], @@ -874,9 +874,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", - "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz", + "integrity": "sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==", "cpu": [ "arm" ], @@ -888,9 +888,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", - "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz", + "integrity": "sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==", "cpu": [ "arm" ], @@ -902,9 +902,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", - "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz", + "integrity": "sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==", "cpu": [ "arm64" ], @@ -916,9 +916,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", - "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz", + "integrity": "sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==", "cpu": [ "arm64" ], @@ -930,9 +930,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", - "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz", + "integrity": "sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==", "cpu": [ "loong64" ], @@ -944,9 +944,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", - "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz", + "integrity": "sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==", "cpu": [ "loong64" ], @@ -958,9 +958,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", - "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz", + "integrity": "sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==", "cpu": [ "ppc64" ], @@ -972,9 +972,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", - "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz", + "integrity": "sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==", "cpu": [ "ppc64" ], @@ -986,9 +986,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", - "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz", + "integrity": "sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==", "cpu": [ "riscv64" ], @@ -1000,9 +1000,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", - "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz", + "integrity": "sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==", "cpu": [ "riscv64" ], @@ -1014,9 +1014,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", - "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz", + "integrity": "sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==", "cpu": [ "s390x" ], @@ -1028,9 +1028,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", - "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz", + "integrity": "sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==", "cpu": [ "x64" ], @@ -1042,9 +1042,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", - "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz", + "integrity": "sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==", "cpu": [ "x64" ], @@ -1056,9 +1056,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", - "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz", + "integrity": "sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==", "cpu": [ "x64" ], @@ -1070,9 +1070,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", - "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz", + "integrity": "sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==", "cpu": [ "arm64" ], @@ -1084,9 +1084,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", - "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz", + "integrity": "sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==", "cpu": [ "arm64" ], @@ -1098,9 +1098,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", - "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz", + "integrity": "sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==", "cpu": [ "ia32" ], @@ -1112,9 +1112,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", - "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz", + "integrity": "sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==", "cpu": [ "x64" ], @@ -1126,9 +1126,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", - "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz", + "integrity": "sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==", "cpu": [ "x64" ], @@ -1495,17 +1495,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz", - "integrity": "sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz", + "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.53.1", - "@typescript-eslint/type-utils": "8.53.1", - "@typescript-eslint/utils": "8.53.1", - "@typescript-eslint/visitor-keys": "8.53.1", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/type-utils": "8.54.0", + "@typescript-eslint/utils": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -1518,23 +1518,23 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.53.1", + "@typescript-eslint/parser": "^8.54.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.1.tgz", - "integrity": "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz", + "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.53.1", - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/typescript-estree": "8.53.1", - "@typescript-eslint/visitor-keys": "8.53.1", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3" }, "engines": { @@ -1550,14 +1550,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.1.tgz", - "integrity": "sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz", + "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.53.1", - "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/tsconfig-utils": "^8.54.0", + "@typescript-eslint/types": "^8.54.0", "debug": "^4.4.3" }, "engines": { @@ -1572,14 +1572,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz", - "integrity": "sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz", + "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/visitor-keys": "8.53.1" + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1590,9 +1590,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz", - "integrity": "sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz", + "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==", "dev": true, "license": "MIT", "engines": { @@ -1607,15 +1607,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz", - "integrity": "sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz", + "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/typescript-estree": "8.53.1", - "@typescript-eslint/utils": "8.53.1", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/utils": "8.54.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -1632,9 +1632,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.1.tgz", - "integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", + "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", "dev": true, "license": "MIT", "engines": { @@ -1646,16 +1646,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz", - "integrity": "sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz", + "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.53.1", - "@typescript-eslint/tsconfig-utils": "8.53.1", - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/visitor-keys": "8.53.1", + "@typescript-eslint/project-service": "8.54.0", + "@typescript-eslint/tsconfig-utils": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -1674,16 +1674,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.1.tgz", - "integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz", + "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.53.1", - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/typescript-estree": "8.53.1" + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1698,13 +1698,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz", - "integrity": "sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz", + "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/types": "8.54.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -1817,9 +1817,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.18", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz", - "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==", + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2124,9 +2124,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.278", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz", - "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==", + "version": "1.5.279", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.279.tgz", + "integrity": "sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==", "dev": true, "license": "ISC" }, @@ -3649,9 +3649,9 @@ } }, "node_modules/rollup": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", - "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.0.tgz", + "integrity": "sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==", "dev": true, "license": "MIT", "dependencies": { @@ -3665,31 +3665,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.56.0", - "@rollup/rollup-android-arm64": "4.56.0", - "@rollup/rollup-darwin-arm64": "4.56.0", - "@rollup/rollup-darwin-x64": "4.56.0", - "@rollup/rollup-freebsd-arm64": "4.56.0", - "@rollup/rollup-freebsd-x64": "4.56.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", - "@rollup/rollup-linux-arm-musleabihf": "4.56.0", - "@rollup/rollup-linux-arm64-gnu": "4.56.0", - "@rollup/rollup-linux-arm64-musl": "4.56.0", - "@rollup/rollup-linux-loong64-gnu": "4.56.0", - "@rollup/rollup-linux-loong64-musl": "4.56.0", - "@rollup/rollup-linux-ppc64-gnu": "4.56.0", - "@rollup/rollup-linux-ppc64-musl": "4.56.0", - "@rollup/rollup-linux-riscv64-gnu": "4.56.0", - "@rollup/rollup-linux-riscv64-musl": "4.56.0", - "@rollup/rollup-linux-s390x-gnu": "4.56.0", - "@rollup/rollup-linux-x64-gnu": "4.56.0", - "@rollup/rollup-linux-x64-musl": "4.56.0", - "@rollup/rollup-openbsd-x64": "4.56.0", - "@rollup/rollup-openharmony-arm64": "4.56.0", - "@rollup/rollup-win32-arm64-msvc": "4.56.0", - "@rollup/rollup-win32-ia32-msvc": "4.56.0", - "@rollup/rollup-win32-x64-gnu": "4.56.0", - "@rollup/rollup-win32-x64-msvc": "4.56.0", + "@rollup/rollup-android-arm-eabi": "4.57.0", + "@rollup/rollup-android-arm64": "4.57.0", + "@rollup/rollup-darwin-arm64": "4.57.0", + "@rollup/rollup-darwin-x64": "4.57.0", + "@rollup/rollup-freebsd-arm64": "4.57.0", + "@rollup/rollup-freebsd-x64": "4.57.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.0", + "@rollup/rollup-linux-arm-musleabihf": "4.57.0", + "@rollup/rollup-linux-arm64-gnu": "4.57.0", + "@rollup/rollup-linux-arm64-musl": "4.57.0", + "@rollup/rollup-linux-loong64-gnu": "4.57.0", + "@rollup/rollup-linux-loong64-musl": "4.57.0", + "@rollup/rollup-linux-ppc64-gnu": "4.57.0", + "@rollup/rollup-linux-ppc64-musl": "4.57.0", + "@rollup/rollup-linux-riscv64-gnu": "4.57.0", + "@rollup/rollup-linux-riscv64-musl": "4.57.0", + "@rollup/rollup-linux-s390x-gnu": "4.57.0", + "@rollup/rollup-linux-x64-gnu": "4.57.0", + "@rollup/rollup-linux-x64-musl": "4.57.0", + "@rollup/rollup-openbsd-x64": "4.57.0", + "@rollup/rollup-openharmony-arm64": "4.57.0", + "@rollup/rollup-win32-arm64-msvc": "4.57.0", + "@rollup/rollup-win32-ia32-msvc": "4.57.0", + "@rollup/rollup-win32-x64-gnu": "4.57.0", + "@rollup/rollup-win32-x64-msvc": "4.57.0", "fsevents": "~2.3.2" } }, @@ -3792,9 +3792,9 @@ } }, "node_modules/svelte": { - "version": "5.48.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.48.2.tgz", - "integrity": "sha512-VPWD+UyoSFZ7Nxix5K/F8yWiKWOiROkLlWYXOZReE0TUycw+58YWB3D6lAKT+57xmN99wRX4H3oZmw0NPy7y3Q==", + "version": "5.48.5", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.48.5.tgz", + "integrity": "sha512-NB3o70OxfmnE5UPyLr8uH3IV02Q43qJVAuWigYmsSOYsS0s/rHxP0TF81blG0onF/xkhNvZw4G8NfzIX+By5ZQ==", "license": "MIT", "peer": true, "dependencies": { diff --git a/demo/package.json b/demo/package.json index 7b2f760..9eeb96c 100644 --- a/demo/package.json +++ b/demo/package.json @@ -23,8 +23,8 @@ "@tailwindcss/postcss": "^4.1.18", "@tailwindcss/vite": "^4.1.18", "@tsconfig/svelte": "^5.0.6", - "@typescript-eslint/eslint-plugin": "^8.53.1", - "@typescript-eslint/parser": "^8.53.1", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/parser": "^8.54.0", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-simple-import-sort": "^12.1.1", @@ -42,6 +42,6 @@ "vite": "^7.3.1" }, "dependencies": { - "svelte": "^5.48.2" + "svelte": "^5.48.5" } } diff --git a/package-lock.json b/package-lock.json index 920e59f..f496266 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "devDependencies": { "@sveltejs/vite-plugin-svelte": "^6.2.4", "@types/node": "^25.0.10", - "@typescript-eslint/eslint-plugin": "^8.53.1", - "@typescript-eslint/parser": "^8.53.1", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/parser": "^8.54.0", "@vitest/coverage-v8": "^4.0.18", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", @@ -20,7 +20,7 @@ "eslint-plugin-unicorn": "^62.0.0", "nodemon": "^3.1.11", "prettier": "^3.8.1", - "svelte": "^5.48.2", + "svelte": "^5.48.5", "ts-node": "^10.9.2", "tsx": "^4.21.0", "typescript": "^5.9.3", @@ -852,9 +852,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", - "integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz", + "integrity": "sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==", "cpu": [ "arm" ], @@ -866,9 +866,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz", - "integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz", + "integrity": "sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==", "cpu": [ "arm64" ], @@ -880,9 +880,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz", - "integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz", + "integrity": "sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==", "cpu": [ "arm64" ], @@ -894,9 +894,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz", - "integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz", + "integrity": "sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==", "cpu": [ "x64" ], @@ -908,9 +908,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz", - "integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz", + "integrity": "sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==", "cpu": [ "arm64" ], @@ -922,9 +922,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz", - "integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz", + "integrity": "sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==", "cpu": [ "x64" ], @@ -936,9 +936,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz", - "integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz", + "integrity": "sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==", "cpu": [ "arm" ], @@ -950,9 +950,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz", - "integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz", + "integrity": "sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==", "cpu": [ "arm" ], @@ -964,9 +964,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz", - "integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz", + "integrity": "sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==", "cpu": [ "arm64" ], @@ -978,9 +978,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz", - "integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz", + "integrity": "sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==", "cpu": [ "arm64" ], @@ -992,9 +992,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz", - "integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz", + "integrity": "sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==", "cpu": [ "loong64" ], @@ -1006,9 +1006,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz", - "integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz", + "integrity": "sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==", "cpu": [ "loong64" ], @@ -1020,9 +1020,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz", - "integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz", + "integrity": "sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==", "cpu": [ "ppc64" ], @@ -1034,9 +1034,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz", - "integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz", + "integrity": "sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==", "cpu": [ "ppc64" ], @@ -1048,9 +1048,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz", - "integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz", + "integrity": "sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==", "cpu": [ "riscv64" ], @@ -1062,9 +1062,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz", - "integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz", + "integrity": "sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==", "cpu": [ "riscv64" ], @@ -1076,9 +1076,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz", - "integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz", + "integrity": "sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==", "cpu": [ "s390x" ], @@ -1090,9 +1090,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz", - "integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz", + "integrity": "sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==", "cpu": [ "x64" ], @@ -1104,9 +1104,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz", - "integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz", + "integrity": "sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==", "cpu": [ "x64" ], @@ -1118,9 +1118,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz", - "integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz", + "integrity": "sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==", "cpu": [ "x64" ], @@ -1132,9 +1132,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz", - "integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz", + "integrity": "sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==", "cpu": [ "arm64" ], @@ -1146,9 +1146,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz", - "integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz", + "integrity": "sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==", "cpu": [ "arm64" ], @@ -1160,9 +1160,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz", - "integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz", + "integrity": "sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==", "cpu": [ "ia32" ], @@ -1174,9 +1174,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz", - "integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz", + "integrity": "sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==", "cpu": [ "x64" ], @@ -1188,9 +1188,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz", - "integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz", + "integrity": "sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==", "cpu": [ "x64" ], @@ -1330,17 +1330,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz", - "integrity": "sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz", + "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.53.1", - "@typescript-eslint/type-utils": "8.53.1", - "@typescript-eslint/utils": "8.53.1", - "@typescript-eslint/visitor-keys": "8.53.1", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/type-utils": "8.54.0", + "@typescript-eslint/utils": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -1353,23 +1353,23 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.53.1", + "@typescript-eslint/parser": "^8.54.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.1.tgz", - "integrity": "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz", + "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.53.1", - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/typescript-estree": "8.53.1", - "@typescript-eslint/visitor-keys": "8.53.1", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3" }, "engines": { @@ -1385,14 +1385,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.1.tgz", - "integrity": "sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz", + "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.53.1", - "@typescript-eslint/types": "^8.53.1", + "@typescript-eslint/tsconfig-utils": "^8.54.0", + "@typescript-eslint/types": "^8.54.0", "debug": "^4.4.3" }, "engines": { @@ -1407,14 +1407,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz", - "integrity": "sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz", + "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/visitor-keys": "8.53.1" + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1425,9 +1425,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz", - "integrity": "sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz", + "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==", "dev": true, "license": "MIT", "engines": { @@ -1442,15 +1442,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz", - "integrity": "sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz", + "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/typescript-estree": "8.53.1", - "@typescript-eslint/utils": "8.53.1", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/utils": "8.54.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -1467,9 +1467,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.1.tgz", - "integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", + "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", "dev": true, "license": "MIT", "engines": { @@ -1481,16 +1481,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz", - "integrity": "sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz", + "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.53.1", - "@typescript-eslint/tsconfig-utils": "8.53.1", - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/visitor-keys": "8.53.1", + "@typescript-eslint/project-service": "8.54.0", + "@typescript-eslint/tsconfig-utils": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -1509,16 +1509,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.1.tgz", - "integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz", + "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.53.1", - "@typescript-eslint/types": "8.53.1", - "@typescript-eslint/typescript-estree": "8.53.1" + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1533,13 +1533,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.53.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz", - "integrity": "sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz", + "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/types": "8.54.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -1853,9 +1853,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.18", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.18.tgz", - "integrity": "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA==", + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2214,9 +2214,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.278", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz", - "integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==", + "version": "1.5.279", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.279.tgz", + "integrity": "sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==", "dev": true, "license": "ISC" }, @@ -3518,9 +3518,9 @@ } }, "node_modules/rollup": { - "version": "4.56.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz", - "integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.0.tgz", + "integrity": "sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==", "dev": true, "license": "MIT", "dependencies": { @@ -3534,31 +3534,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.56.0", - "@rollup/rollup-android-arm64": "4.56.0", - "@rollup/rollup-darwin-arm64": "4.56.0", - "@rollup/rollup-darwin-x64": "4.56.0", - "@rollup/rollup-freebsd-arm64": "4.56.0", - "@rollup/rollup-freebsd-x64": "4.56.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", - "@rollup/rollup-linux-arm-musleabihf": "4.56.0", - "@rollup/rollup-linux-arm64-gnu": "4.56.0", - "@rollup/rollup-linux-arm64-musl": "4.56.0", - "@rollup/rollup-linux-loong64-gnu": "4.56.0", - "@rollup/rollup-linux-loong64-musl": "4.56.0", - "@rollup/rollup-linux-ppc64-gnu": "4.56.0", - "@rollup/rollup-linux-ppc64-musl": "4.56.0", - "@rollup/rollup-linux-riscv64-gnu": "4.56.0", - "@rollup/rollup-linux-riscv64-musl": "4.56.0", - "@rollup/rollup-linux-s390x-gnu": "4.56.0", - "@rollup/rollup-linux-x64-gnu": "4.56.0", - "@rollup/rollup-linux-x64-musl": "4.56.0", - "@rollup/rollup-openbsd-x64": "4.56.0", - "@rollup/rollup-openharmony-arm64": "4.56.0", - "@rollup/rollup-win32-arm64-msvc": "4.56.0", - "@rollup/rollup-win32-ia32-msvc": "4.56.0", - "@rollup/rollup-win32-x64-gnu": "4.56.0", - "@rollup/rollup-win32-x64-msvc": "4.56.0", + "@rollup/rollup-android-arm-eabi": "4.57.0", + "@rollup/rollup-android-arm64": "4.57.0", + "@rollup/rollup-darwin-arm64": "4.57.0", + "@rollup/rollup-darwin-x64": "4.57.0", + "@rollup/rollup-freebsd-arm64": "4.57.0", + "@rollup/rollup-freebsd-x64": "4.57.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.0", + "@rollup/rollup-linux-arm-musleabihf": "4.57.0", + "@rollup/rollup-linux-arm64-gnu": "4.57.0", + "@rollup/rollup-linux-arm64-musl": "4.57.0", + "@rollup/rollup-linux-loong64-gnu": "4.57.0", + "@rollup/rollup-linux-loong64-musl": "4.57.0", + "@rollup/rollup-linux-ppc64-gnu": "4.57.0", + "@rollup/rollup-linux-ppc64-musl": "4.57.0", + "@rollup/rollup-linux-riscv64-gnu": "4.57.0", + "@rollup/rollup-linux-riscv64-musl": "4.57.0", + "@rollup/rollup-linux-s390x-gnu": "4.57.0", + "@rollup/rollup-linux-x64-gnu": "4.57.0", + "@rollup/rollup-linux-x64-musl": "4.57.0", + "@rollup/rollup-openbsd-x64": "4.57.0", + "@rollup/rollup-openharmony-arm64": "4.57.0", + "@rollup/rollup-win32-arm64-msvc": "4.57.0", + "@rollup/rollup-win32-ia32-msvc": "4.57.0", + "@rollup/rollup-win32-x64-gnu": "4.57.0", + "@rollup/rollup-win32-x64-msvc": "4.57.0", "fsevents": "~2.3.2" } }, @@ -3682,9 +3682,9 @@ } }, "node_modules/svelte": { - "version": "5.48.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.48.2.tgz", - "integrity": "sha512-VPWD+UyoSFZ7Nxix5K/F8yWiKWOiROkLlWYXOZReE0TUycw+58YWB3D6lAKT+57xmN99wRX4H3oZmw0NPy7y3Q==", + "version": "5.48.5", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.48.5.tgz", + "integrity": "sha512-NB3o70OxfmnE5UPyLr8uH3IV02Q43qJVAuWigYmsSOYsS0s/rHxP0TF81blG0onF/xkhNvZw4G8NfzIX+By5ZQ==", "dev": true, "license": "MIT", "peer": true, diff --git a/package.json b/package.json index fca1e54..82a066a 100644 --- a/package.json +++ b/package.json @@ -55,8 +55,8 @@ "devDependencies": { "@sveltejs/vite-plugin-svelte": "^6.2.4", "@types/node": "^25.0.10", - "@typescript-eslint/eslint-plugin": "^8.53.1", - "@typescript-eslint/parser": "^8.53.1", + "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/parser": "^8.54.0", "@vitest/coverage-v8": "^4.0.18", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", @@ -64,7 +64,7 @@ "eslint-plugin-unicorn": "^62.0.0", "nodemon": "^3.1.11", "prettier": "^3.8.1", - "svelte": "^5.48.2", + "svelte": "^5.48.5", "ts-node": "^10.9.2", "tsx": "^4.21.0", "typescript": "^5.9.3", From 5aa591b32b20278280ccc1b0bcf4225af8ede862 Mon Sep 17 00:00:00 2001 From: BCsabaEngine Date: Wed, 28 Jan 2026 17:34:52 +0100 Subject: [PATCH 7/7] release: 1.2.0 --- CHANGELOG.md | 6 + docs/assets/index-BRq3jy6u.js | 274 ---------------------------------- docs/assets/index-VALo2x4L.js | 274 ++++++++++++++++++++++++++++++++++ docs/index.html | 2 +- package-lock.json | 4 +- package.json | 2 +- 6 files changed, 284 insertions(+), 278 deletions(-) delete mode 100644 docs/assets/index-BRq3jy6u.js create mode 100644 docs/assets/index-VALo2x4L.js diff --git a/CHANGELOG.md b/CHANGELOG.md index fd4cc48..22a07d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.2.0] - 2026-01-28 + +### Added + +- State objects can now include methods that operate on `this` - methods are preserved through snapshots, rollback, and reset operations + ## [1.1.0] - 2026-01-20 ### Changed diff --git a/docs/assets/index-BRq3jy6u.js b/docs/assets/index-BRq3jy6u.js deleted file mode 100644 index 3c622d5..0000000 --- a/docs/assets/index-BRq3jy6u.js +++ /dev/null @@ -1,274 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(a){if(a.ep)return;a.ep=!0;const i=r(a);fetch(a.href,i)}})();const yr=!1;var Nr=Array.isArray,Ka=Array.prototype.indexOf,vr=Array.from,ta=Object.defineProperty,It=Object.getOwnPropertyDescriptor,Ja=Object.getOwnPropertyDescriptors,Ga=Object.prototype,Xa=Array.prototype,ra=Object.getPrototypeOf,Ur=Object.isExtensible;const vt=()=>{};function aa(e){for(var t=0;t{e=n,t=a});return{promise:r,resolve:e,reject:t}}const be=2,lr=4,mr=8,ia=1<<24,et=16,gt=32,kt=64,kr=128,Oe=512,xe=1024,Ee=2048,tt=4096,Pe=8192,Ge=16384,sa=32768,St=65536,Wr=1<<17,oa=1<<18,jt=1<<19,Za=1<<20,Je=1<<25,Dt=32768,xr=1<<21,Ar=1<<22,mt=1<<23,Ot=Symbol("$state"),Qa=Symbol("legacy props"),en=Symbol(""),Tt=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"};function tn(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function rn(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function an(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function nn(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function sn(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function on(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function ln(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const un=1,cn=2,la=4,dn=8,fn=16,vn=1,mn=4,pn=8,hn=16,gn=1,_n=2,ge=Symbol(),bn="http://www.w3.org/1999/xhtml";function yn(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function xn(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function ua(e){return e===this.v}function ca(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function da(e){return!ca(e,this.v)}let wn=!1,We=null;function Vt(e){We=e}function Ve(e,t=!1,r){We={p:We,i:!1,c:null,e:null,s:e,x:null,l:null}}function Re(e){var t=We,r=t.e;if(r!==null){t.e=null;for(var n of r)Bn(n)}return t.i=!0,We=t.p,{}}function fa(){return!0}let bt=[];function va(){var e=bt;bt=[],aa(e)}function xt(e){if(bt.length===0&&!Ht){var t=bt;queueMicrotask(()=>{t===bt&&va()})}bt.push(e)}function En(){for(;bt.length>0;)va()}function ma(e){var t=ue;if(t===null)return W.f|=mt,e;if((t.f&sa)===0){if((t.f&kr)===0)throw e;t.b.error(e)}else Rt(e,t)}function Rt(e,t){for(;t!==null;){if((t.f&kr)!==0)try{t.b.error(e);return}catch(r){e=r}t=t.parent}throw e}const $n=-7169;function pe(e,t){e.f=e.f&$n|t}function qr(e){(e.f&Oe)!==0||e.deps===null?pe(e,xe):pe(e,tt)}function pa(e){if(e!==null)for(const t of e)(t.f&be)===0||(t.f&Dt)===0||(t.f^=Dt,pa(t.deps))}function ha(e,t,r){(e.f&Ee)!==0?t.add(e):(e.f&tt)!==0&&r.add(e),pa(e.deps),pe(e,xe)}const ar=new Set;let X=null,ur=null,Be=null,qe=[],pr=null,wr=!1,Ht=!1;class pt{committed=!1;current=new Map;previous=new Map;#t=new Set;#s=new Set;#e=0;#n=0;#i=null;#a=new Set;#r=new Set;skipped_effects=new Set;is_fork=!1;#o=!1;is_deferred(){return this.is_fork||this.#n>0}process(t){qe=[],this.apply();var r=[],n=[];for(const a of t)this.#l(a,r,n);if(this.is_deferred())this.#u(n),this.#u(r);else{for(const a of this.#t)a();this.#t.clear(),this.#e===0&&this.#c(),ur=this,X=null,Hr(n),Hr(r),ur=null,this.#i?.resolve()}Be=null}#l(t,r,n){t.f^=xe;for(var a=t.first,i=null;a!==null;){var o=a.f,l=(o&(gt|kt))!==0,s=l&&(o&xe)!==0,u=s||(o&Pe)!==0||this.skipped_effects.has(a);if(!u&&a.fn!==null){l?a.f^=xe:i!==null&&(o&(lr|mr|ia))!==0?i.b.defer_effect(a):(o&lr)!==0?r.push(a):tr(a)&&((o&et)!==0&&this.#a.add(a),Gt(a));var c=a.first;if(c!==null){a=c;continue}}var m=a.parent;for(a=a.next;a===null&&m!==null;)m===i&&(i=null),a=m.next,m=m.parent}}#u(t){for(var r=0;r0){if(ga(),X!==null&&X!==this)return}else this.#e===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#s)t(this);this.#s.clear()}#c(){if(ar.size>1){this.previous.clear();var t=Be,r=!0;for(const a of ar){if(a===this){r=!1;continue}const i=[];for(const[l,s]of this.current){if(a.current.has(l))if(r&&s!==a.current.get(l))a.current.set(l,s);else continue;i.push(l)}if(i.length===0)continue;const o=[...a.current.keys()].filter(l=>!this.current.has(l));if(o.length>0){var n=qe;qe=[];const l=new Set,s=new Map;for(const u of i)_a(u,o,l,s);if(qe.length>0){X=a,a.apply();for(const u of qe)a.#l(u,[],[]);a.deactivate()}qe=n}}X=null,Be=t}this.committed=!0,ar.delete(this)}increment(t){this.#e+=1,t&&(this.#n+=1)}decrement(t){this.#e-=1,t&&(this.#n-=1),!this.#o&&(this.#o=!0,xt(()=>{this.#o=!1,this.is_deferred()?qe.length>0&&this.flush():this.revive()}))}revive(){for(const t of this.#a)this.#r.delete(t),pe(t,Ee),Qe(t);for(const t of this.#r)pe(t,tt),Qe(t);this.flush()}oncommit(t){this.#t.add(t)}ondiscard(t){this.#s.add(t)}settled(){return(this.#i??=na()).promise}static ensure(){if(X===null){const t=X=new pt;ar.add(X),Ht||xt(()=>{X===t&&t.flush()})}return X}apply(){}}function Sn(e){var t=Ht;Ht=!0;try{for(var r;;){if(En(),qe.length===0&&(X?.flush(),qe.length===0))return pr=null,r;ga()}}finally{Ht=t}}function ga(){wr=!0;var e=null;try{for(var t=0;qe.length>0;){var r=pt.ensure();if(t++>1e3){var n,a;Dn()}r.process(qe),ht.clear()}}finally{wr=!1,pr=null}}function Dn(){try{rn()}catch(e){Rt(e,pr)}}let Ke=null;function Hr(e){var t=e.length;if(t!==0){for(var r=0;r0)){ht.clear();for(const a of Ke){if((a.f&(Ge|Pe))!==0)continue;const i=[a];let o=a.parent;for(;o!==null;)Ke.has(o)&&(Ke.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const s=i[l];(s.f&(Ge|Pe))===0&&Gt(s)}}Ke.clear()}}Ke=null}}function _a(e,t,r,n){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const a of e.reactions){const i=a.f;(i&be)!==0?_a(a,t,r,n):(i&(Ar|et))!==0&&(i&Ee)===0&&ba(a,t,n)&&(pe(a,Ee),Qe(a))}}function ba(e,t,r){const n=r.get(e);if(n!==void 0)return n;if(e.deps!==null)for(const a of e.deps){if(t.includes(a))return!0;if((a.f&be)!==0&&ba(a,t,r))return r.set(a,!0),!0}return r.set(e,!1),!1}function Qe(e){for(var t=pr=e;t.parent!==null;){t=t.parent;var r=t.f;if(wr&&t===ue&&(r&et)!==0&&(r&oa)===0)return;if((r&(kt|gt))!==0){if((r&xe)===0)return;t.f^=xe}}qe.push(t)}function Cn(e){let t=0,r=Ct(0),n;return()=>{Ir()&&(p(r),Mr(()=>(t===0&&(n=rr(()=>e(()=>Yt(r)))),t+=1,()=>{xt(()=>{t-=1,t===0&&(n?.(),n=void 0,Yt(r))})})))}}var Nn=St|jt|kr;function kn(e,t,r){new An(e,t,r)}class An{parent;is_pending=!1;#t;#s=null;#e;#n;#i;#a=null;#r=null;#o=null;#l=null;#u=null;#c=0;#f=0;#m=!1;#v=!1;#p=new Set;#h=new Set;#d=null;#x=Cn(()=>(this.#d=Ct(this.#c),()=>{this.#d=null}));constructor(t,r,n){this.#t=t,this.#e=r,this.#n=n,this.parent=ue.b,this.is_pending=!!this.#e.pending,this.#i=er(()=>{ue.b=this;{var a=this.#b();try{this.#a=Ie(()=>n(a))}catch(i){this.error(i)}this.#f>0?this.#_():this.is_pending=!1}return()=>{this.#u?.remove()}},Nn)}#w(){try{this.#a=Ie(()=>this.#n(this.#t))}catch(t){this.error(t)}}#E(){const t=this.#e.pending;t&&(this.#r=Ie(()=>t(this.#t)),xt(()=>{var r=this.#b();this.#a=this.#g(()=>(pt.ensure(),Ie(()=>this.#n(r)))),this.#f>0?this.#_():(wt(this.#r,()=>{this.#r=null}),this.is_pending=!1)}))}#b(){var t=this.#t;return this.is_pending&&(this.#u=Xe(),this.#t.before(this.#u),t=this.#u),t}defer_effect(t){ha(t,this.#p,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#e.pending}#g(t){var r=ue,n=W,a=We;Ye(this.#i),Ce(this.#i),Vt(this.#i.ctx);try{return t()}catch(i){return ma(i),null}finally{Ye(r),Ce(n),Vt(a)}}#_(){const t=this.#e.pending;this.#a!==null&&(this.#l=document.createDocumentFragment(),this.#l.append(this.#u),Ia(this.#a,this.#l)),this.#r===null&&(this.#r=Ie(()=>t(this.#t)))}#y(t){if(!this.has_pending_snippet()){this.parent&&this.parent.#y(t);return}if(this.#f+=t,this.#f===0){this.is_pending=!1;for(const r of this.#p)pe(r,Ee),Qe(r);for(const r of this.#h)pe(r,tt),Qe(r);this.#p.clear(),this.#h.clear(),this.#r&&wt(this.#r,()=>{this.#r=null}),this.#l&&(this.#t.before(this.#l),this.#l=null)}}update_pending_count(t){this.#y(t),this.#c+=t,!(!this.#d||this.#m)&&(this.#m=!0,xt(()=>{this.#m=!1,this.#d&&Ft(this.#d,this.#c)}))}get_effect_pending(){return this.#x(),p(this.#d)}error(t){var r=this.#e.onerror;let n=this.#e.failed;if(this.#v||!r&&!n)throw t;this.#a&&(Ne(this.#a),this.#a=null),this.#r&&(Ne(this.#r),this.#r=null),this.#o&&(Ne(this.#o),this.#o=null);var a=!1,i=!1;const o=()=>{if(a){xn();return}a=!0,i&&ln(),pt.ensure(),this.#c=0,this.#o!==null&&wt(this.#o,()=>{this.#o=null}),this.is_pending=this.has_pending_snippet(),this.#a=this.#g(()=>(this.#v=!1,Ie(()=>this.#n(this.#t)))),this.#f>0?this.#_():this.is_pending=!1};var l=W;try{Ce(null),i=!0,r?.(t,o),i=!1}catch(s){Rt(s,this.#i&&this.#i.parent)}finally{Ce(l)}n&&xt(()=>{this.#o=this.#g(()=>{pt.ensure(),this.#v=!0;try{return Ie(()=>{n(this.#t,()=>t,()=>o)})}catch(s){return Rt(s,this.#i.parent),null}finally{this.#v=!1}})})}}function qn(e,t,r,n){const a=hr;var i=e.filter(v=>!v.settled);if(r.length===0&&i.length===0){n(t.map(a));return}var o=X,l=ue,s=Pn(),u=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(v=>v.promise)):null;function c(v){s();try{n(v)}catch(h){(l.f&Ge)===0&&Rt(h,l)}o?.deactivate(),Er()}if(r.length===0){u.then(()=>c(t.map(a)));return}function m(){s(),Promise.all(r.map(v=>Ln(v))).then(v=>c([...t.map(a),...v])).catch(v=>Rt(v,l))}u?u.then(m):m()}function Pn(){var e=ue,t=W,r=We,n=X;return function(i=!0){Ye(e),Ce(t),Vt(r),i&&n?.activate()}}function Er(){Ye(null),Ce(null),Vt(null)}function hr(e){var t=be|Ee,r=W!==null&&(W.f&be)!==0?W:null;return ue!==null&&(ue.f|=jt),{ctx:We,deps:null,effects:null,equals:ua,f:t,fn:e,reactions:null,rv:0,v:ge,wv:0,parent:r??ue,ac:null}}function Ln(e,t,r){let n=ue;n===null&&tn();var a=n.b,i=void 0,o=Ct(ge),l=!W,s=new Map;return Wn(()=>{var u=na();i=u.promise;try{Promise.resolve(e()).then(u.resolve,u.reject).then(()=>{c===X&&c.committed&&c.deactivate(),Er()})}catch(h){u.reject(h),Er()}var c=X;if(l){var m=a.is_rendered();a.update_pending_count(1),c.increment(m),s.get(c)?.reject(Tt),s.delete(c),s.set(c,u)}const v=(h,_=void 0)=>{if(c.activate(),_)_!==Tt&&(o.f|=mt,Ft(o,_));else{(o.f&mt)!==0&&(o.f^=mt),Ft(o,h);for(const[y,g]of s){if(s.delete(y),y===c)break;g.reject(Tt)}}l&&(a.update_pending_count(-1),c.decrement(m))};u.promise.then(v,h=>v(null,h||"unknown"))}),Or(()=>{for(const u of s.values())u.reject(Tt)}),new Promise(u=>{function c(m){function v(){m===i?u(o):c(i)}m.then(v,v)}c(i)})}function I(e){const t=hr(e);return Oa(t),t}function ya(e){const t=hr(e);return t.equals=da,t}function xa(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r0&&!Ea&&In()}return t}function In(){Ea=!1;for(const e of $r)(e.f&xe)!==0&&pe(e,tt),tr(e)&&Gt(e);$r.clear()}function On(e,t=1){var r=p(e),n=t===1?r++:r--;return oe(e,r),n}function Yt(e){oe(e,e.v+1)}function Sa(e,t){var r=e.reactions;if(r!==null)for(var n=r.length,a=0;a{if(Et===i)return l();var s=W,u=Et;Ce(null),Xr(i);var c=l();return Ce(s),Xr(u),c};return n&&r.set("length",fe(e.length)),new Proxy(e,{defineProperty(l,s,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&nn();var c=r.get(s);return c===void 0?c=o(()=>{var m=fe(u.value);return r.set(s,m),m}):oe(c,u.value,!0),!0},deleteProperty(l,s){var u=r.get(s);if(u===void 0){if(s in l){const c=o(()=>fe(ge));r.set(s,c),Yt(a)}}else oe(u,ge),Yt(a);return!0},get(l,s,u){if(s===Ot)return e;var c=r.get(s),m=s in l;if(c===void 0&&(!m||It(l,s)?.writable)&&(c=o(()=>{var h=ft(m?l[s]:ge),_=fe(h);return _}),r.set(s,c)),c!==void 0){var v=p(c);return v===ge?void 0:v}return Reflect.get(l,s,u)},getOwnPropertyDescriptor(l,s){var u=Reflect.getOwnPropertyDescriptor(l,s);if(u&&"value"in u){var c=r.get(s);c&&(u.value=p(c))}else if(u===void 0){var m=r.get(s),v=m?.v;if(m!==void 0&&v!==ge)return{enumerable:!0,configurable:!0,value:v,writable:!0}}return u},has(l,s){if(s===Ot)return!0;var u=r.get(s),c=u!==void 0&&u.v!==ge||Reflect.has(l,s);if(u!==void 0||ue!==null&&(!c||It(l,s)?.writable)){u===void 0&&(u=o(()=>{var v=c?ft(l[s]):ge,h=fe(v);return h}),r.set(s,u));var m=p(u);if(m===ge)return!1}return c},set(l,s,u,c){var m=r.get(s),v=s in l;if(n&&s==="length")for(var h=u;hfe(ge)),r.set(h+"",_))}if(m===void 0)(!v||It(l,s)?.writable)&&(m=o(()=>fe(void 0)),oe(m,ft(u)),r.set(s,m));else{v=m.v!==ge;var y=o(()=>ft(u));oe(m,y)}var g=Reflect.getOwnPropertyDescriptor(l,s);if(g?.set&&g.set.call(c,u),!v){if(n&&typeof s=="string"){var b=r.get("length"),$=Number(s);Number.isInteger($)&&$>=b.v&&oe(b,$+1)}Yt(a)}return!0},ownKeys(l){p(a);var s=Reflect.ownKeys(l).filter(m=>{var v=r.get(m);return v===void 0||v.v!==ge});for(var[u,c]of r)c.v!==ge&&!(u in l)&&s.push(u);return s},setPrototypeOf(){sn()}})}function Yr(e){try{if(e!==null&&typeof e=="object"&&Ot in e)return e[Ot]}catch{}return e}function Mn(e,t){return Object.is(Yr(e),Yr(t))}var Kr,Da,Ca,Na;function Vn(){if(Kr===void 0){Kr=window,Da=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;Ca=It(t,"firstChild").get,Na=It(t,"nextSibling").get,Ur(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Ur(r)&&(r.__t=void 0)}}function Xe(e=""){return document.createTextNode(e)}function cr(e){return Ca.call(e)}function Qt(e){return Na.call(e)}function f(e,t){return cr(e)}function te(e,t=!1){{var r=cr(e);return r instanceof Comment&&r.data===""?Qt(r):r}}function d(e,t=1,r=!1){let n=e;for(;t--;)n=Qt(n);return n}function Rn(e){e.textContent=""}function ka(){return!1}let Jr=!1;function Fn(){Jr||(Jr=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Lr(e){var t=W,r=ue;Ce(null),Ye(null);try{return e()}finally{Ce(t),Ye(r)}}function Tr(e,t,r,n=r){e.addEventListener(t,()=>Lr(r));const a=e.__on_r;a?e.__on_r=()=>{a(),n(!0)}:e.__on_r=()=>n(!0),Fn()}function jn(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function rt(e,t,r){var n=ue;n!==null&&(n.f&Pe)!==0&&(e|=Pe);var a={ctx:We,deps:null,nodes:null,f:e|Ee|Oe,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};if(r)try{Gt(a),a.f|=sa}catch(l){throw Ne(a),l}else t!==null&&Qe(a);var i=a;if(r&&i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&(i.f&jt)===0&&(i=i.first,(e&et)!==0&&(e&St)!==0&&i!==null&&(i.f|=St)),i!==null&&(i.parent=n,n!==null&&jn(i,n),W!==null&&(W.f&be)!==0&&(e&kt)===0)){var o=W;(o.effects??=[]).push(i)}return a}function Ir(){return W!==null&&!ze}function Or(e){const t=rt(mr,null,!1);return pe(t,xe),t.teardown=e,t}function Bn(e){return rt(lr|Za,e,!1)}function zn(e){pt.ensure();const t=rt(kt|jt,e,!0);return(r={})=>new Promise(n=>{r.outro?wt(t,()=>{Ne(t),n(void 0)}):(Ne(t),n(void 0))})}function Un(e){return rt(lr,e,!1)}function Wn(e){return rt(Ar|jt,e,!0)}function Mr(e,t=0){return rt(mr|t,e,!0)}function H(e,t=[],r=[],n=[]){qn(n,t,r,a=>{rt(mr,()=>e(...a.map(p)),!0)})}function er(e,t=0){var r=rt(et|t,e,!0);return r}function Ie(e){return rt(gt|jt,e,!0)}function Aa(e){var t=e.teardown;if(t!==null){const r=Nt,n=W;Gr(!0),Ce(null);try{t.call(null)}finally{Gr(r),Ce(n)}}}function qa(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const a=r.ac;a!==null&&Lr(()=>{a.abort(Tt)});var n=r.next;(r.f&kt)!==0?r.parent=null:Ne(r,t),r=n}}function Hn(e){for(var t=e.first;t!==null;){var r=t.next;(t.f>)===0&&Ne(t),t=r}}function Ne(e,t=!0){var r=!1;(t||(e.f&oa)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(Yn(e.nodes.start,e.nodes.end),r=!0),qa(e,t&&!r),dr(e,0),pe(e,Ge);var n=e.nodes&&e.nodes.t;if(n!==null)for(const i of n)i.stop();Aa(e);var a=e.parent;a!==null&&a.first!==null&&Pa(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function Yn(e,t){for(;e!==null;){var r=e===t?null:Qt(e);e.remove(),e=r}}function Pa(e){var t=e.parent,r=e.prev,n=e.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),t!==null&&(t.first===e&&(t.first=n),t.last===e&&(t.last=r))}function wt(e,t,r=!0){var n=[];La(e,n,!0);var a=()=>{r&&Ne(e),t&&t()},i=n.length;if(i>0){var o=()=>--i||a();for(var l of n)l.out(o)}else a()}function La(e,t,r){if((e.f&Pe)===0){e.f^=Pe;var n=e.nodes&&e.nodes.t;if(n!==null)for(const l of n)(l.is_global||r)&&t.push(l);for(var a=e.first;a!==null;){var i=a.next,o=(a.f&St)!==0||(a.f>)!==0&&(e.f&et)!==0;La(a,t,o?r:!1),a=i}}}function Vr(e){Ta(e,!0)}function Ta(e,t){if((e.f&Pe)!==0){e.f^=Pe,(e.f&xe)===0&&(pe(e,Ee),Qe(e));for(var r=e.first;r!==null;){var n=r.next,a=(r.f&St)!==0||(r.f>)!==0;Ta(r,a?t:!1),r=n}var i=e.nodes&&e.nodes.t;if(i!==null)for(const o of i)(o.is_global||t)&&o.in()}}function Ia(e,t){if(e.nodes)for(var r=e.nodes.start,n=e.nodes.end;r!==null;){var a=r===n?null:Qt(r);t.append(r),r=a}}let sr=!1,Nt=!1;function Gr(e){Nt=e}let W=null,ze=!1;function Ce(e){W=e}let ue=null;function Ye(e){ue=e}let Ze=null;function Oa(e){W!==null&&(Ze===null?Ze=[e]:Ze.push(e))}let Se=null,Ae=0,Te=null;function Kn(e){Te=e}let Ma=1,yt=0,Et=yt;function Xr(e){Et=e}function Va(){return++Ma}function tr(e){var t=e.f;if((t&Ee)!==0)return!0;if(t&be&&(e.f&=~Dt),(t&tt)!==0){for(var r=e.deps,n=r.length,a=0;ae.wv)return!0}(t&Oe)!==0&&Be===null&&pe(e,xe)}return!1}function Ra(e,t,r=!0){var n=e.reactions;if(n!==null&&!Ze?.includes(e))for(var a=0;a{e.ac.abort(Tt)}),e.ac=null);try{e.f|=xr;var c=e.fn,m=c(),v=e.deps;if(Se!==null){var h;if(dr(e,Ae),v!==null&&Ae>0)for(v.length=Ae+Se.length,h=0;h{throw g});throw v}}finally{e.__root=t,delete e.currentTarget,Ce(c),Ye(m)}}}function Qn(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("",""),t.content}function fr(e,t){var r=ue;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function D(e,t){var r=(t&gn)!==0,n=(t&_n)!==0,a,i=!e.startsWith("");return()=>{a===void 0&&(a=Qn(i?e:""+e),r||(a=cr(a)));var o=n||Da?document.importNode(a,!0):a.cloneNode(!0);if(r){var l=cr(o),s=o.lastChild;fr(l,s)}else fr(o,o);return o}}function Ua(e=""){{var t=Xe(e+"");return fr(t,t),t}}function je(){var e=document.createDocumentFragment(),t=document.createComment(""),r=Xe();return e.append(t,r),fr(t,r),e}function E(e,t){e!==null&&e.before(t)}function V(e,t){var r=t==null?"":typeof t=="object"?t+"":t;r!==(e.__t??=e.nodeValue)&&(e.__t=r,e.nodeValue=r+"")}function ei(e,t){return ti(e,t)}const qt=new Map;function ti(e,{target:t,anchor:r,props:n={},events:a,context:i,intro:o=!0}){Vn();var l=new Set,s=m=>{for(var v=0;v{var m=r??t.appendChild(Xe());return kn(m,{pending:()=>{}},v=>{if(i){Ve({});var h=We;h.c=i}a&&(n.$$events=a),u=e(v,n)||{},i&&Re()}),()=>{for(var v of l){t.removeEventListener(v,nr);var h=qt.get(v);--h===0?(document.removeEventListener(v,nr),qt.delete(v)):qt.set(v,h)}Sr.delete(s),m!==r&&m.parentNode?.removeChild(m)}});return ri.set(u,c),u}let ri=new WeakMap;class Rr{anchor;#t=new Map;#s=new Map;#e=new Map;#n=new Set;#i=!0;constructor(t,r=!0){this.anchor=t,this.#i=r}#a=()=>{var t=X;if(this.#t.has(t)){var r=this.#t.get(t),n=this.#s.get(r);if(n)Vr(n),this.#n.delete(r);else{var a=this.#e.get(r);a&&(this.#s.set(r,a.effect),this.#e.delete(r),a.fragment.lastChild.remove(),this.anchor.before(a.fragment),n=a.effect)}for(const[i,o]of this.#t){if(this.#t.delete(i),i===t)break;const l=this.#e.get(o);l&&(Ne(l.effect),this.#e.delete(o))}for(const[i,o]of this.#s){if(i===r||this.#n.has(i))continue;const l=()=>{if(Array.from(this.#t.values()).includes(i)){var u=document.createDocumentFragment();Ia(o,u),u.append(Xe()),this.#e.set(i,{effect:o,fragment:u})}else Ne(o);this.#n.delete(i),this.#s.delete(i)};this.#i||!n?(this.#n.add(i),wt(o,l,!1)):l()}}};#r=t=>{this.#t.delete(t);const r=Array.from(this.#t.values());for(const[n,a]of this.#e)r.includes(n)||(Ne(a.effect),this.#e.delete(n))};ensure(t,r){var n=X,a=ka();if(r&&!this.#s.has(t)&&!this.#e.has(t))if(a){var i=document.createDocumentFragment(),o=Xe();i.append(o),this.#e.set(t,{effect:Ie(()=>r(o)),fragment:i})}else this.#s.set(t,Ie(()=>r(this.anchor)));if(this.#t.set(n,t),a){for(const[l,s]of this.#s)l===t?n.skipped_effects.delete(s):n.skipped_effects.add(s);for(const[l,s]of this.#e)l===t?n.skipped_effects.delete(s.effect):n.skipped_effects.add(s.effect);n.oncommit(this.#a),n.ondiscard(this.#r)}else this.#a()}}function ie(e,t,r=!1){var n=new Rr(e),a=r?St:0;function i(o,l){n.ensure(o,l)}er(()=>{var o=!1;t((l,s=!0)=>{o=!0,i(s,l)}),o||i(!1,null)},a)}function ai(e,t,r){var n=new Rr(e);er(()=>{var a=t();n.ensure(a,r)})}function Fr(e,t){return t}function ni(e,t,r){for(var n=[],a=t.length,i,o=t.length,l=0;l{if(i){if(i.pending.delete(m),i.done.add(m),i.pending.size===0){var v=e.outrogroups;Dr(vr(i.done)),v.delete(i),v.size===0&&(e.outrogroups=null)}}else o-=1},!1)}if(o===0){var s=n.length===0&&r!==null;if(s){var u=r,c=u.parentNode;Rn(c),c.append(u),e.items.clear()}Dr(t,!s)}else i={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(i)}function Dr(e,t=!0){for(var r=0;r{var b=r();return Nr(b)?b:b==null?[]:vr(b)}),v,h=!0;function _(){g.fallback=c,ii(g,v,o,t,n),c!==null&&(v.length===0?(c.f&Je)===0?Vr(c):(c.f^=Je,Ut(c,null,o)):wt(c,()=>{c=null}))}var y=er(()=>{v=p(m);for(var b=v.length,$=new Set,q=X,k=ka(),S=0;Si(o)):(c=Ie(()=>i(Qr??=Xe())),c.f|=Je)),!h)if(k){for(const[N,T]of l)$.has(N)||q.skipped_effects.add(T.e);q.oncommit(_),q.ondiscard(()=>{})}else _();p(m)}),g={effect:y,items:l,outrogroups:null,fallback:c};h=!1}function ii(e,t,r,n,a){var i=(n&dn)!==0,o=t.length,l=e.items,s=e.effect.first,u,c=null,m,v=[],h=[],_,y,g,b;if(i)for(b=0;b0){var N=(n&la)!==0&&o===0?r:null;if(i){for(b=0;b{if(m!==void 0)for(g of m)g.nodes?.a?.apply()})}function si(e,t,r,n,a,i,o,l){var s=(o&un)!==0?(o&fn)===0?$a(r,!1,!1):Ct(r):null,u=(o&cn)!==0?Ct(a):null;return{v:s,i:u,e:Ie(()=>(i(t,s??r,u??a,l),()=>{e.delete(n)}))}}function Ut(e,t,r){if(e.nodes)for(var n=e.nodes.start,a=e.nodes.end,i=t&&(t.f&Je)===0?t.nodes.start:r;n!==null;){var o=Qt(n);if(i.before(n),n===a)return;n=o}}function dt(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}function Mt(e,t,...r){var n=new Rr(e);er(()=>{const a=t()??null;n.ensure(a,a&&(i=>a(i,...r)))},St)}function oi(e,t,r){var n=e==null?"":""+e;return n===""?null:n}function Me(e,t,r,n,a,i){var o=e.__className;if(o!==r||o===void 0){var l=oi(r);l==null?e.removeAttribute("class"):t?e.className=l:e.setAttribute("class",l),e.__className=r}return i}function Wa(e,t,r=!1){if(e.multiple){if(t==null)return;if(!Nr(t))return yn();for(var n of e.options)n.selected=t.includes(Kt(n));return}for(n of e.options){var a=Kt(n);if(Mn(a,t)){n.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function li(e){var t=new MutationObserver(()=>{Wa(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Or(()=>{t.disconnect()})}function ui(e,t,r=t){var n=new WeakSet,a=!0;Tr(e,"change",i=>{var o=i?"[selected]":":checked",l;if(e.multiple)l=[].map.call(e.querySelectorAll(o),Kt);else{var s=e.querySelector(o)??e.querySelector("option:not([disabled])");l=s&&Kt(s)}r(l),X!==null&&n.add(X)}),Un(()=>{var i=t();if(e===document.activeElement){var o=ur??X;if(n.has(o))return}if(Wa(e,i,a),a&&i===void 0){var l=e.querySelector(":checked");l!==null&&(i=Kt(l),r(i))}e.__value=i,a=!1}),li(e)}function Kt(e){return"__value"in e?e.__value:e.value}const ci=Symbol("is custom element"),di=Symbol("is html");function _e(e,t,r,n){var a=fi(e);a[t]!==(a[t]=r)&&(t==="loading"&&(e[en]=r),r==null?e.removeAttribute(t):typeof r!="string"&&vi(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function fi(e){return e.__attributes??={[ci]:e.nodeName.includes("-"),[di]:e.namespaceURI===bn}}var ea=new Map;function vi(e){var t=e.getAttribute("is")||e.nodeName,r=ea.get(t);if(r)return r;ea.set(t,r=[]);for(var n,a=e,i=Element.prototype;i!==a;){n=Ja(a);for(var o in n)n[o].set&&r.push(o);a=ra(a)}return r}function Xt(e,t,r=t){var n=new WeakSet;Tr(e,"input",async a=>{var i=a?e.defaultValue:e.value;if(i=_r(e)?br(i):i,r(i),X!==null&&n.add(X),await Gn(),i!==(i=t())){var o=e.selectionStart,l=e.selectionEnd,s=e.value.length;if(e.value=i??"",l!==null){var u=e.value.length;o===l&&l===s&&u>s?(e.selectionStart=u,e.selectionEnd=u):(e.selectionStart=o,e.selectionEnd=Math.min(l,u))}}}),rr(t)==null&&e.value&&(r(_r(e)?br(e.value):e.value),X!==null&&n.add(X)),Mr(()=>{var a=t();if(e===document.activeElement){var i=ur??X;if(n.has(i))return}_r(e)&&a===br(e.value)||e.type==="date"&&!a&&!e.value||a!==e.value&&(e.value=a??"")})}function or(e,t,r=t){Tr(e,"change",n=>{var a=n?e.defaultChecked:e.checked;r(a)}),rr(t)==null&&r(e.checked),Mr(()=>{var n=t();e.checked=!!n})}function _r(e){var t=e.type;return t==="number"||t==="range"}function br(e){return e===""?null:+e}function Br(e,t,r){if(e==null)return t(void 0),r&&r(void 0),vt;const n=rr(()=>e.subscribe(t,r));return n.unsubscribe?()=>n.unsubscribe():n}const Pt=[];function mi(e,t){return{subscribe:Lt(e,t).subscribe}}function Lt(e,t=vt){let r=null;const n=new Set;function a(l){if(ca(e,l)&&(e=l,r)){const s=!Pt.length;for(const u of n)u[1](),Pt.push(u,e);if(s){for(let u=0;u{n.delete(u),n.size===0&&r&&(r(),r=null)}}return{set:a,update:i,subscribe:o}}function pi(e,t,r){const n=!Array.isArray(e),a=n?[e]:e;if(!a.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return mi(r,(o,l)=>{let s=!1;const u=[];let c=0,m=vt;const v=()=>{if(c)return;m();const _=t(n?u[0]:u,o,l);i?o(_):m=typeof _=="function"?_:vt},h=a.map((_,y)=>Br(_,g=>{u[y]=g,c&=~(1<{c|=1<t=r)(),t}let ir=!1,Cr=Symbol();function K(e,t,r){const n=r[t]??={store:null,source:$a(void 0),unsubscribe:vt};if(n.store!==e&&!(Cr in r))if(n.unsubscribe(),n.store=e??null,e==null)n.source.v=void 0,n.unsubscribe=vt;else{var a=!0;n.unsubscribe=Br(e,i=>{a?n.source.v=i:oe(n.source,i)}),a=!1}return e&&Cr in r?Wt(e):p(n.source)}function nt(){const e={};function t(){Or(()=>{for(var r in e)e[r].unsubscribe();ta(e,Cr,{enumerable:!1,value:!0})})}return[e,t]}function hi(e){var t=ir;try{return ir=!1,[e(),ir]}finally{ir=t}}function De(e,t,r,n){var a=(r&pn)!==0,i=(r&hn)!==0,o=n,l=!0,s=()=>(l&&(l=!1,o=i?rr(n):n),o),u;if(a){var c=Ot in e||Qa in e;u=It(e,t)?.set??(c&&t in e?$=>e[t]=$:void 0)}var m,v=!1;a?[m,v]=hi(()=>e[t]):m=e[t],m===void 0&&n!==void 0&&(m=s(),u&&(an(),u(m)));var h;if(h=()=>{var $=e[t];return $===void 0?s():(l=!0,$)},(r&mn)===0)return h;if(u){var _=e.$$legacy;return(function($,q){return arguments.length>0?((!q||_||v)&&u(q?h():$),$):h()})}var y=!1,g=((r&vn)!==0?hr:ya)(()=>(y=!1,h()));a&&p(g);var b=ue;return(function($,q){if(arguments.length>0){const k=q?p(g):a?ft($):$;return oe(g,k),y=!0,o!==void 0&&(o=k),$}return Nt&&y||(b.f&Ge)!==0?g.v:p(g)})}const gi="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(gi);const _i=e=>typeof e=="object"&&e!==null&&!(e instanceof Date)&&!(e instanceof Map)&&!(e instanceof Set)&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!(e instanceof RegExp)&&!(e instanceof Error)&&!(e instanceof Promise),bi=(e,t)=>{const r=(a,i)=>new Proxy(a,{get(o,l){const s=o[l];if(_i(s)){const u=Number.isInteger(Number(l))?"":String(l),c=u?i?`${i}.${u}`:u:i;return r(s,c)}return s},set(o,l,s){const u=o[l];if(u!==s){o[l]=s;const c=Number.isInteger(Number(l))?"":String(l),m=c?i?`${i}.${c}`:c:i;t(n,m,s,u)}return!0}}),n=r(e,"");return n},Ha=e=>Object.values(e).some(t=>typeof t=="string"?!!t:Ha(t)),yi=e=>!!e&&Ha(e),_t=e=>{if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return e.map(r=>_t(r));const t=Object.create(Object.getPrototypeOf(e));for(const r of Object.keys(e))t[r]=_t(e[r]);return t},xi={resetDirtyOnAction:!0,debounceValidation:0,allowConcurrentActions:!1,persistActionError:!1};function it(e,t,r){const n={...xi,...r},{validator:a,effect:i}=t??{},o=Lt(),l=pi(o,yi),s=Lt(!1),u=Lt(!1),c=Lt(),m=Lt([{title:"Initial",data:_t(e)}]),v=ft(e),h=(C,x=!0)=>{const w=Wt(m),N={title:C,data:_t(v)},T=w.at(-1);x&&T&&T.title===C?m.set([...w.slice(0,-1),N]):m.set([...w,N])};let _=!1,y;const g=()=>{if(a)if(n.debounceValidation>0)clearTimeout(y),y=setTimeout(()=>{o.set(a(b))},n.debounceValidation);else{if(_)return;_=!0,queueMicrotask(()=>{o.set(a(b)),_=!1})}},b=bi(v,(C,x,w,N)=>{if(n.persistActionError||c.set(void 0),s.set(!0),i?.({snapshot:h,target:C,property:x,currentValue:w,oldValue:N})instanceof Promise)throw new Error("svstate: effect callback must be synchronous. Use action for async operations.");g()});return a&&o.set(a(b)),{data:b,execute:async C=>{if(!(!n.allowConcurrentActions&&Wt(u))){c.set(void 0),u.set(!0);try{await t?.action?.(C),n.resetDirtyOnAction&&s.set(!1),m.set([{title:"Initial",data:_t(v)}]),await t?.actionCompleted?.()}catch(x){await t?.actionCompleted?.(x),c.set(x instanceof Error?x:void 0)}finally{u.set(!1)}}},state:{errors:o,hasErrors:l,isDirty:s,actionInProgress:u,actionError:c,snapshots:m},rollback:(C=1)=>{const x=Wt(m);if(x.length<=1)return;const w=Math.max(0,x.length-1-C),N=x[w];N&&(Object.assign(v,_t(N.data)),m.set(x.slice(0,w+1)),a&&o.set(a(b)))},reset:()=>{const x=Wt(m)[0];x&&(Object.assign(v,_t(x.data)),m.set([x]),a&&o.set(a(b)))}}}const wi={trim:e=>e.trim(),normalize:e=>e.replaceAll(/\s{2,}/g," "),upper:e=>e.toUpperCase(),lower:e=>e.toLowerCase()};function Z(e,...t){let r="";const n=o=>{r||(r=o)},a=t.reduce((o,l)=>wi[l](o),e),i={required(){return!r&&!a&&n("Required"),i},noSpace(){return!r&&a.includes(" ")&&n("No space allowed"),i},minLength(o){return!r&&a.lengtho&&n(`Max length ${o}`),i},uppercase(){return!r&&a!==a.toUpperCase()&&n("Uppercase only"),i},lowercase(){return!r&&a!==a.toLowerCase()&&n("Lowercase only"),i},startsWith(o){if(r)return i;const l=Array.isArray(o)?o:[o];return a&&!l.some(s=>a.startsWith(s))&&n(`Must start with ${l.join(", ")}`),i},regexp(o,l){return!r&&a&&!o.test(a)&&n(l??"Not allowed chars"),i},inArray(o){if(r)return i;const l=Array.isArray(o)?o:Object.keys(o);return a&&!l.includes(a)&&n(`Must be one of: ${l.join(", ")}`),i},email(){return!r&&a&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a)&&n("Invalid email format"),i},website(o="optional"){if(r||!a||o==="optional")return i;const l=/^https?:\/\//.test(a);return o==="required"&&!l?n("Must start with http:// or https://"):o==="forbidden"&&l&&n("Must not start with http:// or https://"),i},endsWith(o){if(r||!a)return i;const l=Array.isArray(o)?o:[o];return l.some(s=>a.endsWith(s))||n(`Must end with ${l.join(", ")}`),i},contains(o){return!r&&a&&!a.includes(o)&&n(`Must contain "${o}"`),i},alphanumeric(){return!r&&a&&!/^[\dA-Za-z]+$/.test(a)&&n("Only letters and numbers allowed"),i},numeric(){return!r&&a&&!/^\d+$/.test(a)&&n("Only numbers allowed"),i},getError(){return r}};return i}function Zt(e){let t="";const r=a=>{t||(t=a)},n={required(){return!t&&Number.isNaN(e)&&r("Required"),n},min(a){return!t&&ea&&r(`Maximum ${a}`),n},between(a,i){return!t&&(ei)&&r(`Must be between ${a} and ${i}`),n},integer(){return!t&&!Number.isInteger(e)&&r("Must be an integer"),n},positive(){return!t&&e<=0&&r("Must be positive"),n},negative(){return!t&&e>=0&&r("Must be negative"),n},nonNegative(){return!t&&e<0&&r("Must be non-negative"),n},multipleOf(a){return!t&&e%a!==0&&r(`Must be a multiple of ${a}`),n},decimal(a){return t||Number.isNaN(e)||(String(e).split(".")[1]?.length??0)>a&&r(`Maximum ${a} decimal places`),n},percentage(){return!t&&(e<0||e>100)&&r("Must be between 0 and 100"),n},getError(){return t}};return n}function Ei(e){let t="";const r=a=>{t||(t=a)},n={required(){return!t&&e.length===0&&r("Required"),n},minLength(a){return!t&&e.lengtha&&r(`Maximum ${a} items`),n},unique(){if(t)return n;const a=new Set;for(const i of e){const o=typeof i=="object"?JSON.stringify(i):String(i);if(a.has(o)){r("Items must be unique");break}a.add(o)}return n},getError(){return t}};return n}var $i=D('
        '),Si=D('
         
        ');function de(e,t){var r=Si(),n=f(r);{var a=l=>{var s=$i(),u=f(s);H(()=>V(u,t.title)),E(l,s)};ie(n,l=>{t.title&&l(a)})}var i=d(n,2),o=f(i);H(()=>V(o,t.code)),E(e,r)}var Di=D('
        State Object
         
        State Info
        isDirty:
        hasErrors:
        Errors
         
        ');function st(e,t){let r=De(t,"width",3,"xl:w-80");var n=Di(),a=f(n),i=d(f(a),2),o=f(i),l=d(a,2),s=d(f(l),2),u=f(s),c=d(f(u)),m=d(u,2),v=d(f(m)),h=d(l,2),_=d(f(h),2),y=f(_),g=d(h,2);g.__click=function(...b){t.onFill?.apply(this,b)},H((b,$)=>{Me(n,1,`w-full ${r()??""} flex-shrink-0 space-y-4`),V(o,b),V(c,` ${t.isDirty??""}`),V(v,` ${t.hasErrors??""}`),V(y,$)},[()=>JSON.stringify(t.data,void 0,2),()=>JSON.stringify(t.errors,void 0,2)]),E(e,n)}at(["click"]);var Ci=D('

        ');function Jt(e,t){var r=je(),n=te(r);{var a=i=>{var o=Ci(),l=f(o);H(()=>V(l,t.error)),E(i,o)};ie(n,i=>{t.error&&i(a)})}E(e,r)}var Ni=D("
        ");function Q(e,t){Ve(t,!0);let r=De(t,"type",3,"text"),n=De(t,"placeholder",3,""),a=De(t,"value",15),i=De(t,"error",3,""),o=De(t,"required",3,!0),l=De(t,"disabled",3,!1),s=De(t,"variant",3,"default");const u=I(()=>s()==="nested"?"bg-white":"bg-gray-50");var c=Ni(),m=f(c),v=f(m),h=d(m,2),_=d(h,2);{let y=I(()=>i()??"");Jt(_,{get error(){return p(y)}})}H(()=>{Me(m,1,`mb-2 block text-sm text-gray-900 ${o()?"font-bold":""}`),_e(m,"for",t.id),V(v,t.label),_e(h,"id",t.id),Me(h,1,`block w-full rounded-lg border p-2.5 text-sm ${i()?"border-red-500 bg-red-50 text-red-900 placeholder-red-400 focus:border-red-500 focus:ring-red-500":`border-gray-300 ${p(u)} text-gray-900 focus:border-blue-500 focus:ring-blue-500`} ${l()?"cursor-not-allowed opacity-50":""}`),h.disabled=l(),_e(h,"max",t.max),_e(h,"min",t.min),_e(h,"placeholder",n()),_e(h,"step",t.step),_e(h,"type",r())}),Xt(h,a),E(e,c),Re()}var ki=D('

        '),Ai=D('
        '),qi=D('
        ',1);function ot(e,t){var r=qi(),n=te(r),a=f(n),i=f(a),o=f(i),l=d(i,2);{var s=_=>{var y=ki(),g=f(y);H(()=>V(g,t.description)),E(_,y)},u=_=>{var y=Ai();E(_,y)};ie(l,_=>{t.description?_(s):_(u,!1)})}var c=d(l,2);Mt(c,()=>t.main);var m=d(a,2);Mt(m,()=>t.sidebar);var v=d(n,2);{var h=_=>{var y=je(),g=te(y);Mt(g,()=>t.sourceCode),E(_,y)};ie(v,_=>{t.sourceCode&&_(h)})}H(()=>V(o,t.title)),E(e,r)}var Pi=D('
        '),Li=D('
        ');function lt(e,t){let r=fe(!1);var n=Li(),a=f(n);a.__click=()=>oe(r,!p(r));var i=d(f(a),2),o=d(a,2);{var l=s=>{var u=Pi(),c=f(u);Mt(c,()=>t.children),E(s,u)};ie(o,s=>{p(r)&&s(l)})}H(()=>{Me(a,1,`flex w-full cursor-pointer items-center justify-between px-4 py-3 text-left text-sm font-medium text-gray-900 hover:bg-gray-50 ${p(r)?"border-b border-gray-200":""}`),Me(i,0,`h-5 w-5 transform transition-transform ${p(r)?"rotate-180":""}`)}),E(e,n)}at(["click"]);var Ti=D('
        ');function ut(e,t){var r=Ti(),n=f(r),a=f(n),i=d(n,2),o=f(i);H(()=>{Me(n,1,`rounded px-2.5 py-0.5 text-xs font-medium ${t.hasErrors?"bg-red-100 text-red-800":"bg-green-100 text-green-800"}`),V(a,t.hasErrors?"Has Errors":"Valid"),Me(i,1,`rounded px-2.5 py-0.5 text-xs font-medium ${t.isDirty?"bg-yellow-100 text-yellow-800":"bg-gray-100 text-gray-800"}`),V(o,t.isDirty?"Modified":"Clean")}),E(e,r)}const le=()=>Math.random().toString(36).slice(2,8),Ue=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;var Ii=D('
        '),Oi=D('
        '),Mi=D(' Submitting...'),Vi=D('
        ',1),Ri=D('
        Action State
        actionInProgress:
        actionError:
        '),Fi=D(" ",1);function ji(e,t){Ve(t,!0);const r=()=>K(y,"$hasErrors",l),n=()=>K(g,"$isDirty",l),a=()=>K(b,"$actionInProgress",l),i=()=>K(_,"$errors",l),o=()=>K($,"$actionError",l),[l,s]=nt(),u={title:`Task ${le()}`,description:`This is a sample task description with ID ${le()}`};let c=fe(!1),m=fe(void 0);const{data:v,execute:h,state:{errors:_,hasErrors:y,isDirty:g,actionInProgress:b,actionError:$}}=it(u,{validator:w=>({title:Z(w.title,"trim").required().minLength(3).maxLength(50).getError(),description:Z(w.description,"trim").required().minLength(10).maxLength(200).getError()}),action:async()=>{const w=Ue(100,1e3);if(await new Promise(N=>setTimeout(N,w)),p(c))throw new Error(`Simulated server error after ${w}ms`);oe(m,`Submitted successfully in ${w}ms!`)},actionCompleted:w=>{w&&oe(m,void 0)}}),q=()=>{v.title=`Task ${le()}`,v.description=`This is a sample task description with ID ${le()}`},k=()=>{oe(m,void 0),h()},S=`const { data, execute, state: { errors, hasErrors, isDirty, actionInProgress, actionError } } = - createSvState(sourceData, { - validator: (source) => ({ - title: stringValidator(source.title, 'trim').required().minLength(3).maxLength(50).getError(), - description: stringValidator(source.description, 'trim').required().minLength(10).getError() - }), - action: async () => { - // Simulate API call with 100-1000ms delay - const delay = randomInt(100, 1000); - await new Promise((resolve) => setTimeout(resolve, delay)); - - if (shouldFail) { - throw new Error('Simulated server error'); - } - }, - actionCompleted: (error) => { - // Called after action completes (success or failure) - console.log(error ? 'Action failed' : 'Action succeeded'); - } - });`,C=`// Execute the action - - -// With parameters (if action accepts them) -execute({ userId: 123 });`,x=`// Display action error -{#if $actionError} -
        - {$actionError.message} -
        -{/if} - -// Check if action is in progress -{#if $actionInProgress} -
        Submitting...
        -{/if}`;ot(e,{description:"Demonstrates async action execution with loading states and error handling.",title:"Action Demo",main:O=>{var P=Vi(),ae=te(P);ut(ae,{get hasErrors(){return r()},get isDirty(){return n()}});var M=d(ae,2),L=f(M),F=f(L),ee=d(M,2),ne=f(ee);{let re=I(()=>i()?.title);Q(ne,{id:"title",get disabled(){return a()},get error(){return p(re)},label:"Title",placeholder:"Enter task title",get value(){return v.title},set value(ce){v.title=ce}})}var se=d(ne,2);{let re=I(()=>i()?.description);Q(se,{id:"description",get disabled(){return a()},get error(){return p(re)},label:"Description",placeholder:"Enter task description (min 10 characters)",get value(){return v.description},set value(ce){v.description=ce}})}var z=d(se,2),B=f(z),J=d(ee,2);{var R=re=>{var ce=Ii(),$e=f(ce),we=d(f($e),2),Fe=f(we);H(()=>V(Fe,o().message)),E(re,ce)};ie(J,re=>{o()&&re(R)})}var A=d(J,2);{var G=re=>{var ce=Oi(),$e=f(ce),we=d(f($e),2),Fe=f(we);H(()=>V(Fe,p(m))),E(re,ce)};ie(A,re=>{p(m)&&re(G)})}var he=d(A,2),j=f(he);j.__click=k;var U=f(j);{var ve=re=>{var ce=Mi();E(re,ce)},ke=re=>{var ce=Ua("Submit");E(re,ce)};ie(U,re=>{a()?re(ve):re(ke,!1)})}H(()=>{Me(L,1,`rounded px-2.5 py-0.5 text-xs font-medium ${a()?"bg-blue-100 text-blue-800":"bg-gray-100 text-gray-800"}`),V(F,a()?"In Progress":"Idle"),B.disabled=a(),j.disabled=r()||a()}),or(B,()=>p(c),re=>oe(c,re)),E(O,P)},sidebar:O=>{var P=Ri(),ae=f(P);st(ae,{get data(){return v},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:q});var M=d(ae,2),L=d(f(M),2),F=f(L),ee=d(f(F)),ne=d(F,2),se=d(f(ne));H(()=>{V(ee,` ${a()??""}`),V(se,` ${o()?.message??"none"??""}`)}),E(O,P)},sourceCode:O=>{lt(O,{children:(P,ae)=>{var M=Fi(),L=te(M);de(L,{code:S,title:"State Setup with Action"});var F=d(L,2);de(F,{code:C,title:"Execute Action"});var ee=d(F,2);de(ee,{code:x,title:"Error & Loading States"}),E(P,M)}})}}),Re(),s()}at(["click"]);var Bi=D('
        ');function zi(e,t){let r=De(t,"label",3,"Item");var n=Bi(),a=f(n),i=f(a),o=f(i),l=d(i,2);l.__click=function(...u){t.onRemove?.apply(this,u)};var s=d(a,2);Mt(s,()=>t.children),H(()=>V(o,`${r()??""} #${t.index+1}`)),E(e,n)}at(["click"]);var Ui=D('

        ');function Wi(e,t){var r=Ui(),n=f(r),a=f(n);H(()=>V(a,t.message)),E(e,r)}var Hi=D('
        '),Yi=D('
        '),Ki=D('
        '),Ji=D('
        Contacts
        ',1),Gi=D(" ",1);function Xi(e,t){Ve(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=nt(),l={listName:"",items:[]},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=it(l,{validator:b=>({listName:Z(b.listName,"trim").required().minLength(2).getError(),items:Ei(b.items).required().minLength(1).getError(),...Object.fromEntries(b.items.map(($,q)=>[`item_${q}`,{name:Z($.name,"trim").required().minLength(2).getError(),email:Z($.email,"trim").required().email().getError()}]))})}),v=()=>{s.items=[...s.items,{name:"",email:""}]},h=b=>{s.items=s.items.filter(($,q)=>q!==b)},_=()=>{s.listName=`Contact List ${le()}`,s.items=[{name:"John Doe",email:"john@example.com"},{name:"Jane Smith",email:"jane@example.com"},{name:"Bob Wilson",email:"bob@example.com"}]},y=`const sourceData = { - listName: '', - items: [] as { name: string; email: string }[] -}; - -const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - listName: stringValidator(source.listName, 'trim').required().minLength(2).getError(), - items: arrayValidator(source.items).required().minLength(1).getError(), - // Per-item validation using indexed keys - ...Object.fromEntries( - source.items.map((item, index) => [ - \`item_\${index}\`, - { - name: stringValidator(item.name, 'trim').required().minLength(2).getError(), - email: stringValidator(item.email, 'trim').required().email().getError() - } - ]) - ) - }) -});`,g=`// Define type for item errors -type ItemErrors = Record; - -{#each data.items as item, index} - - - - - -{/each}`;ot(e,{description:"Shows how to validate dynamic arrays with per-item validation using indexed error keys.",title:"Array Property Demo",main:k=>{var S=Ji(),C=te(S);ut(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let z=I(()=>a()?.listName);Q(w,{id:"listName",get error(){return p(z)},label:"List Name",placeholder:"Enter list name",get value(){return s.listName},set value(B){s.listName=B}})}var N=d(w,2),T=f(N),O=f(T),P=d(f(O)),ae=f(P),M=d(O,2);M.__click=v;var L=d(T,2);{var F=z=>{var B=Hi(),J=f(B);Jt(J,{get error(){return a().items}}),E(z,B)};ie(L,z=>{a()?.items&&z(F)})}var ee=d(L,2);{var ne=z=>{Wi(z,{message:'No contacts yet. Click "Add Contact" to get started.'})},se=z=>{var B=Ki();jr(B,21,()=>s.items,Fr,(J,R,A)=>{zi(J,{index:A,label:"Contact",onRemove:()=>h(A),children:(G,he)=>{var j=Yi(),U=f(j),ve=f(U);_e(ve,"for",`item-name-${A}`);var ke=d(ve,2);_e(ke,"id",`item-name-${A}`);var re=d(ke,2);{let ye=I(()=>a()?.[`item_${A}`]?.name??"");Jt(re,{get error(){return p(ye)}})}var ce=d(U,2),$e=f(ce);_e($e,"for",`item-email-${A}`);var we=d($e,2);_e(we,"id",`item-email-${A}`);var Fe=d(we,2);{let ye=I(()=>a()?.[`item_${A}`]?.email??"");Jt(Fe,{get error(){return p(ye)}})}H(()=>{Me(ke,1,`block w-full rounded-lg border p-2 text-sm ${a()?.[`item_${A}`]?.name?"border-red-500 bg-red-50 text-red-900 placeholder-red-400":"border-gray-300 bg-white text-gray-900"}`),Me(we,1,`block w-full rounded-lg border p-2 text-sm ${a()?.[`item_${A}`]?.email?"border-red-500 bg-red-50 text-red-900 placeholder-red-400":"border-gray-300 bg-white text-gray-900"}`)}),Xt(ke,()=>p(R).name,ye=>p(R).name=ye),Xt(we,()=>p(R).email,ye=>p(R).email=ye),E(G,j)},$$slots:{default:!0}})}),E(z,B)};ie(ee,z=>{s.items.length===0?z(ne):z(se,!1)})}H(()=>V(ae,`${s.items.length??""} items`)),E(k,S)},sidebar:k=>{st(k,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:_,width:"xl:w-96"})},sourceCode:k=>{lt(k,{children:(S,C)=>{var x=Gi(),w=te(x);de(w,{code:y,title:"State Setup with Array Item Validation"});var N=d(w,2);de(N,{code:g,title:"Array Form Binding Examples"}),E(S,x)}})}}),Re(),o()}at(["click"]);var Zi=D("
        ");function zr(e,t){Ve(t,!0);let r=De(t,"placeholder",3,""),n=De(t,"value",15),a=De(t,"error",3,""),i=De(t,"required",3,!1),o=De(t,"rows",3,3);var l=Zi(),s=f(l),u=f(s),c=d(s,2),m=d(c,2);{let v=I(()=>a()??"");Jt(m,{get error(){return p(v)}})}H(()=>{Me(s,1,`mb-2 block text-sm text-gray-900 ${i()?"font-bold":""}`),_e(s,"for",t.id),V(u,t.label),_e(c,"id",t.id),Me(c,1,`block w-full rounded-lg border p-2.5 text-sm ${a()?"border-red-500 bg-red-50 text-red-900 placeholder-red-400 focus:border-red-500 focus:ring-red-500":"border-gray-300 bg-gray-50 text-gray-900 focus:border-blue-500 focus:ring-blue-500"}`),_e(c,"placeholder",r()),_e(c,"rows",o())}),Xt(c,n),E(e,l),Re()}var Qi=D('
        ',1),es=D(" ",1);function ts(e,t){Ve(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=nt(),l={username:"",email:"",age:0,bio:"",website:""},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=it(l,{validator:y=>({username:Z(y.username,"trim").required().minLength(3).maxLength(20).noSpace().getError(),email:Z(y.email,"trim").required().email().getError(),age:Zt(y.age).required().min(18).max(120).integer().getError(),bio:Z(y.bio).maxLength(200).getError(),website:Z(y.website,"trim").website("required").getError()})}),v=()=>{s.username=`user${le()}`,s.email=`${le()}@example.com`,s.age=Ue(18,65),s.bio="Hello, I am a demo user!",s.website=`https://${le()}.com`},h=`const sourceData = { - username: '', - email: '', - age: 0, - bio: '', - website: '' -}; - -const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - username: stringValidator(source.username, 'trim').required().minLength(3).maxLength(20).noSpace().getError(), - email: stringValidator(source.email, 'trim').required().email().getError(), - age: numberValidator(source.age).required().min(18).max(120).integer().getError(), - bio: stringValidator(source.bio).maxLength(200).getError(), - website: stringValidator(source.website, 'trim').website('required').getError() - }) -});`,_=` -`;ot(e,{description:"Demonstrates form validation with string, number, and email validators using the fluent API.",title:"Basic Validation Demo",main:$=>{var q=Qi(),k=te(q);ut(k,{get hasErrors(){return r()},get isDirty(){return n()}});var S=d(k,2),C=f(S);{let O=I(()=>a()?.username);Q(C,{id:"username",get error(){return p(O)},label:"Username",placeholder:"Enter username",get value(){return s.username},set value(P){s.username=P}})}var x=d(C,2);{let O=I(()=>a()?.email);Q(x,{id:"email",get error(){return p(O)},label:"Email",placeholder:"Enter email",type:"email",get value(){return s.email},set value(P){s.email=P}})}var w=d(x,2);{let O=I(()=>a()?.age);Q(w,{id:"age",get error(){return p(O)},label:"Age",placeholder:"Enter age",type:"number",get value(){return s.age},set value(P){s.age=P}})}var N=d(w,2);{let O=I(()=>a()?.bio);zr(N,{id:"bio",get error(){return p(O)},label:"Bio",placeholder:"Tell us about yourself",get value(){return s.bio},set value(P){s.bio=P}})}var T=d(N,2);{let O=I(()=>a()?.website);Q(T,{id:"website",get error(){return p(O)},label:"Website",placeholder:"https://example.com",required:!1,get value(){return s.website},set value(P){s.website=P}})}E($,q)},sidebar:$=>{st($,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:v})},sourceCode:$=>{lt($,{children:(q,k)=>{var S=es(),C=te(S);de(C,{code:h,title:"State Setup"});var x=d(C,2);de(x,{code:_,title:"Form Binding Example"}),E(q,S)}})}}),Re(),o()}var rs=D(' '),as=D('
        ');function $t(e,t){var r=as(),n=f(r),a=d(n);{var i=o=>{var l=rs(),s=f(l);H(()=>V(s,`(${t.subtitle??""})`)),E(o,l)};ie(a,o=>{t.subtitle&&o(i)})}H(()=>V(n,`${t.title??""} `)),E(e,r)}var ns=D('
        Subtotal:
        Tax (8%):
        Total:

        Values formatted using methods on state: data.formatCurrency() and data.formatTotal()

        ',1),is=D(" ",1);function ss(e,t){Ve(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=nt(),l=.08,s=()=>({productName:`Widget ${le()}`,item:{unitPrice:0,quantity:1},subtotal:0,tax:0,total:0,formatTotal(){return`$${this.total.toFixed(2)}`},formatCurrency(b){return`$${b.toFixed(2)}`},calculateTotals(b=l){this.subtotal=this.item.unitPrice*this.item.quantity,this.tax=this.subtotal*b,this.total=this.subtotal+this.tax}}),{data:u,state:{errors:c,hasErrors:m,isDirty:v}}=it(s(),{validator:b=>({productName:Z(b.productName,"trim").required().minLength(2).getError(),item:{unitPrice:Zt(b.item.unitPrice).required().positive().getError(),quantity:Zt(b.item.quantity).required().integer().min(1).max(100).getError()}}),effect:({property:b})=>{(b==="item.unitPrice"||b==="item.quantity")&&u.calculateTotals()}}),h=()=>{u.productName=`Widget ${le()}`,u.item.unitPrice=Ue(10,100),u.item.quantity=Ue(1,10)},_=`// Define state type with methods -type SourceData = { - productName: string; - item: { unitPrice: number; quantity: number }; - subtotal: number; - tax: number; - total: number; - formatTotal: () => string; - formatCurrency: (value: number) => string; - calculateTotals: (taxRate?: number) => void; -}; - -// Create initial state as object with methods -const createSourceData = (): SourceData => ({ - productName: '', - item: { unitPrice: 0, quantity: 1 }, - subtotal: 0, - tax: 0, - total: 0, - formatTotal() { - return \`$\${this.total.toFixed(2)}\`; - }, - formatCurrency(value: number) { - return \`$\${value.toFixed(2)}\`; - }, - calculateTotals(taxRate: number = 0.08) { - this.subtotal = this.item.unitPrice * this.item.quantity; - this.tax = this.subtotal * taxRate; - this.total = this.subtotal + this.tax; - } -});`,y=`const { data, state: { errors, hasErrors, isDirty } } = createSvState(createSourceData(), { - validator: (source) => ({ - productName: stringValidator(source.productName, 'trim').required().minLength(2).getError(), - item: { - unitPrice: numberValidator(source.item.unitPrice).required().positive().getError(), - quantity: numberValidator(source.item.quantity).required().integer().min(1).max(100).getError() - } - }), - effect: ({ property }) => { - if (property === 'item.unitPrice' || property === 'item.quantity') { - data.calculateTotals(); // Call method on state object! - } - } -});`,g=` -{data.formatCurrency(data.subtotal)} -{data.formatTotal()}`;ot(e,{description:"Demonstrates using objects with methods as state. The effect callback can call methods directly on the state object.",title:"State with Methods Demo",main:k=>{var S=ns(),C=te(S);ut(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let j=I(()=>a()?.productName);Q(w,{id:"productName",get error(){return p(j)},label:"Product Name",placeholder:"Enter product name",get value(){return u.productName},set value(U){u.productName=U}})}var N=d(w,2),T=f(N);$t(T,{subtitle:"nested object",title:"Item Details"});var O=d(T,2),P=f(O);{let j=I(()=>a()?.item?.unitPrice);Q(P,{id:"unitPrice",get error(){return p(j)},label:"Unit Price ($)",min:0,placeholder:"0.00",step:.01,type:"number",get value(){return u.item.unitPrice},set value(U){u.item.unitPrice=U}})}var ae=d(P,2);{let j=I(()=>a()?.item?.quantity);Q(ae,{id:"quantity",get error(){return p(j)},label:"Quantity",max:100,min:1,placeholder:"1",type:"number",get value(){return u.item.quantity},set value(U){u.item.quantity=U}})}var M=d(N,2),L=f(M);$t(L,{subtitle:"computed by method",title:"Calculated Totals"});var F=d(L,2),ee=f(F),ne=f(ee),se=d(f(ne),2),z=f(se),B=d(ne,2),J=d(f(B),2),R=f(J),A=d(B,2),G=d(f(A),2),he=f(G);H((j,U,ve)=>{V(z,j),V(R,U),V(he,ve)},[()=>u.formatCurrency(u.subtotal),()=>u.formatCurrency(u.tax),()=>u.formatTotal()]),E(k,S)},sidebar:k=>{st(k,{get data(){return u},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:k=>{lt(k,{children:(S,C)=>{var x=is(),w=te(x);de(w,{code:_,title:"Class Definition"});var N=d(w,2);de(N,{code:y,title:"State Setup with Class Instance"});var T=d(N,2);de(T,{code:g,title:"Template Usage"}),E(S,x)}})}}),Re(),o()}var os=D('
        Subtotal:
        Tax (8%):
        Total:
        ',1),ls=D(" ",1);function us(e,t){Ve(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=nt(),l=.08,s={productName:`Widget ${le()}`,item:{unitPrice:0,quantity:1},subtotal:0,tax:0,total:0},{data:u,state:{errors:c,hasErrors:m,isDirty:v}}=it(s,{validator:b=>({productName:Z(b.productName,"trim").required().minLength(2).getError(),item:{unitPrice:Zt(b.item.unitPrice).required().positive().getError(),quantity:Zt(b.item.quantity).required().integer().min(1).max(100).getError()}}),effect:({property:b})=>{(b==="item.unitPrice"||b==="item.quantity")&&(u.subtotal=u.item.unitPrice*u.item.quantity,u.tax=u.subtotal*l,u.total=u.subtotal+u.tax)}}),h=()=>{u.productName=`Widget ${le()}`,u.item.unitPrice=Ue(10,100),u.item.quantity=Ue(1,10)},_=b=>`$${b.toFixed(2)}`,y=`const sourceData = { - productName: '', - item: { unitPrice: 0, quantity: 1 }, - subtotal: 0, tax: 0, total: 0 // Calculated fields (set by effect) -}; - -const TAX_RATE = 0.08; - -const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - productName: stringValidator(source.productName, 'trim').required().minLength(2).getError(), - item: { - unitPrice: numberValidator(source.item.unitPrice).required().positive().getError(), - quantity: numberValidator(source.item.quantity).required().integer().min(1).max(100).getError() - } - }), - effect: ({ property }) => { - if (property === 'item.unitPrice' || property === 'item.quantity') { - data.subtotal = data.item.unitPrice * data.item.quantity; - data.tax = data.subtotal * TAX_RATE; - data.total = data.subtotal + data.tax; - } - } -});`,g=`effect: ({ property }) => { - if (property === 'item.unitPrice' || property === 'item.quantity') { - data.subtotal = data.item.unitPrice * data.item.quantity; - data.tax = data.subtotal * TAX_RATE; - data.total = data.subtotal + data.tax; - } -}`;ot(e,{description:"Uses the effect callback to automatically compute derived values like subtotals, taxes, and totals.",title:"Calculated Fields Demo",main:k=>{var S=os(),C=te(S);ut(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let j=I(()=>a()?.productName);Q(w,{id:"productName",get error(){return p(j)},label:"Product Name",placeholder:"Enter product name",get value(){return u.productName},set value(U){u.productName=U}})}var N=d(w,2),T=f(N);$t(T,{subtitle:"nested object",title:"Item Details"});var O=d(T,2),P=f(O);{let j=I(()=>a()?.item?.unitPrice);Q(P,{id:"unitPrice",get error(){return p(j)},label:"Unit Price ($)",min:0,placeholder:"0.00",step:.01,type:"number",get value(){return u.item.unitPrice},set value(U){u.item.unitPrice=U}})}var ae=d(P,2);{let j=I(()=>a()?.item?.quantity);Q(ae,{id:"quantity",get error(){return p(j)},label:"Quantity",max:100,min:1,placeholder:"1",type:"number",get value(){return u.item.quantity},set value(U){u.item.quantity=U}})}var M=d(N,2),L=f(M);$t(L,{subtitle:"computed by effect",title:"Calculated Totals"});var F=d(L,2),ee=f(F),ne=f(ee),se=d(f(ne),2),z=f(se),B=d(ne,2),J=d(f(B),2),R=f(J),A=d(B,2),G=d(f(A),2),he=f(G);H((j,U,ve)=>{V(z,j),V(R,U),V(he,ve)},[()=>_(u.subtotal),()=>_(u.tax),()=>_(u.total)]),E(k,S)},sidebar:k=>{st(k,{get data(){return u},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:k=>{lt(k,{children:(S,C)=>{var x=ls(),w=te(x);de(w,{code:y,title:"State Setup with Effect"});var N=d(w,2);de(N,{code:g,title:"Effect Function"}),E(S,x)}})}}),Re(),o()}var cs=D(' '),ds=D('
        ');function fs(e,t){var r=ds(),n=f(r),a=f(n),i=d(a);{var o=s=>{var u=cs(),c=f(u);H(()=>V(c,`(${t.subtitle??""})`)),E(s,u)};ie(i,s=>{t.subtitle&&s(o)})}var l=d(n,2);Mt(l,()=>t.children),H(()=>V(a,`${t.title??""} `)),E(e,r)}var vs=D('
        '),ms=D('
        ',1),ps=D(" ",1);function hs(e,t){Ve(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=nt(),l={name:"",address:{street:"",city:"",zip:""},company:{name:"",department:"",contact:{phone:"",email:""}}},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=it(l,{validator:y=>({name:Z(y.name,"trim").required().minLength(2).maxLength(50).getError(),address:{street:Z(y.address.street,"trim").required().minLength(5).getError(),city:Z(y.address.city,"trim").required().minLength(2).getError(),zip:Z(y.address.zip,"trim").required().minLength(5).maxLength(10).getError()},company:{name:Z(y.company.name,"trim").required().minLength(2).getError(),department:Z(y.company.department,"trim").maxLength(50).getError(),contact:{phone:Z(y.company.contact.phone,"trim").required().minLength(10).getError(),email:Z(y.company.contact.email,"trim").required().email().getError()}}})}),v=()=>{s.name=`John ${le()}`,s.address.street=`${Ue(100,9999)} Main Street`,s.address.city="New York",s.address.zip=`${Ue(1e4,99999)}`,s.company.name=`Acme ${le()} Inc`,s.company.department="Engineering",s.company.contact.phone=`555-${Ue(100,999)}-${Ue(1e3,9999)}`,s.company.contact.email=`contact@${le()}.com`},h=`const sourceData = { - name: '', - address: { street: '', city: '', zip: '' }, // 2-level nested - company: { // 3-level nested - name: '', - department: '', - contact: { phone: '', email: '' } - } -}; - -const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - name: stringValidator(source.name, 'trim').required().minLength(2).maxLength(50).getError(), - address: { - street: stringValidator(source.address.street, 'trim').required().minLength(5).getError(), - city: stringValidator(source.address.city, 'trim').required().minLength(2).getError(), - zip: stringValidator(source.address.zip, 'trim').required().minLength(5).maxLength(10).getError() - }, - company: { - name: stringValidator(source.company.name, 'trim').required().minLength(2).getError(), - department: stringValidator(source.company.department, 'trim').maxLength(50).getError(), - contact: { - phone: stringValidator(source.company.contact.phone, 'trim').required().minLength(10).getError(), - email: stringValidator(source.company.contact.email, 'trim').required().email().getError() - } - } - }) -});`,_=` - - - - - -`;ot(e,{description:"Illustrates validating deeply nested object structures with multi-level property paths.",title:"Nested Objects Demo",main:$=>{var q=ms(),k=te(q);ut(k,{get hasErrors(){return r()},get isDirty(){return n()}});var S=d(k,2),C=f(S),x=f(C);$t(x,{title:"Personal Info"});var w=d(x,2);{let R=I(()=>a()?.name);Q(w,{id:"name",get error(){return p(R)},label:"Full Name",placeholder:"Enter your full name",get value(){return s.name},set value(A){s.name=A}})}var N=d(C,2),T=f(N);$t(T,{subtitle:"2-level nested",title:"Address"});var O=d(T,2),P=f(O);{let R=I(()=>a()?.address?.street);Q(P,{id:"street",get error(){return p(R)},label:"Street",placeholder:"Enter street address",get value(){return s.address.street},set value(A){s.address.street=A}})}var ae=d(P,2),M=f(ae);{let R=I(()=>a()?.address?.city);Q(M,{id:"city",get error(){return p(R)},label:"City",placeholder:"Enter city",get value(){return s.address.city},set value(A){s.address.city=A}})}var L=d(M,2);{let R=I(()=>a()?.address?.zip);Q(L,{id:"zip",get error(){return p(R)},label:"ZIP Code",placeholder:"Enter ZIP",get value(){return s.address.zip},set value(A){s.address.zip=A}})}var F=d(N,2),ee=f(F);$t(ee,{subtitle:"3-level nested",title:"Company"});var ne=d(ee,2),se=f(ne),z=f(se);{let R=I(()=>a()?.company?.name);Q(z,{id:"company-name",get error(){return p(R)},label:"Company Name",placeholder:"Enter company name",get value(){return s.company.name},set value(A){s.company.name=A}})}var B=d(z,2);{let R=I(()=>a()?.company?.department);Q(B,{id:"department",get error(){return p(R)},label:"Department",placeholder:"Enter department",required:!1,get value(){return s.company.department},set value(A){s.company.department=A}})}var J=d(se,2);fs(J,{subtitle:"3rd level",title:"Contact Info",children:(R,A)=>{var G=vs(),he=f(G);{let U=I(()=>a()?.company?.contact?.phone);Q(he,{id:"contact-phone",get error(){return p(U)},label:"Phone",placeholder:"Enter phone number",variant:"nested",get value(){return s.company.contact.phone},set value(ve){s.company.contact.phone=ve}})}var j=d(he,2);{let U=I(()=>a()?.company?.contact?.email);Q(j,{id:"contact-email",get error(){return p(U)},label:"Email",placeholder:"Enter email address",type:"email",variant:"nested",get value(){return s.company.contact.email},set value(ve){s.company.contact.email=ve}})}E(R,G)}}),E($,q)},sidebar:$=>{st($,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:v,width:"xl:w-96"})},sourceCode:$=>{lt($,{children:(q,k)=>{var S=ps(),C=te(S);de(C,{code:h,title:"State Setup with Nested Validation"});var x=d(C,2);de(x,{code:_,title:"Nested Form Binding Examples"}),E(q,S)}})}}),Re(),o()}var gs=D('
        Effect triggered:
        '),_s=D('
        '),bs=D('
        '),ys=D(' Submitting...'),xs=D('
        ',1),ws=D('
        Options

        Reset isDirty after successful action

        Try 500ms and type quickly

        Keep errors until next action

        Current Options
        '),Es=D(" ",1);function $s(e,t){Ve(t,!0);const r=()=>K(p(S),"$hasErrors",l),n=()=>K(p(C),"$isDirty",l),a=()=>K(p(x),"$actionInProgress",l),i=()=>K(p(k),"$errors",l),o=()=>K(p(w),"$actionError",l),[l,s]=nt();let u=fe(!0),c=fe(0),m=fe(!1),v=fe(0),h=fe(!1),_=fe(void 0),y=fe(void 0);const g=()=>({name:`User ${le()}`,email:`${le()}@example.com`}),b=L=>it(g(),{validator:F=>({name:Z(F.name,"trim").required().minLength(2).maxLength(50).getError(),email:Z(F.email,"trim").required().email().getError()}),effect:({property:F})=>{oe(y,F,!0)},action:async()=>{const F=Ue(100,800);if(await new Promise(ee=>setTimeout(ee,F)),p(h))throw new Error(`Simulated error after ${F}ms`);oe(_,`Submitted successfully in ${F}ms!`)},actionCompleted:F=>{F&&oe(_,void 0)}},L);let $=fe(ft(b({resetDirtyOnAction:!0,debounceValidation:0,persistActionError:!1})));const q=()=>{oe(y,void 0),oe(_,void 0),oe($,b({resetDirtyOnAction:p(u),debounceValidation:p(c),persistActionError:p(m)}),!0),On(v)},k=I(()=>p($).state.errors),S=I(()=>p($).state.hasErrors),C=I(()=>p($).state.isDirty),x=I(()=>p($).state.actionInProgress),w=I(()=>p($).state.actionError),N=()=>{p($).data.name=`User ${le()}`,p($).data.email=`${le()}@example.com`},T=()=>{oe(_,void 0),p($).execute()},O=`const { data, execute, state } = createSvState( - sourceData, - { validator, effect, action }, - { - // Reset isDirty to false after successful action - resetDirtyOnAction: true, // default: true - - // Debounce validation by N milliseconds - debounceValidation: 0, // default: 0 (uses queueMicrotask) - - // Keep action errors until next action (not cleared on data change) - persistActionError: false // default: false - } -);`,P=`// With resetDirtyOnAction: true (default) -await execute(); -// isDirty is now false - -// With resetDirtyOnAction: false -await execute(); -// isDirty remains true`,ae=`// With debounceValidation: 0 (default) -// Validation runs via queueMicrotask after each change - -// With debounceValidation: 500 -// Validation runs 500ms after the last change -// Useful for expensive validators or rapid typing`,M=`// With persistActionError: false (default) -data.name = 'new value'; -// actionError is cleared immediately - -// With persistActionError: true -data.name = 'new value'; -// actionError remains until next execute() call`;ot(e,{description:"Interactive playground for configuring createSvState options like debouncing and error persistence.",title:"Options Demo",main:ne=>{var se=je(),z=te(se);ai(z,()=>p(v),B=>{var J=xs(),R=te(J);ut(R,{get hasErrors(){return r()},get isDirty(){return n()}});var A=d(R,2);{var G=Y=>{var me=gs(),Le=f(me),ct=d(f(Le));H(()=>V(ct,` property "${p(y)??""}" changed`)),E(Y,me)};ie(A,Y=>{p(y)&&Y(G)})}var he=d(A,2),j=f(he);{let Y=I(()=>i()?.name);Q(j,{id:"name",get disabled(){return a()},get error(){return p(Y)},label:"Name",placeholder:"Enter name",get value(){return p($).data.name},set value(me){p($).data.name=me}})}var U=d(j,2);{let Y=I(()=>i()?.email);Q(U,{id:"email",get disabled(){return a()},get error(){return p(Y)},label:"Email",placeholder:"Enter email",type:"email",get value(){return p($).data.email},set value(me){p($).data.email=me}})}var ve=d(U,2),ke=f(ve),re=d(he,2);{var ce=Y=>{var me=_s(),Le=f(me),ct=d(f(Le),2),zt=f(ct);H(()=>V(zt,o().message)),E(Y,me)};ie(re,Y=>{o()&&Y(ce)})}var $e=d(re,2);{var we=Y=>{var me=bs(),Le=f(me),ct=d(f(Le),2),zt=f(ct);H(()=>V(zt,p(_))),E(Y,me)};ie($e,Y=>{p(_)&&Y(we)})}var Fe=d($e,2),ye=f(Fe);ye.__click=T;var He=f(ye);{var At=Y=>{var me=ys();E(Y,me)},Bt=Y=>{var me=Ua("Submit");E(Y,me)};ie(He,Y=>{a()?Y(At):Y(Bt,!1)})}H(()=>{ke.disabled=a(),ye.disabled=r()||a()}),or(ke,()=>p(h),Y=>oe(h,Y)),E(B,J)}),E(ne,se)},sidebar:ne=>{var se=ws(),z=f(se);st(z,{get data(){return p($).data},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:N});var B=d(z,2),J=d(f(B),2),R=f(J),A=f(R),G=f(A),he=d(R,2),j=d(f(he),2),U=d(he,2),ve=f(U),ke=f(ve),re=d(U,2);re.__click=q;var ce=d(B,2),$e=d(f(ce),2),we=f($e),Fe=f(we),ye=d(we,2),He=f(ye),At=d(ye,2),Bt=f(At);H(()=>{V(Fe,`resetDirtyOnAction: ${p(u)??""}`),V(He,`debounceValidation: ${p(c)??""}`),V(Bt,`persistActionError: ${p(m)??""}`)}),or(G,()=>p(u),Y=>oe(u,Y)),Xt(j,()=>p(c),Y=>oe(c,Y)),or(ke,()=>p(m),Y=>oe(m,Y)),E(ne,se)},sourceCode:ne=>{lt(ne,{children:(se,z)=>{var B=Es(),J=te(B);de(J,{code:O,title:"Options Overview"});var R=d(J,2);de(R,{code:P,title:"resetDirtyOnAction"});var A=d(R,2);de(A,{code:ae,title:"debounceValidation"});var G=d(A,2);de(G,{code:M,title:"persistActionError"}),E(se,B)}})}}),Re(),s()}at(["click"]);var Ss=D('
        '),Ds=D('
        ',1),Cs=D(" ",1);function Ns(e,t){Ve(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=nt(),l={firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com",phone:"",bio:""},{data:s,reset:u,state:{errors:c,hasErrors:m,isDirty:v}}=it(l,{validator:g=>({firstName:Z(g.firstName,"trim").required().minLength(2).maxLength(30).getError(),lastName:Z(g.lastName,"trim").required().minLength(2).maxLength(30).getError(),email:Z(g.email,"trim").required().email().getError(),phone:Z(g.phone,"trim").required().minLength(10).getError(),bio:Z(g.bio).maxLength(200).getError()})}),h=()=>{s.firstName="John",s.lastName=`Doe${le()}`,s.email=`john.doe.${le()}@example.com`,s.phone=`555-${le().slice(0,3)}-${le().slice(0,4)}`,s.bio="Software developer with a passion for clean code."},_=`const sourceData = { - firstName: 'Alice', - lastName: 'Smith', - email: 'alice.smith@example.com', - phone: '', - bio: '' -}; - -const { data, reset, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { - validator: (source) => ({ - firstName: stringValidator(source.firstName, 'trim').required().minLength(2).maxLength(30).getError(), - lastName: stringValidator(source.lastName, 'trim').required().minLength(2).maxLength(30).getError(), - email: stringValidator(source.email, 'trim').required().email().getError(), - phone: stringValidator(source.phone, 'trim').required().minLength(10).getError(), - bio: stringValidator(source.bio).maxLength(200).getError() - }) -});`,y=` -{#if $isDirty} - -{/if} - - -`;ot(e,{description:"Demonstrates the reset() function to restore state back to its initial values.",title:"Reset Demo",main:q=>{var k=Ds(),S=te(k);ut(S,{get hasErrors(){return r()},get isDirty(){return n()}});var C=d(S,2),x=f(C);{let M=I(()=>a()?.firstName);Q(x,{id:"firstName",get error(){return p(M)},label:"First Name",placeholder:"Enter first name",get value(){return s.firstName},set value(L){s.firstName=L}})}var w=d(x,2);{let M=I(()=>a()?.lastName);Q(w,{id:"lastName",get error(){return p(M)},label:"Last Name",placeholder:"Enter last name",get value(){return s.lastName},set value(L){s.lastName=L}})}var N=d(w,2);{let M=I(()=>a()?.email);Q(N,{id:"email",get error(){return p(M)},label:"Email",placeholder:"Enter email",type:"email",get value(){return s.email},set value(L){s.email=L}})}var T=d(N,2);{let M=I(()=>a()?.phone);Q(T,{id:"phone",get error(){return p(M)},label:"Phone",placeholder:"555-123-4567",get value(){return s.phone},set value(L){s.phone=L}})}var O=d(T,2);{let M=I(()=>a()?.bio);zr(O,{id:"bio",get error(){return p(M)},label:"Bio",placeholder:"Tell us about yourself",required:!1,get value(){return s.bio},set value(L){s.bio=L}})}var P=d(C,2);{var ae=M=>{var L=Ss(),F=f(L);F.__click=u,E(M,L)};ie(P,M=>{n()&&M(ae)})}E(q,k)},sidebar:q=>{st(q,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:q=>{lt(q,{children:(k,S)=>{var C=Cs(),x=te(C);de(x,{code:_,title:"State Setup with Reset"});var w=d(x,2);de(w,{code:y,title:"Conditional Reset Button"}),E(k,C)}})}}),Re(),o()}at(["click"]);var ks=D(''),As=D('
        ',1),qs=D('

        No snapshots yet

        '),Ps=D('
      • '),Ls=D('
          '),Ts=D('
          Snapshot History
          '),Is=D(" ",1);function Os(e,t){Ve(t,!0);const r=()=>K(_,"$hasErrors",o),n=()=>K(y,"$isDirty",o),a=()=>K(g,"$snapshots",o),i=()=>K(h,"$errors",o),[o,l]=nt(),s={firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com",phone:"",bio:""},u=S=>S.charAt(0).toUpperCase()+S.slice(1).replaceAll(/([A-Z])/g," $1"),{data:c,reset:m,rollback:v,state:{errors:h,hasErrors:_,isDirty:y,snapshots:g}}=it(s,{validator:S=>({firstName:Z(S.firstName,"trim").required().minLength(2).maxLength(30).getError(),lastName:Z(S.lastName,"trim").required().minLength(2).maxLength(30).getError(),email:Z(S.email,"trim").required().email().getError(),phone:Z(S.phone,"trim").required().minLength(10).getError(),bio:Z(S.bio).maxLength(200).getError()}),effect:({snapshot:S,property:C})=>{S(`Changed ${u(C)}`)}}),b=()=>{c.firstName="John",c.lastName=`Doe${le()}`,c.email=`john.doe.${le()}@example.com`,c.phone=`555-${le().slice(0,3)}-${le().slice(0,4)}`,c.bio="Software developer with a passion for clean code."},$=`const sourceData = { - firstName: 'Alice', lastName: 'Smith', email: 'alice.smith@example.com', phone: '', bio: '' -}; - -const { data, reset, rollback, state: { errors, hasErrors, isDirty, snapshots } } = - createSvState(sourceData, { - validator: (source) => ({ /* validation rules */ }), - effect: ({ snapshot, property }) => { - snapshot(\`Changed \${formatFieldName(property)}\`); - } - });`,q=`// Effect callback creates snapshots on each change -effect: ({ snapshot, property }) => { - snapshot(\`Changed \${property}\`); // Creates undo point - // If same title, replaces last snapshot (debouncing) - // Use snapshot(title, false) to always create new -}`,k=`// Undo last change (disabled if only initial snapshot) - - -// Rollback multiple steps at once -rollback(3); // Undo 3 changes - -// Reset to initial state (clears all snapshots) -`;ot(e,{description:"Shows snapshot creation for undo functionality with rollback() support.",title:"Snapshot & Rollback Demo",main:w=>{var N=As(),T=te(N);ut(T,{get hasErrors(){return r()},get isDirty(){return n()}});var O=d(T,2),P=f(O),ae=f(P),M=d(O,2),L=f(M);{let A=I(()=>i()?.firstName);Q(L,{id:"firstName",get error(){return p(A)},label:"First Name",placeholder:"Enter first name",get value(){return c.firstName},set value(G){c.firstName=G}})}var F=d(L,2);{let A=I(()=>i()?.lastName);Q(F,{id:"lastName",get error(){return p(A)},label:"Last Name",placeholder:"Enter last name",get value(){return c.lastName},set value(G){c.lastName=G}})}var ee=d(F,2);{let A=I(()=>i()?.email);Q(ee,{id:"email",get error(){return p(A)},label:"Email",placeholder:"Enter email",type:"email",get value(){return c.email},set value(G){c.email=G}})}var ne=d(ee,2);{let A=I(()=>i()?.phone);Q(ne,{id:"phone",get error(){return p(A)},label:"Phone",placeholder:"555-123-4567",get value(){return c.phone},set value(G){c.phone=G}})}var se=d(ne,2);{let A=I(()=>i()?.bio);zr(se,{id:"bio",get error(){return p(A)},label:"Bio",placeholder:"Tell us about yourself",required:!1,get value(){return c.bio},set value(G){c.bio=G}})}var z=d(M,2),B=f(z);B.__click=()=>v();var J=d(B,2);{var R=A=>{var G=ks();G.__click=m,E(A,G)};ie(J,A=>{n()&&A(R)})}H(()=>{V(ae,`${a().length??""} Snapshot${a().length===1?"":"s"}`),B.disabled=a().length<=1}),E(w,N)},sidebar:w=>{var N=Ts(),T=f(N);st(T,{get data(){return c},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:b,width:"xl:w-96"});var O=d(T,2),P=d(f(O),2);{var ae=L=>{var F=qs();E(L,F)},M=L=>{var F=Ls();jr(F,5,a,Fr,(ee,ne,se)=>{var z=Ps(),B=f(z);B.textContent=se+1;var J=d(B,2),R=f(J);H(()=>V(R,p(ne).title)),E(ee,z)}),E(L,F)};ie(P,L=>{a().length===0?L(ae):L(M,!1)})}E(w,N)},sourceCode:w=>{lt(w,{children:(N,T)=>{var O=Is(),P=te(O);de(P,{code:$,title:"State Setup with Snapshots"});var ae=d(P,2);de(ae,{code:q,title:"Effect with Snapshot Creation"});var M=d(ae,2);de(M,{code:k,title:"Rollback & Reset Usage"}),E(N,O)}})}}),Re(),l()}at(["click"]);var Ms=D(""),Vs=D(`
          svstate logo

          svstate

          A Svelte 5 library that provides a supercharged $state() with deep reactive proxies, validation, snapshot/undo, - and side effects — built for complex, real-world applications.

          $ npm i svstate
          `);function Rs(e){const t=[{value:"basic-validation",name:"Basic Validation"},{value:"nested-objects",name:"Nested Objects"},{value:"array-property",name:"Array Property"},{value:"calculated-fields",name:"Calculated Fields"},{value:"calculated-class",name:"State with Methods"},{value:"reset-demo",name:"Reset"},{value:"snapshot-demo",name:"Snapshot & Rollback"},{value:"action-demo",name:"Action & Error"},{value:"options-demo",name:"Options"}];let r=fe("basic-validation");const n="1.1.0",a="/svstate";var i=Vs(),o=f(i),l=f(o),s=d(l,2),u=f(s),c=d(f(u),2),m=f(c),v=d(u,4),h=d(f(v),4);h.__click=()=>navigator.clipboard.writeText(`npm i svstate@${n}`);var _=d(v,2),y=d(o,2),g=f(y),b=f(g),$=d(f(b),2);jr($,21,()=>t,Fr,(x,w)=>{var N=Ms(),T=f(N),O={};H(()=>{V(T,p(w).name),O!==(O=p(w).value)&&(N.value=(N.__value=p(w).value)??"")}),E(x,N)});var q=d(g,2),k=f(q);{var S=x=>{ts(x,{})},C=x=>{var w=je(),N=te(w);{var T=P=>{hs(P,{})},O=P=>{var ae=je(),M=te(ae);{var L=ee=>{Xi(ee,{})},F=ee=>{var ne=je(),se=te(ne);{var z=J=>{us(J,{})},B=J=>{var R=je(),A=te(R);{var G=j=>{ss(j,{})},he=j=>{var U=je(),ve=te(U);{var ke=ce=>{Ns(ce,{})},re=ce=>{var $e=je(),we=te($e);{var Fe=He=>{Os(He,{})},ye=He=>{var At=je(),Bt=te(At);{var Y=Le=>{ji(Le,{})},me=Le=>{var ct=je(),zt=te(ct);{var Ya=gr=>{$s(gr,{})};ie(zt,gr=>{p(r)==="options-demo"&&gr(Ya)},!0)}E(Le,ct)};ie(Bt,Le=>{p(r)==="action-demo"?Le(Y):Le(me,!1)},!0)}E(He,At)};ie(we,He=>{p(r)==="snapshot-demo"?He(Fe):He(ye,!1)},!0)}E(ce,$e)};ie(ve,ce=>{p(r)==="reset-demo"?ce(ke):ce(re,!1)},!0)}E(j,U)};ie(A,j=>{p(r)==="calculated-class"?j(G):j(he,!1)},!0)}E(J,R)};ie(se,J=>{p(r)==="calculated-fields"?J(z):J(B,!1)},!0)}E(ee,ne)};ie(M,ee=>{p(r)==="array-property"?ee(L):ee(F,!1)},!0)}E(P,ae)};ie(N,P=>{p(r)==="nested-objects"?P(T):P(O,!1)},!0)}E(x,w)};ie(k,x=>{p(r)==="basic-validation"?x(S):x(C,!1)})}H(()=>{_e(l,"src",`${a}/favicon.png`),V(m,`v${n}`),_e(_,"href",`${a}/llms.txt`)}),ui($,()=>p(r),x=>oe(r,x)),E(e,i)}at(["click"]);ei(Rs,{target:document.querySelector("#app")}); diff --git a/docs/assets/index-VALo2x4L.js b/docs/assets/index-VALo2x4L.js new file mode 100644 index 0000000..c726b45 --- /dev/null +++ b/docs/assets/index-VALo2x4L.js @@ -0,0 +1,274 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(a){if(a.ep)return;a.ep=!0;const i=r(a);fetch(a.href,i)}})();const wr=!1;var Ar=Array.isArray,Ga=Array.prototype.indexOf,Vt=Array.prototype.includes,pr=Array.from,aa=Object.defineProperty,It=Object.getOwnPropertyDescriptor,Xa=Object.getOwnPropertyDescriptors,Za=Object.prototype,Qa=Array.prototype,na=Object.getPrototypeOf,Hr=Object.isExtensible;const mt=()=>{};function ia(e){for(var t=0;t{e=n,t=a});return{promise:r,resolve:e,reject:t}}const be=2,cr=4,hr=8,oa=1<<24,et=16,tt=32,kt=64,qr=128,Ie=512,xe=1024,Ee=2048,rt=4096,qe=8192,Xe=16384,la=32768,St=65536,Yr=1<<17,ua=1<<18,Bt=1<<19,en=1<<20,Ge=1<<25,Dt=32768,Er=1<<21,Pr=1<<22,pt=1<<23,Ot=Symbol("$state"),tn=Symbol("legacy props"),rn=Symbol(""),Tt=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"};function an(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function nn(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function sn(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function on(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function ln(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function un(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function cn(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const dn=1,fn=2,ca=4,vn=8,mn=16,pn=1,hn=4,gn=8,_n=16,bn=1,yn=2,ge=Symbol(),xn="http://www.w3.org/1999/xhtml";function wn(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function En(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function da(e){return e===this.v}function fa(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function va(e){return!fa(e,this.v)}let $n=!1,He=null;function Rt(e){He=e}function Re(e,t=!1,r){He={p:He,i:!1,c:null,e:null,s:e,x:null,l:null}}function Fe(e){var t=He,r=t.e;if(r!==null){t.e=null;for(var n of r)Un(n)}return t.i=!0,He=t.p,{}}function ma(){return!0}let bt=[];function pa(){var e=bt;bt=[],ia(e)}function xt(e){if(bt.length===0&&!Kt){var t=bt;queueMicrotask(()=>{t===bt&&pa()})}bt.push(e)}function Sn(){for(;bt.length>0;)pa()}function ha(e){var t=ue;if(t===null)return Y.f|=pt,e;if((t.f&la)===0){if((t.f&qr)===0)throw e;t.b.error(e)}else Ft(e,t)}function Ft(e,t){for(;t!==null;){if((t.f&qr)!==0)try{t.b.error(e);return}catch(r){e=r}t=t.parent}throw e}const Dn=-7169;function pe(e,t){e.f=e.f&Dn|t}function Lr(e){(e.f&Ie)!==0||e.deps===null?pe(e,xe):pe(e,rt)}function ga(e){if(e!==null)for(const t of e)(t.f&be)===0||(t.f&Dt)===0||(t.f^=Dt,ga(t.deps))}function _a(e,t,r){(e.f&Ee)!==0?t.add(e):(e.f&rt)!==0&&r.add(e),ga(e.deps),pe(e,xe)}const ir=new Set;let X=null,dr=null,ze=null,Ae=[],gr=null,$r=!1,Kt=!1;class ht{committed=!1;current=new Map;previous=new Map;#t=new Set;#s=new Set;#e=0;#n=0;#i=null;#a=new Set;#r=new Set;skipped_effects=new Set;is_fork=!1;#o=!1;is_deferred(){return this.is_fork||this.#n>0}process(t){Ae=[],this.apply();var r=[],n=[];for(const a of t)this.#l(a,r,n);if(this.is_deferred())this.#u(n),this.#u(r);else{for(const a of this.#t)a();this.#t.clear(),this.#e===0&&this.#c(),dr=this,X=null,Kr(n),Kr(r),dr=null,this.#i?.resolve()}ze=null}#l(t,r,n){t.f^=xe;for(var a=t.first,i=null;a!==null;){var o=a.f,l=(o&(tt|kt))!==0,s=l&&(o&xe)!==0,u=s||(o&qe)!==0||this.skipped_effects.has(a);if(!u&&a.fn!==null){l?a.f^=xe:i!==null&&(o&(cr|hr|oa))!==0?i.b.defer_effect(a):(o&cr)!==0?r.push(a):ar(a)&&((o&et)!==0&&this.#r.add(a),Zt(a));var c=a.first;if(c!==null){a=c;continue}}var m=a.parent;for(a=a.next;a===null&&m!==null;)m===i&&(i=null),a=m.next,m=m.parent}}#u(t){for(var r=0;r0){if(ba(),X!==null&&X!==this)return}else this.#e===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#s)t(this);this.#s.clear()}#c(){if(ir.size>1){this.previous.clear();var t=ze,r=!0;for(const a of ir){if(a===this){r=!1;continue}const i=[];for(const[l,s]of this.current){if(a.current.has(l))if(r&&s!==a.current.get(l))a.current.set(l,s);else continue;i.push(l)}if(i.length===0)continue;const o=[...a.current.keys()].filter(l=>!this.current.has(l));if(o.length>0){var n=Ae;Ae=[];const l=new Set,s=new Map;for(const u of i)ya(u,o,l,s);if(Ae.length>0){X=a,a.apply();for(const u of Ae)a.#l(u,[],[]);a.deactivate()}Ae=n}}X=null,ze=t}this.committed=!0,ir.delete(this)}increment(t){this.#e+=1,t&&(this.#n+=1)}decrement(t){this.#e-=1,t&&(this.#n-=1),!this.#o&&(this.#o=!0,xt(()=>{this.#o=!1,this.is_deferred()?Ae.length>0&&this.flush():this.revive()}))}revive(){for(const t of this.#a)this.#r.delete(t),pe(t,Ee),Qe(t);for(const t of this.#r)pe(t,rt),Qe(t);this.flush()}oncommit(t){this.#t.add(t)}ondiscard(t){this.#s.add(t)}settled(){return(this.#i??=sa()).promise}static ensure(){if(X===null){const t=X=new ht;ir.add(X),Kt||xt(()=>{X===t&&t.flush()})}return X}apply(){}}function Cn(e){var t=Kt;Kt=!0;try{for(var r;;){if(Sn(),Ae.length===0&&(X?.flush(),Ae.length===0))return gr=null,r;ba()}}finally{Kt=t}}function ba(){$r=!0;var e=null;try{for(var t=0;Ae.length>0;){var r=ht.ensure();if(t++>1e3){var n,a;Nn()}r.process(Ae),gt.clear()}}finally{$r=!1,gr=null}}function Nn(){try{nn()}catch(e){Ft(e,gr)}}let Je=null;function Kr(e){var t=e.length;if(t!==0){for(var r=0;r0)){gt.clear();for(const a of Je){if((a.f&(Xe|qe))!==0)continue;const i=[a];let o=a.parent;for(;o!==null;)Je.has(o)&&(Je.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const s=i[l];(s.f&(Xe|qe))===0&&Zt(s)}}Je.clear()}}Je=null}}function ya(e,t,r,n){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const a of e.reactions){const i=a.f;(i&be)!==0?ya(a,t,r,n):(i&(Pr|et))!==0&&(i&Ee)===0&&xa(a,t,n)&&(pe(a,Ee),Qe(a))}}function xa(e,t,r){const n=r.get(e);if(n!==void 0)return n;if(e.deps!==null)for(const a of e.deps){if(Vt.call(t,a))return!0;if((a.f&be)!==0&&xa(a,t,r))return r.set(a,!0),!0}return r.set(e,!1),!1}function Qe(e){for(var t=gr=e;t.parent!==null;){t=t.parent;var r=t.f;if($r&&t===ue&&(r&et)!==0&&(r&ua)===0)return;if((r&(kt|tt))!==0){if((r&xe)===0)return;t.f^=xe}}Ae.push(t)}function kn(e){let t=0,r=Ct(0),n;return()=>{Mr()&&(p(r),Rr(()=>(t===0&&(n=nr(()=>e(()=>Jt(r)))),t+=1,()=>{xt(()=>{t-=1,t===0&&(n?.(),n=void 0,Jt(r))})})))}}var An=St|Bt|qr;function qn(e,t,r){new Pn(e,t,r)}class Pn{parent;is_pending=!1;#t;#s=null;#e;#n;#i;#a=null;#r=null;#o=null;#l=null;#u=null;#c=0;#f=0;#m=!1;#v=!1;#p=new Set;#h=new Set;#d=null;#x=kn(()=>(this.#d=Ct(this.#c),()=>{this.#d=null}));constructor(t,r,n){this.#t=t,this.#e=r,this.#n=n,this.parent=ue.b,this.is_pending=!!this.#e.pending,this.#i=rr(()=>{ue.b=this;{var a=this.#b();try{this.#a=Te(()=>n(a))}catch(i){this.error(i)}this.#f>0?this.#_():this.is_pending=!1}return()=>{this.#u?.remove()}},An)}#w(){try{this.#a=Te(()=>this.#n(this.#t))}catch(t){this.error(t)}}#E(){const t=this.#e.pending;t&&(this.#r=Te(()=>t(this.#t)),xt(()=>{var r=this.#b();this.#a=this.#g(()=>(ht.ensure(),Te(()=>this.#n(r)))),this.#f>0?this.#_():(wt(this.#r,()=>{this.#r=null}),this.is_pending=!1)}))}#b(){var t=this.#t;return this.is_pending&&(this.#u=Ze(),this.#t.before(this.#u),t=this.#u),t}defer_effect(t){_a(t,this.#p,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#e.pending}#g(t){var r=ue,n=Y,a=He;Ke(this.#i),Me(this.#i),Rt(this.#i.ctx);try{return t()}catch(i){return ha(i),null}finally{Ke(r),Me(n),Rt(a)}}#_(){const t=this.#e.pending;this.#a!==null&&(this.#l=document.createDocumentFragment(),this.#l.append(this.#u),Ma(this.#a,this.#l)),this.#r===null&&(this.#r=Te(()=>t(this.#t)))}#y(t){if(!this.has_pending_snippet()){this.parent&&this.parent.#y(t);return}if(this.#f+=t,this.#f===0){this.is_pending=!1;for(const r of this.#p)pe(r,Ee),Qe(r);for(const r of this.#h)pe(r,rt),Qe(r);this.#p.clear(),this.#h.clear(),this.#r&&wt(this.#r,()=>{this.#r=null}),this.#l&&(this.#t.before(this.#l),this.#l=null)}}update_pending_count(t){this.#y(t),this.#c+=t,!(!this.#d||this.#m)&&(this.#m=!0,xt(()=>{this.#m=!1,this.#d&&jt(this.#d,this.#c)}))}get_effect_pending(){return this.#x(),p(this.#d)}error(t){var r=this.#e.onerror;let n=this.#e.failed;if(this.#v||!r&&!n)throw t;this.#a&&(Ce(this.#a),this.#a=null),this.#r&&(Ce(this.#r),this.#r=null),this.#o&&(Ce(this.#o),this.#o=null);var a=!1,i=!1;const o=()=>{if(a){En();return}a=!0,i&&cn(),ht.ensure(),this.#c=0,this.#o!==null&&wt(this.#o,()=>{this.#o=null}),this.is_pending=this.has_pending_snippet(),this.#a=this.#g(()=>(this.#v=!1,Te(()=>this.#n(this.#t)))),this.#f>0?this.#_():this.is_pending=!1};xt(()=>{try{i=!0,r?.(t,o),i=!1}catch(l){Ft(l,this.#i&&this.#i.parent)}n&&(this.#o=this.#g(()=>{ht.ensure(),this.#v=!0;try{return Te(()=>{n(this.#t,()=>t,()=>o)})}catch(l){return Ft(l,this.#i.parent),null}finally{this.#v=!1}}))})}}function Ln(e,t,r,n){const a=_r;var i=e.filter(v=>!v.settled);if(r.length===0&&i.length===0){n(t.map(a));return}var o=X,l=ue,s=Tn(),u=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(v=>v.promise)):null;function c(v){s();try{n(v)}catch(h){(l.f&Xe)===0&&Ft(h,l)}o?.deactivate(),Sr()}if(r.length===0){u.then(()=>c(t.map(a)));return}function m(){s(),Promise.all(r.map(v=>In(v))).then(v=>c([...t.map(a),...v])).catch(v=>Ft(v,l))}u?u.then(m):m()}function Tn(){var e=ue,t=Y,r=He,n=X;return function(i=!0){Ke(e),Me(t),Rt(r),i&&n?.activate()}}function Sr(){Ke(null),Me(null),Rt(null)}function _r(e){var t=be|Ee,r=Y!==null&&(Y.f&be)!==0?Y:null;return ue!==null&&(ue.f|=Bt),{ctx:He,deps:null,effects:null,equals:da,f:t,fn:e,reactions:null,rv:0,v:ge,wv:0,parent:r??ue,ac:null}}function In(e,t,r){let n=ue;n===null&&an();var a=n.b,i=void 0,o=Ct(ge),l=!Y,s=new Map;return Yn(()=>{var u=sa();i=u.promise;try{Promise.resolve(e()).then(u.resolve,u.reject).then(()=>{c===X&&c.committed&&c.deactivate(),Sr()})}catch(h){u.reject(h),Sr()}var c=X;if(l){var m=a.is_rendered();a.update_pending_count(1),c.increment(m),s.get(c)?.reject(Tt),s.delete(c),s.set(c,u)}const v=(h,_=void 0)=>{if(c.activate(),_)_!==Tt&&(o.f|=pt,jt(o,_));else{(o.f&pt)!==0&&(o.f^=pt),jt(o,h);for(const[y,g]of s){if(s.delete(y),y===c)break;g.reject(Tt)}}l&&(a.update_pending_count(-1),c.decrement(m))};u.promise.then(v,h=>v(null,h||"unknown"))}),Vr(()=>{for(const u of s.values())u.reject(Tt)}),new Promise(u=>{function c(m){function v(){m===i?u(o):c(i)}m.then(v,v)}c(i)})}function I(e){const t=_r(e);return Va(t),t}function wa(e){const t=_r(e);return t.equals=va,t}function Ea(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r0&&!Sa&&Mn()}return t}function Mn(){Sa=!1;for(const e of Dr)(e.f&xe)!==0&&pe(e,rt),ar(e)&&Zt(e);Dr.clear()}function Vn(e,t=1){var r=p(e),n=t===1?r++:r--;return oe(e,r),n}function Jt(e){oe(e,e.v+1)}function Ca(e,t){var r=e.reactions;if(r!==null)for(var n=r.length,a=0;a{if(Et===i)return l();var s=Y,u=Et;Me(null),Qr(i);var c=l();return Me(s),Qr(u),c};return n&&r.set("length",fe(e.length)),new Proxy(e,{defineProperty(l,s,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&on();var c=r.get(s);return c===void 0?c=o(()=>{var m=fe(u.value);return r.set(s,m),m}):oe(c,u.value,!0),!0},deleteProperty(l,s){var u=r.get(s);if(u===void 0){if(s in l){const c=o(()=>fe(ge));r.set(s,c),Jt(a)}}else oe(u,ge),Jt(a);return!0},get(l,s,u){if(s===Ot)return e;var c=r.get(s),m=s in l;if(c===void 0&&(!m||It(l,s)?.writable)&&(c=o(()=>{var h=vt(m?l[s]:ge),_=fe(h);return _}),r.set(s,c)),c!==void 0){var v=p(c);return v===ge?void 0:v}return Reflect.get(l,s,u)},getOwnPropertyDescriptor(l,s){var u=Reflect.getOwnPropertyDescriptor(l,s);if(u&&"value"in u){var c=r.get(s);c&&(u.value=p(c))}else if(u===void 0){var m=r.get(s),v=m?.v;if(m!==void 0&&v!==ge)return{enumerable:!0,configurable:!0,value:v,writable:!0}}return u},has(l,s){if(s===Ot)return!0;var u=r.get(s),c=u!==void 0&&u.v!==ge||Reflect.has(l,s);if(u!==void 0||ue!==null&&(!c||It(l,s)?.writable)){u===void 0&&(u=o(()=>{var v=c?vt(l[s]):ge,h=fe(v);return h}),r.set(s,u));var m=p(u);if(m===ge)return!1}return c},set(l,s,u,c){var m=r.get(s),v=s in l;if(n&&s==="length")for(var h=u;hfe(ge)),r.set(h+"",_))}if(m===void 0)(!v||It(l,s)?.writable)&&(m=o(()=>fe(void 0)),oe(m,vt(u)),r.set(s,m));else{v=m.v!==ge;var y=o(()=>vt(u));oe(m,y)}var g=Reflect.getOwnPropertyDescriptor(l,s);if(g?.set&&g.set.call(c,u),!v){if(n&&typeof s=="string"){var b=r.get("length"),$=Number(s);Number.isInteger($)&&$>=b.v&&oe(b,$+1)}Jt(a)}return!0},ownKeys(l){p(a);var s=Reflect.ownKeys(l).filter(m=>{var v=r.get(m);return v===void 0||v.v!==ge});for(var[u,c]of r)c.v!==ge&&!(u in l)&&s.push(u);return s},setPrototypeOf(){ln()}})}function Jr(e){try{if(e!==null&&typeof e=="object"&&Ot in e)return e[Ot]}catch{}return e}function Rn(e,t){return Object.is(Jr(e),Jr(t))}var Gr,Na,ka,Aa;function Fn(){if(Gr===void 0){Gr=window,Na=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;ka=It(t,"firstChild").get,Aa=It(t,"nextSibling").get,Hr(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Hr(r)&&(r.__t=void 0)}}function Ze(e=""){return document.createTextNode(e)}function fr(e){return ka.call(e)}function tr(e){return Aa.call(e)}function f(e,t){return fr(e)}function te(e,t=!1){{var r=fr(e);return r instanceof Comment&&r.data===""?tr(r):r}}function d(e,t=1,r=!1){let n=e;for(;t--;)n=tr(n);return n}function jn(e){e.textContent=""}function qa(){return!1}let Xr=!1;function Bn(){Xr||(Xr=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Ir(e){var t=Y,r=ue;Me(null),Ke(null);try{return e()}finally{Me(t),Ke(r)}}function Or(e,t,r,n=r){e.addEventListener(t,()=>Ir(r));const a=e.__on_r;a?e.__on_r=()=>{a(),n(!0)}:e.__on_r=()=>n(!0),Bn()}function zn(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function at(e,t,r){var n=ue;n!==null&&(n.f&qe)!==0&&(e|=qe);var a={ctx:He,deps:null,nodes:null,f:e|Ee|Ie,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};if(r)try{Zt(a),a.f|=la}catch(l){throw Ce(a),l}else t!==null&&Qe(a);var i=a;if(r&&i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&(i.f&Bt)===0&&(i=i.first,(e&et)!==0&&(e&St)!==0&&i!==null&&(i.f|=St)),i!==null&&(i.parent=n,n!==null&&zn(i,n),Y!==null&&(Y.f&be)!==0&&(e&kt)===0)){var o=Y;(o.effects??=[]).push(i)}return a}function Mr(){return Y!==null&&!Ue}function Vr(e){const t=at(hr,null,!1);return pe(t,xe),t.teardown=e,t}function Un(e){return at(cr|en,e,!1)}function Wn(e){ht.ensure();const t=at(kt|Bt,e,!0);return(r={})=>new Promise(n=>{r.outro?wt(t,()=>{Ce(t),n(void 0)}):(Ce(t),n(void 0))})}function Hn(e){return at(cr,e,!1)}function Yn(e){return at(Pr|Bt,e,!0)}function Rr(e,t=0){return at(hr|t,e,!0)}function W(e,t=[],r=[],n=[]){Ln(n,t,r,a=>{at(hr,()=>e(...a.map(p)),!0)})}function rr(e,t=0){var r=at(et|t,e,!0);return r}function Te(e){return at(tt|Bt,e,!0)}function Pa(e){var t=e.teardown;if(t!==null){const r=Nt,n=Y;Zr(!0),Me(null);try{t.call(null)}finally{Zr(r),Me(n)}}}function La(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const a=r.ac;a!==null&&Ir(()=>{a.abort(Tt)});var n=r.next;(r.f&kt)!==0?r.parent=null:Ce(r,t),r=n}}function Kn(e){for(var t=e.first;t!==null;){var r=t.next;(t.f&tt)===0&&Ce(t),t=r}}function Ce(e,t=!0){var r=!1;(t||(e.f&ua)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(Jn(e.nodes.start,e.nodes.end),r=!0),La(e,t&&!r),vr(e,0),pe(e,Xe);var n=e.nodes&&e.nodes.t;if(n!==null)for(const i of n)i.stop();Pa(e);var a=e.parent;a!==null&&a.first!==null&&Ta(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function Jn(e,t){for(;e!==null;){var r=e===t?null:tr(e);e.remove(),e=r}}function Ta(e){var t=e.parent,r=e.prev,n=e.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),t!==null&&(t.first===e&&(t.first=n),t.last===e&&(t.last=r))}function wt(e,t,r=!0){var n=[];Ia(e,n,!0);var a=()=>{r&&Ce(e),t&&t()},i=n.length;if(i>0){var o=()=>--i||a();for(var l of n)l.out(o)}else a()}function Ia(e,t,r){if((e.f&qe)===0){e.f^=qe;var n=e.nodes&&e.nodes.t;if(n!==null)for(const l of n)(l.is_global||r)&&t.push(l);for(var a=e.first;a!==null;){var i=a.next,o=(a.f&St)!==0||(a.f&tt)!==0&&(e.f&et)!==0;Ia(a,t,o?r:!1),a=i}}}function Fr(e){Oa(e,!0)}function Oa(e,t){if((e.f&qe)!==0){e.f^=qe,(e.f&xe)===0&&(pe(e,Ee),Qe(e));for(var r=e.first;r!==null;){var n=r.next,a=(r.f&St)!==0||(r.f&tt)!==0;Oa(r,a?t:!1),r=n}var i=e.nodes&&e.nodes.t;if(i!==null)for(const o of i)(o.is_global||t)&&o.in()}}function Ma(e,t){if(e.nodes)for(var r=e.nodes.start,n=e.nodes.end;r!==null;){var a=r===n?null:tr(r);t.append(r),r=a}}let lr=!1,Nt=!1;function Zr(e){Nt=e}let Y=null,Ue=!1;function Me(e){Y=e}let ue=null;function Ke(e){ue=e}let Oe=null;function Va(e){Y!==null&&(Oe===null?Oe=[e]:Oe.push(e))}let Se=null,ke=0,Le=null;function Gn(e){Le=e}let Ra=1,yt=0,Et=yt;function Qr(e){Et=e}function Fa(){return++Ra}function ar(e){var t=e.f;if((t&Ee)!==0)return!0;if(t&be&&(e.f&=~Dt),(t&rt)!==0){for(var r=e.deps,n=r.length,a=0;ae.wv)return!0}(t&Ie)!==0&&ze===null&&pe(e,xe)}return!1}function ja(e,t,r=!0){var n=e.reactions;if(n!==null&&!(Oe!==null&&Vt.call(Oe,e)))for(var a=0;a{e.ac.abort(Tt)}),e.ac=null);try{e.f|=Er;var c=e.fn,m=c(),v=e.deps;if(Se!==null){var h;if(vr(e,ke),v!==null&&ke>0)for(v.length=ke+Se.length,h=0;h{throw g});throw v}}finally{e.__root=t,delete e.currentTarget,Me(c),Ke(m)}}}function ti(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("",""),t.content}function mr(e,t){var r=ue;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function D(e,t){var r=(t&bn)!==0,n=(t&yn)!==0,a,i=!e.startsWith("");return()=>{a===void 0&&(a=ti(i?e:""+e),r||(a=fr(a)));var o=n||Na?document.importNode(a,!0):a.cloneNode(!0);if(r){var l=fr(o),s=o.lastChild;mr(l,s)}else mr(o,o);return o}}function Ha(e=""){{var t=Ze(e+"");return mr(t,t),t}}function Be(){var e=document.createDocumentFragment(),t=document.createComment(""),r=Ze();return e.append(t,r),mr(t,r),e}function E(e,t){e!==null&&e.before(t)}function V(e,t){var r=t==null?"":typeof t=="object"?t+"":t;r!==(e.__t??=e.nodeValue)&&(e.__t=r,e.nodeValue=r+"")}function ri(e,t){return ai(e,t)}const qt=new Map;function ai(e,{target:t,anchor:r,props:n={},events:a,context:i,intro:o=!0}){Fn();var l=new Set,s=m=>{for(var v=0;v{var m=r??t.appendChild(Ze());return qn(m,{pending:()=>{}},v=>{if(i){Re({});var h=He;h.c=i}a&&(n.$$events=a),u=e(v,n)||{},i&&Fe()}),()=>{for(var v of l){t.removeEventListener(v,sr);var h=qt.get(v);--h===0?(document.removeEventListener(v,sr),qt.delete(v)):qt.set(v,h)}Cr.delete(s),m!==r&&m.parentNode?.removeChild(m)}});return ni.set(u,c),u}let ni=new WeakMap;class jr{anchor;#t=new Map;#s=new Map;#e=new Map;#n=new Set;#i=!0;constructor(t,r=!0){this.anchor=t,this.#i=r}#a=()=>{var t=X;if(this.#t.has(t)){var r=this.#t.get(t),n=this.#s.get(r);if(n)Fr(n),this.#n.delete(r);else{var a=this.#e.get(r);a&&(this.#s.set(r,a.effect),this.#e.delete(r),a.fragment.lastChild.remove(),this.anchor.before(a.fragment),n=a.effect)}for(const[i,o]of this.#t){if(this.#t.delete(i),i===t)break;const l=this.#e.get(o);l&&(Ce(l.effect),this.#e.delete(o))}for(const[i,o]of this.#s){if(i===r||this.#n.has(i))continue;const l=()=>{if(Array.from(this.#t.values()).includes(i)){var u=document.createDocumentFragment();Ma(o,u),u.append(Ze()),this.#e.set(i,{effect:o,fragment:u})}else Ce(o);this.#n.delete(i),this.#s.delete(i)};this.#i||!n?(this.#n.add(i),wt(o,l,!1)):l()}}};#r=t=>{this.#t.delete(t);const r=Array.from(this.#t.values());for(const[n,a]of this.#e)r.includes(n)||(Ce(a.effect),this.#e.delete(n))};ensure(t,r){var n=X,a=qa();if(r&&!this.#s.has(t)&&!this.#e.has(t))if(a){var i=document.createDocumentFragment(),o=Ze();i.append(o),this.#e.set(t,{effect:Te(()=>r(o)),fragment:i})}else this.#s.set(t,Te(()=>r(this.anchor)));if(this.#t.set(n,t),a){for(const[l,s]of this.#s)l===t?n.skipped_effects.delete(s):n.skipped_effects.add(s);for(const[l,s]of this.#e)l===t?n.skipped_effects.delete(s.effect):n.skipped_effects.add(s.effect);n.oncommit(this.#a),n.ondiscard(this.#r)}else this.#a()}}function ie(e,t,r=!1){var n=new jr(e),a=r?St:0;function i(o,l){n.ensure(o,l)}rr(()=>{var o=!1;t((l,s=!0)=>{o=!0,i(s,l)}),o||i(!1,null)},a)}function ii(e,t,r){var n=new jr(e);rr(()=>{var a=t();n.ensure(a,r)})}function Br(e,t){return t}function si(e,t,r){for(var n=[],a=t.length,i,o=t.length,l=0;l{if(i){if(i.pending.delete(m),i.done.add(m),i.pending.size===0){var v=e.outrogroups;Nr(pr(i.done)),v.delete(i),v.size===0&&(e.outrogroups=null)}}else o-=1},!1)}if(o===0){var s=n.length===0&&r!==null;if(s){var u=r,c=u.parentNode;jn(c),c.append(u),e.items.clear()}Nr(t,!s)}else i={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(i)}function Nr(e,t=!0){for(var r=0;r{var b=r();return Ar(b)?b:b==null?[]:pr(b)}),v,h=!0;function _(){g.fallback=c,oi(g,v,o,t,n),c!==null&&(v.length===0?(c.f&Ge)===0?Fr(c):(c.f^=Ge,Ht(c,null,o)):wt(c,()=>{c=null}))}var y=rr(()=>{v=p(m);for(var b=v.length,$=new Set,q=X,k=qa(),S=0;Si(o)):(c=Te(()=>i(ta??=Ze())),c.f|=Ge)),!h)if(k){for(const[N,T]of l)$.has(N)||q.skipped_effects.add(T.e);q.oncommit(_),q.ondiscard(()=>{})}else _();p(m)}),g={effect:y,items:l,outrogroups:null,fallback:c};h=!1}function Wt(e){for(;e!==null&&(e.f&tt)===0;)e=e.next;return e}function oi(e,t,r,n,a){var i=(n&vn)!==0,o=t.length,l=e.items,s=Wt(e.effect.first),u,c=null,m,v=[],h=[],_,y,g,b;if(i)for(b=0;b0){var N=(n&ca)!==0&&o===0?r:null;if(i){for(b=0;b{if(m!==void 0)for(g of m)g.nodes?.a?.apply()})}function li(e,t,r,n,a,i,o,l){var s=(o&dn)!==0?(o&mn)===0?Da(r,!1,!1):Ct(r):null,u=(o&fn)!==0?Ct(a):null;return{v:s,i:u,e:Te(()=>(i(t,s??r,u??a,l),()=>{e.delete(n)}))}}function Ht(e,t,r){if(e.nodes)for(var n=e.nodes.start,a=e.nodes.end,i=t&&(t.f&Ge)===0?t.nodes.start:r;n!==null;){var o=tr(n);if(i.before(n),n===a)return;n=o}}function ft(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}function Mt(e,t,...r){var n=new jr(e);rr(()=>{const a=t()??null;n.ensure(a,a&&(i=>a(i,...r)))},St)}function ui(e,t,r){var n=e==null?"":""+e;return n===""?null:n}function Ve(e,t,r,n,a,i){var o=e.__className;if(o!==r||o===void 0){var l=ui(r);l==null?e.removeAttribute("class"):t?e.className=l:e.setAttribute("class",l),e.__className=r}return i}function Ya(e,t,r=!1){if(e.multiple){if(t==null)return;if(!Ar(t))return wn();for(var n of e.options)n.selected=t.includes(Gt(n));return}for(n of e.options){var a=Gt(n);if(Rn(a,t)){n.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function ci(e){var t=new MutationObserver(()=>{Ya(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Vr(()=>{t.disconnect()})}function di(e,t,r=t){var n=new WeakSet,a=!0;Or(e,"change",i=>{var o=i?"[selected]":":checked",l;if(e.multiple)l=[].map.call(e.querySelectorAll(o),Gt);else{var s=e.querySelector(o)??e.querySelector("option:not([disabled])");l=s&&Gt(s)}r(l),X!==null&&n.add(X)}),Hn(()=>{var i=t();if(e===document.activeElement){var o=dr??X;if(n.has(o))return}if(Ya(e,i,a),a&&i===void 0){var l=e.querySelector(":checked");l!==null&&(i=Gt(l),r(i))}e.__value=i,a=!1}),ci(e)}function Gt(e){return"__value"in e?e.__value:e.value}const fi=Symbol("is custom element"),vi=Symbol("is html");function _e(e,t,r,n){var a=mi(e);a[t]!==(a[t]=r)&&(t==="loading"&&(e[rn]=r),r==null?e.removeAttribute(t):typeof r!="string"&&pi(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function mi(e){return e.__attributes??={[fi]:e.nodeName.includes("-"),[vi]:e.namespaceURI===xn}}var ra=new Map;function pi(e){var t=e.getAttribute("is")||e.nodeName,r=ra.get(t);if(r)return r;ra.set(t,r=[]);for(var n,a=e,i=Element.prototype;i!==a;){n=Xa(a);for(var o in n)n[o].set&&r.push(o);a=na(a)}return r}function Qt(e,t,r=t){var n=new WeakSet;Or(e,"input",async a=>{var i=a?e.defaultValue:e.value;if(i=yr(e)?xr(i):i,r(i),X!==null&&n.add(X),await Zn(),i!==(i=t())){var o=e.selectionStart,l=e.selectionEnd,s=e.value.length;if(e.value=i??"",l!==null){var u=e.value.length;o===l&&l===s&&u>s?(e.selectionStart=u,e.selectionEnd=u):(e.selectionStart=o,e.selectionEnd=Math.min(l,u))}}}),nr(t)==null&&e.value&&(r(yr(e)?xr(e.value):e.value),X!==null&&n.add(X)),Rr(()=>{var a=t();if(e===document.activeElement){var i=dr??X;if(n.has(i))return}yr(e)&&a===xr(e.value)||e.type==="date"&&!a&&!e.value||a!==e.value&&(e.value=a??"")})}function ur(e,t,r=t){Or(e,"change",n=>{var a=n?e.defaultChecked:e.checked;r(a)}),nr(t)==null&&r(e.checked),Rr(()=>{var n=t();e.checked=!!n})}function yr(e){var t=e.type;return t==="number"||t==="range"}function xr(e){return e===""?null:+e}function Ur(e,t,r){if(e==null)return t(void 0),r&&r(void 0),mt;const n=nr(()=>e.subscribe(t,r));return n.unsubscribe?()=>n.unsubscribe():n}const Pt=[];function hi(e,t){return{subscribe:Lt(e,t).subscribe}}function Lt(e,t=mt){let r=null;const n=new Set;function a(l){if(fa(e,l)&&(e=l,r)){const s=!Pt.length;for(const u of n)u[1](),Pt.push(u,e);if(s){for(let u=0;u{n.delete(u),n.size===0&&r&&(r(),r=null)}}return{set:a,update:i,subscribe:o}}function gi(e,t,r){const n=!Array.isArray(e),a=n?[e]:e;if(!a.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return hi(r,(o,l)=>{let s=!1;const u=[];let c=0,m=mt;const v=()=>{if(c)return;m();const _=t(n?u[0]:u,o,l);i?o(_):m=typeof _=="function"?_:mt},h=a.map((_,y)=>Ur(_,g=>{u[y]=g,c&=~(1<{c|=1<t=r)(),t}let or=!1,kr=Symbol();function K(e,t,r){const n=r[t]??={store:null,source:Da(void 0),unsubscribe:mt};if(n.store!==e&&!(kr in r))if(n.unsubscribe(),n.store=e??null,e==null)n.source.v=void 0,n.unsubscribe=mt;else{var a=!0;n.unsubscribe=Ur(e,i=>{a?n.source.v=i:oe(n.source,i)}),a=!1}return e&&kr in r?Yt(e):p(n.source)}function it(){const e={};function t(){Vr(()=>{for(var r in e)e[r].unsubscribe();aa(e,kr,{enumerable:!1,value:!0})})}return[e,t]}function _i(e){var t=or;try{return or=!1,[e(),or]}finally{or=t}}function De(e,t,r,n){var a=(r&gn)!==0,i=(r&_n)!==0,o=n,l=!0,s=()=>(l&&(l=!1,o=i?nr(n):n),o),u;if(a){var c=Ot in e||tn in e;u=It(e,t)?.set??(c&&t in e?$=>e[t]=$:void 0)}var m,v=!1;a?[m,v]=_i(()=>e[t]):m=e[t],m===void 0&&n!==void 0&&(m=s(),u&&(sn(),u(m)));var h;if(h=()=>{var $=e[t];return $===void 0?s():(l=!0,$)},(r&hn)===0)return h;if(u){var _=e.$$legacy;return(function($,q){return arguments.length>0?((!q||_||v)&&u(q?h():$),$):h()})}var y=!1,g=((r&pn)!==0?_r:wa)(()=>(y=!1,h()));a&&p(g);var b=ue;return(function($,q){if(arguments.length>0){const k=q?p(g):a?vt($):$;return oe(g,k),y=!0,o!==void 0&&(o=k),$}return Nt&&y||(b.f&Xe)!==0?g.v:p(g)})}const bi="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(bi);const yi=e=>typeof e=="object"&&e!==null&&!(e instanceof Date)&&!(e instanceof Map)&&!(e instanceof Set)&&!(e instanceof WeakMap)&&!(e instanceof WeakSet)&&!(e instanceof RegExp)&&!(e instanceof Error)&&!(e instanceof Promise),xi=(e,t)=>{const r=(a,i)=>new Proxy(a,{get(o,l){const s=o[l];if(yi(s)){const u=Number.isInteger(Number(l))?"":String(l),c=u?i?`${i}.${u}`:u:i;return r(s,c)}return s},set(o,l,s){const u=o[l];if(u!==s){o[l]=s;const c=Number.isInteger(Number(l))?"":String(l),m=c?i?`${i}.${c}`:c:i;t(n,m,s,u)}return!0}}),n=r(e,"");return n},Ka=e=>Object.values(e).some(t=>typeof t=="string"?!!t:Ka(t)),wi=e=>!!e&&Ka(e),_t=e=>{if(e===null||typeof e!="object")return e;if(e instanceof Date)return new Date(e);if(Array.isArray(e))return e.map(r=>_t(r));const t=Object.create(Object.getPrototypeOf(e));for(const r of Object.keys(e))t[r]=_t(e[r]);return t},Ei={resetDirtyOnAction:!0,debounceValidation:0,allowConcurrentActions:!1,persistActionError:!1};function st(e,t,r){const n={...Ei,...r},{validator:a,effect:i}=t??{},o=Lt(),l=gi(o,wi),s=Lt(!1),u=Lt(!1),c=Lt(),m=Lt([{title:"Initial",data:_t(e)}]),v=vt(e),h=(C,x=!0)=>{const w=Yt(m),N={title:C,data:_t(v)},T=w.at(-1);x&&T&&T.title===C?m.set([...w.slice(0,-1),N]):m.set([...w,N])};let _=!1,y;const g=()=>{if(a)if(n.debounceValidation>0)clearTimeout(y),y=setTimeout(()=>{o.set(a(b))},n.debounceValidation);else{if(_)return;_=!0,queueMicrotask(()=>{o.set(a(b)),_=!1})}},b=xi(v,(C,x,w,N)=>{if(n.persistActionError||c.set(void 0),s.set(!0),i?.({snapshot:h,target:C,property:x,currentValue:w,oldValue:N})instanceof Promise)throw new Error("svstate: effect callback must be synchronous. Use action for async operations.");g()});return a&&o.set(a(b)),{data:b,execute:async C=>{if(!(!n.allowConcurrentActions&&Yt(u))){c.set(void 0),u.set(!0);try{await t?.action?.(C),n.resetDirtyOnAction&&s.set(!1),m.set([{title:"Initial",data:_t(v)}]),await t?.actionCompleted?.()}catch(x){await t?.actionCompleted?.(x),c.set(x instanceof Error?x:void 0)}finally{u.set(!1)}}},state:{errors:o,hasErrors:l,isDirty:s,actionInProgress:u,actionError:c,snapshots:m},rollback:(C=1)=>{const x=Yt(m);if(x.length<=1)return;const w=Math.max(0,x.length-1-C),N=x[w];N&&(Object.assign(v,_t(N.data)),m.set(x.slice(0,w+1)),a&&o.set(a(b)))},reset:()=>{const x=Yt(m)[0];x&&(Object.assign(v,_t(x.data)),m.set([x]),a&&o.set(a(b)))}}}const $i={trim:e=>e.trim(),normalize:e=>e.replaceAll(/\s{2,}/g," "),upper:e=>e.toUpperCase(),lower:e=>e.toLowerCase()};function Z(e,...t){let r="";const n=o=>{r||(r=o)},a=t.reduce((o,l)=>$i[l](o),e),i={required(){return!r&&!a&&n("Required"),i},noSpace(){return!r&&a.includes(" ")&&n("No space allowed"),i},minLength(o){return!r&&a.lengtho&&n(`Max length ${o}`),i},uppercase(){return!r&&a!==a.toUpperCase()&&n("Uppercase only"),i},lowercase(){return!r&&a!==a.toLowerCase()&&n("Lowercase only"),i},startsWith(o){if(r)return i;const l=Array.isArray(o)?o:[o];return a&&!l.some(s=>a.startsWith(s))&&n(`Must start with ${l.join(", ")}`),i},regexp(o,l){return!r&&a&&!o.test(a)&&n(l??"Not allowed chars"),i},inArray(o){if(r)return i;const l=Array.isArray(o)?o:Object.keys(o);return a&&!l.includes(a)&&n(`Must be one of: ${l.join(", ")}`),i},email(){return!r&&a&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(a)&&n("Invalid email format"),i},website(o="optional"){if(r||!a||o==="optional")return i;const l=/^https?:\/\//.test(a);return o==="required"&&!l?n("Must start with http:// or https://"):o==="forbidden"&&l&&n("Must not start with http:// or https://"),i},endsWith(o){if(r||!a)return i;const l=Array.isArray(o)?o:[o];return l.some(s=>a.endsWith(s))||n(`Must end with ${l.join(", ")}`),i},contains(o){return!r&&a&&!a.includes(o)&&n(`Must contain "${o}"`),i},alphanumeric(){return!r&&a&&!/^[\dA-Za-z]+$/.test(a)&&n("Only letters and numbers allowed"),i},numeric(){return!r&&a&&!/^\d+$/.test(a)&&n("Only numbers allowed"),i},getError(){return r}};return i}function er(e){let t="";const r=a=>{t||(t=a)},n={required(){return!t&&Number.isNaN(e)&&r("Required"),n},min(a){return!t&&ea&&r(`Maximum ${a}`),n},between(a,i){return!t&&(ei)&&r(`Must be between ${a} and ${i}`),n},integer(){return!t&&!Number.isInteger(e)&&r("Must be an integer"),n},positive(){return!t&&e<=0&&r("Must be positive"),n},negative(){return!t&&e>=0&&r("Must be negative"),n},nonNegative(){return!t&&e<0&&r("Must be non-negative"),n},multipleOf(a){return!t&&e%a!==0&&r(`Must be a multiple of ${a}`),n},decimal(a){return t||Number.isNaN(e)||(String(e).split(".")[1]?.length??0)>a&&r(`Maximum ${a} decimal places`),n},percentage(){return!t&&(e<0||e>100)&&r("Must be between 0 and 100"),n},getError(){return t}};return n}function Si(e){let t="";const r=a=>{t||(t=a)},n={required(){return!t&&e.length===0&&r("Required"),n},minLength(a){return!t&&e.lengtha&&r(`Maximum ${a} items`),n},unique(){if(t)return n;const a=new Set;for(const i of e){const o=typeof i=="object"?JSON.stringify(i):String(i);if(a.has(o)){r("Items must be unique");break}a.add(o)}return n},getError(){return t}};return n}var Di=D('
          '),Ci=D('
           
          ');function de(e,t){var r=Ci(),n=f(r);{var a=l=>{var s=Di(),u=f(s);W(()=>V(u,t.title)),E(l,s)};ie(n,l=>{t.title&&l(a)})}var i=d(n,2),o=f(i);W(()=>V(o,t.code)),E(e,r)}var Ni=D('
          State Object
           
          State Info
          isDirty:
          hasErrors:
          Errors
           
          ');function ot(e,t){let r=De(t,"width",3,"xl:w-80");var n=Ni(),a=f(n),i=d(f(a),2),o=f(i),l=d(a,2),s=d(f(l),2),u=f(s),c=d(f(u)),m=d(u,2),v=d(f(m)),h=d(l,2),_=d(f(h),2),y=f(_),g=d(h,2);g.__click=function(...b){t.onFill?.apply(this,b)},W((b,$)=>{Ve(n,1,`w-full ${r()??""} flex-shrink-0 space-y-4`),V(o,b),V(c,` ${t.isDirty??""}`),V(v,` ${t.hasErrors??""}`),V(y,$)},[()=>JSON.stringify(t.data,void 0,2),()=>JSON.stringify(t.errors,void 0,2)]),E(e,n)}nt(["click"]);var ki=D('

          ');function Xt(e,t){var r=Be(),n=te(r);{var a=i=>{var o=ki(),l=f(o);W(()=>V(l,t.error)),E(i,o)};ie(n,i=>{t.error&&i(a)})}E(e,r)}var Ai=D("
          ");function Q(e,t){Re(t,!0);let r=De(t,"type",3,"text"),n=De(t,"placeholder",3,""),a=De(t,"value",15),i=De(t,"error",3,""),o=De(t,"required",3,!0),l=De(t,"disabled",3,!1),s=De(t,"variant",3,"default");const u=I(()=>s()==="nested"?"bg-white":"bg-gray-50");var c=Ai(),m=f(c),v=f(m),h=d(m,2),_=d(h,2);{let y=I(()=>i()??"");Xt(_,{get error(){return p(y)}})}W(()=>{Ve(m,1,`mb-2 block text-sm text-gray-900 ${o()?"font-bold":""}`),_e(m,"for",t.id),V(v,t.label),_e(h,"id",t.id),Ve(h,1,`block w-full rounded-lg border p-2.5 text-sm ${i()?"border-red-500 bg-red-50 text-red-900 placeholder-red-400 focus:border-red-500 focus:ring-red-500":`border-gray-300 ${p(u)} text-gray-900 focus:border-blue-500 focus:ring-blue-500`} ${l()?"cursor-not-allowed opacity-50":""}`),h.disabled=l(),_e(h,"max",t.max),_e(h,"min",t.min),_e(h,"placeholder",n()),_e(h,"step",t.step),_e(h,"type",r())}),Qt(h,a),E(e,c),Fe()}var qi=D('

          '),Pi=D('
          '),Li=D('
          ',1);function lt(e,t){var r=Li(),n=te(r),a=f(n),i=f(a),o=f(i),l=d(i,2);{var s=_=>{var y=qi(),g=f(y);W(()=>V(g,t.description)),E(_,y)},u=_=>{var y=Pi();E(_,y)};ie(l,_=>{t.description?_(s):_(u,!1)})}var c=d(l,2);Mt(c,()=>t.main);var m=d(a,2);Mt(m,()=>t.sidebar);var v=d(n,2);{var h=_=>{var y=Be(),g=te(y);Mt(g,()=>t.sourceCode),E(_,y)};ie(v,_=>{t.sourceCode&&_(h)})}W(()=>V(o,t.title)),E(e,r)}var Ti=D('
          '),Ii=D('
          ');function ut(e,t){let r=fe(!1);var n=Ii(),a=f(n);a.__click=()=>oe(r,!p(r));var i=d(f(a),2),o=d(a,2);{var l=s=>{var u=Ti(),c=f(u);Mt(c,()=>t.children),E(s,u)};ie(o,s=>{p(r)&&s(l)})}W(()=>{Ve(a,1,`flex w-full cursor-pointer items-center justify-between px-4 py-3 text-left text-sm font-medium text-gray-900 hover:bg-gray-50 ${p(r)?"border-b border-gray-200":""}`),Ve(i,0,`h-5 w-5 transform transition-transform ${p(r)?"rotate-180":""}`)}),E(e,n)}nt(["click"]);var Oi=D('
          ');function ct(e,t){var r=Oi(),n=f(r),a=f(n),i=d(n,2),o=f(i);W(()=>{Ve(n,1,`rounded px-2.5 py-0.5 text-xs font-medium ${t.hasErrors?"bg-red-100 text-red-800":"bg-green-100 text-green-800"}`),V(a,t.hasErrors?"Has Errors":"Valid"),Ve(i,1,`rounded px-2.5 py-0.5 text-xs font-medium ${t.isDirty?"bg-yellow-100 text-yellow-800":"bg-gray-100 text-gray-800"}`),V(o,t.isDirty?"Modified":"Clean")}),E(e,r)}const le=()=>Math.random().toString(36).slice(2,8),We=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;var Mi=D('
          '),Vi=D('
          '),Ri=D(' Submitting...'),Fi=D('
          ',1),ji=D('
          Action State
          actionInProgress:
          actionError:
          '),Bi=D(" ",1);function zi(e,t){Re(t,!0);const r=()=>K(y,"$hasErrors",l),n=()=>K(g,"$isDirty",l),a=()=>K(b,"$actionInProgress",l),i=()=>K(_,"$errors",l),o=()=>K($,"$actionError",l),[l,s]=it(),u={title:`Task ${le()}`,description:`This is a sample task description with ID ${le()}`};let c=fe(!1),m=fe(void 0);const{data:v,execute:h,state:{errors:_,hasErrors:y,isDirty:g,actionInProgress:b,actionError:$}}=st(u,{validator:w=>({title:Z(w.title,"trim").required().minLength(3).maxLength(50).getError(),description:Z(w.description,"trim").required().minLength(10).maxLength(200).getError()}),action:async()=>{const w=We(100,1e3);if(await new Promise(N=>setTimeout(N,w)),p(c))throw new Error(`Simulated server error after ${w}ms`);oe(m,`Submitted successfully in ${w}ms!`)},actionCompleted:w=>{w&&oe(m,void 0)}}),q=()=>{v.title=`Task ${le()}`,v.description=`This is a sample task description with ID ${le()}`},k=()=>{oe(m,void 0),h()},S=`const { data, execute, state: { errors, hasErrors, isDirty, actionInProgress, actionError } } = + createSvState(sourceData, { + validator: (source) => ({ + title: stringValidator(source.title, 'trim').required().minLength(3).maxLength(50).getError(), + description: stringValidator(source.description, 'trim').required().minLength(10).getError() + }), + action: async () => { + // Simulate API call with 100-1000ms delay + const delay = randomInt(100, 1000); + await new Promise((resolve) => setTimeout(resolve, delay)); + + if (shouldFail) { + throw new Error('Simulated server error'); + } + }, + actionCompleted: (error) => { + // Called after action completes (success or failure) + console.log(error ? 'Action failed' : 'Action succeeded'); + } + });`,C=`// Execute the action + + +// With parameters (if action accepts them) +execute({ userId: 123 });`,x=`// Display action error +{#if $actionError} +
          + {$actionError.message} +
          +{/if} + +// Check if action is in progress +{#if $actionInProgress} +
          Submitting...
          +{/if}`;lt(e,{description:"Demonstrates async action execution with loading states and error handling.",title:"Action Demo",main:O=>{var P=Fi(),ae=te(P);ct(ae,{get hasErrors(){return r()},get isDirty(){return n()}});var M=d(ae,2),L=f(M),F=f(L),ee=d(M,2),ne=f(ee);{let re=I(()=>i()?.title);Q(ne,{id:"title",get disabled(){return a()},get error(){return p(re)},label:"Title",placeholder:"Enter task title",get value(){return v.title},set value(ce){v.title=ce}})}var se=d(ne,2);{let re=I(()=>i()?.description);Q(se,{id:"description",get disabled(){return a()},get error(){return p(re)},label:"Description",placeholder:"Enter task description (min 10 characters)",get value(){return v.description},set value(ce){v.description=ce}})}var z=d(se,2),B=f(z),J=d(ee,2);{var R=re=>{var ce=Mi(),$e=f(ce),we=d(f($e),2),je=f(we);W(()=>V(je,o().message)),E(re,ce)};ie(J,re=>{o()&&re(R)})}var A=d(J,2);{var G=re=>{var ce=Vi(),$e=f(ce),we=d(f($e),2),je=f(we);W(()=>V(je,p(m))),E(re,ce)};ie(A,re=>{p(m)&&re(G)})}var he=d(A,2),j=f(he);j.__click=k;var U=f(j);{var ve=re=>{var ce=Ri();E(re,ce)},Ne=re=>{var ce=Ha("Submit");E(re,ce)};ie(U,re=>{a()?re(ve):re(Ne,!1)})}W(()=>{Ve(L,1,`rounded px-2.5 py-0.5 text-xs font-medium ${a()?"bg-blue-100 text-blue-800":"bg-gray-100 text-gray-800"}`),V(F,a()?"In Progress":"Idle"),B.disabled=a(),j.disabled=r()||a()}),ur(B,()=>p(c),re=>oe(c,re)),E(O,P)},sidebar:O=>{var P=ji(),ae=f(P);ot(ae,{get data(){return v},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:q});var M=d(ae,2),L=d(f(M),2),F=f(L),ee=d(f(F)),ne=d(F,2),se=d(f(ne));W(()=>{V(ee,` ${a()??""}`),V(se,` ${o()?.message??"none"??""}`)}),E(O,P)},sourceCode:O=>{ut(O,{children:(P,ae)=>{var M=Bi(),L=te(M);de(L,{code:S,title:"State Setup with Action"});var F=d(L,2);de(F,{code:C,title:"Execute Action"});var ee=d(F,2);de(ee,{code:x,title:"Error & Loading States"}),E(P,M)}})}}),Fe(),s()}nt(["click"]);var Ui=D('
          ');function Wi(e,t){let r=De(t,"label",3,"Item");var n=Ui(),a=f(n),i=f(a),o=f(i),l=d(i,2);l.__click=function(...u){t.onRemove?.apply(this,u)};var s=d(a,2);Mt(s,()=>t.children),W(()=>V(o,`${r()??""} #${t.index+1}`)),E(e,n)}nt(["click"]);var Hi=D('

          ');function Yi(e,t){var r=Hi(),n=f(r),a=f(n);W(()=>V(a,t.message)),E(e,r)}var Ki=D('
          '),Ji=D('
          '),Gi=D('
          '),Xi=D('
          Contacts
          ',1),Zi=D(" ",1);function Qi(e,t){Re(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=it(),l={listName:"",items:[]},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=st(l,{validator:b=>({listName:Z(b.listName,"trim").required().minLength(2).getError(),items:Si(b.items).required().minLength(1).getError(),...Object.fromEntries(b.items.map(($,q)=>[`item_${q}`,{name:Z($.name,"trim").required().minLength(2).getError(),email:Z($.email,"trim").required().email().getError()}]))})}),v=()=>{s.items=[...s.items,{name:"",email:""}]},h=b=>{s.items=s.items.filter(($,q)=>q!==b)},_=()=>{s.listName=`Contact List ${le()}`,s.items=[{name:"John Doe",email:"john@example.com"},{name:"Jane Smith",email:"jane@example.com"},{name:"Bob Wilson",email:"bob@example.com"}]},y=`const sourceData = { + listName: '', + items: [] as { name: string; email: string }[] +}; + +const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + listName: stringValidator(source.listName, 'trim').required().minLength(2).getError(), + items: arrayValidator(source.items).required().minLength(1).getError(), + // Per-item validation using indexed keys + ...Object.fromEntries( + source.items.map((item, index) => [ + \`item_\${index}\`, + { + name: stringValidator(item.name, 'trim').required().minLength(2).getError(), + email: stringValidator(item.email, 'trim').required().email().getError() + } + ]) + ) + }) +});`,g=`// Define type for item errors +type ItemErrors = Record; + +{#each data.items as item, index} + + + + + +{/each}`;lt(e,{description:"Shows how to validate dynamic arrays with per-item validation using indexed error keys.",title:"Array Property Demo",main:k=>{var S=Xi(),C=te(S);ct(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let z=I(()=>a()?.listName);Q(w,{id:"listName",get error(){return p(z)},label:"List Name",placeholder:"Enter list name",get value(){return s.listName},set value(B){s.listName=B}})}var N=d(w,2),T=f(N),O=f(T),P=d(f(O)),ae=f(P),M=d(O,2);M.__click=v;var L=d(T,2);{var F=z=>{var B=Ki(),J=f(B);Xt(J,{get error(){return a().items}}),E(z,B)};ie(L,z=>{a()?.items&&z(F)})}var ee=d(L,2);{var ne=z=>{Yi(z,{message:'No contacts yet. Click "Add Contact" to get started.'})},se=z=>{var B=Gi();zr(B,21,()=>s.items,Br,(J,R,A)=>{Wi(J,{index:A,label:"Contact",onRemove:()=>h(A),children:(G,he)=>{var j=Ji(),U=f(j),ve=f(U);_e(ve,"for",`item-name-${A}`);var Ne=d(ve,2);_e(Ne,"id",`item-name-${A}`);var re=d(Ne,2);{let ye=I(()=>a()?.[`item_${A}`]?.name??"");Xt(re,{get error(){return p(ye)}})}var ce=d(U,2),$e=f(ce);_e($e,"for",`item-email-${A}`);var we=d($e,2);_e(we,"id",`item-email-${A}`);var je=d(we,2);{let ye=I(()=>a()?.[`item_${A}`]?.email??"");Xt(je,{get error(){return p(ye)}})}W(()=>{Ve(Ne,1,`block w-full rounded-lg border p-2 text-sm ${a()?.[`item_${A}`]?.name?"border-red-500 bg-red-50 text-red-900 placeholder-red-400":"border-gray-300 bg-white text-gray-900"}`),Ve(we,1,`block w-full rounded-lg border p-2 text-sm ${a()?.[`item_${A}`]?.email?"border-red-500 bg-red-50 text-red-900 placeholder-red-400":"border-gray-300 bg-white text-gray-900"}`)}),Qt(Ne,()=>p(R).name,ye=>p(R).name=ye),Qt(we,()=>p(R).email,ye=>p(R).email=ye),E(G,j)},$$slots:{default:!0}})}),E(z,B)};ie(ee,z=>{s.items.length===0?z(ne):z(se,!1)})}W(()=>V(ae,`${s.items.length??""} items`)),E(k,S)},sidebar:k=>{ot(k,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:_,width:"xl:w-96"})},sourceCode:k=>{ut(k,{children:(S,C)=>{var x=Zi(),w=te(x);de(w,{code:y,title:"State Setup with Array Item Validation"});var N=d(w,2);de(N,{code:g,title:"Array Form Binding Examples"}),E(S,x)}})}}),Fe(),o()}nt(["click"]);var es=D("
          ");function Wr(e,t){Re(t,!0);let r=De(t,"placeholder",3,""),n=De(t,"value",15),a=De(t,"error",3,""),i=De(t,"required",3,!1),o=De(t,"rows",3,3);var l=es(),s=f(l),u=f(s),c=d(s,2),m=d(c,2);{let v=I(()=>a()??"");Xt(m,{get error(){return p(v)}})}W(()=>{Ve(s,1,`mb-2 block text-sm text-gray-900 ${i()?"font-bold":""}`),_e(s,"for",t.id),V(u,t.label),_e(c,"id",t.id),Ve(c,1,`block w-full rounded-lg border p-2.5 text-sm ${a()?"border-red-500 bg-red-50 text-red-900 placeholder-red-400 focus:border-red-500 focus:ring-red-500":"border-gray-300 bg-gray-50 text-gray-900 focus:border-blue-500 focus:ring-blue-500"}`),_e(c,"placeholder",r()),_e(c,"rows",o())}),Qt(c,n),E(e,l),Fe()}var ts=D('
          ',1),rs=D(" ",1);function as(e,t){Re(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=it(),l={username:"",email:"",age:0,bio:"",website:""},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=st(l,{validator:y=>({username:Z(y.username,"trim").required().minLength(3).maxLength(20).noSpace().getError(),email:Z(y.email,"trim").required().email().getError(),age:er(y.age).required().min(18).max(120).integer().getError(),bio:Z(y.bio).maxLength(200).getError(),website:Z(y.website,"trim").website("required").getError()})}),v=()=>{s.username=`user${le()}`,s.email=`${le()}@example.com`,s.age=We(18,65),s.bio="Hello, I am a demo user!",s.website=`https://${le()}.com`},h=`const sourceData = { + username: '', + email: '', + age: 0, + bio: '', + website: '' +}; + +const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + username: stringValidator(source.username, 'trim').required().minLength(3).maxLength(20).noSpace().getError(), + email: stringValidator(source.email, 'trim').required().email().getError(), + age: numberValidator(source.age).required().min(18).max(120).integer().getError(), + bio: stringValidator(source.bio).maxLength(200).getError(), + website: stringValidator(source.website, 'trim').website('required').getError() + }) +});`,_=` +`;lt(e,{description:"Demonstrates form validation with string, number, and email validators using the fluent API.",title:"Basic Validation Demo",main:$=>{var q=ts(),k=te(q);ct(k,{get hasErrors(){return r()},get isDirty(){return n()}});var S=d(k,2),C=f(S);{let O=I(()=>a()?.username);Q(C,{id:"username",get error(){return p(O)},label:"Username",placeholder:"Enter username",get value(){return s.username},set value(P){s.username=P}})}var x=d(C,2);{let O=I(()=>a()?.email);Q(x,{id:"email",get error(){return p(O)},label:"Email",placeholder:"Enter email",type:"email",get value(){return s.email},set value(P){s.email=P}})}var w=d(x,2);{let O=I(()=>a()?.age);Q(w,{id:"age",get error(){return p(O)},label:"Age",placeholder:"Enter age",type:"number",get value(){return s.age},set value(P){s.age=P}})}var N=d(w,2);{let O=I(()=>a()?.bio);Wr(N,{id:"bio",get error(){return p(O)},label:"Bio",placeholder:"Tell us about yourself",get value(){return s.bio},set value(P){s.bio=P}})}var T=d(N,2);{let O=I(()=>a()?.website);Q(T,{id:"website",get error(){return p(O)},label:"Website",placeholder:"https://example.com",required:!1,get value(){return s.website},set value(P){s.website=P}})}E($,q)},sidebar:$=>{ot($,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:v})},sourceCode:$=>{ut($,{children:(q,k)=>{var S=rs(),C=te(S);de(C,{code:h,title:"State Setup"});var x=d(C,2);de(x,{code:_,title:"Form Binding Example"}),E(q,S)}})}}),Fe(),o()}var ns=D(' '),is=D('
          ');function $t(e,t){var r=is(),n=f(r),a=d(n);{var i=o=>{var l=ns(),s=f(l);W(()=>V(s,`(${t.subtitle??""})`)),E(o,l)};ie(a,o=>{t.subtitle&&o(i)})}W(()=>V(n,`${t.title??""} `)),E(e,r)}var ss=D('
          Subtotal:
          Tax (8%):
          Total:

          Values formatted using methods on state: data.formatCurrency() and data.formatTotal()

          ',1),os=D(" ",1);function ls(e,t){Re(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=it(),l=.08,s=()=>({productName:`Widget ${le()}`,item:{unitPrice:0,quantity:1},subtotal:0,tax:0,total:0,formatTotal(){return`$${this.total.toFixed(2)}`},formatCurrency(b){return`$${b.toFixed(2)}`},calculateTotals(b=l){this.subtotal=this.item.unitPrice*this.item.quantity,this.tax=this.subtotal*b,this.total=this.subtotal+this.tax}}),{data:u,state:{errors:c,hasErrors:m,isDirty:v}}=st(s(),{validator:b=>({productName:Z(b.productName,"trim").required().minLength(2).getError(),item:{unitPrice:er(b.item.unitPrice).required().positive().getError(),quantity:er(b.item.quantity).required().integer().min(1).max(100).getError()}}),effect:({property:b})=>{(b==="item.unitPrice"||b==="item.quantity")&&u.calculateTotals()}}),h=()=>{u.productName=`Widget ${le()}`,u.item.unitPrice=We(10,100),u.item.quantity=We(1,10)},_=`// Define state type with methods +type SourceData = { + productName: string; + item: { unitPrice: number; quantity: number }; + subtotal: number; + tax: number; + total: number; + formatTotal: () => string; + formatCurrency: (value: number) => string; + calculateTotals: (taxRate?: number) => void; +}; + +// Create initial state as object with methods +const createSourceData = (): SourceData => ({ + productName: '', + item: { unitPrice: 0, quantity: 1 }, + subtotal: 0, + tax: 0, + total: 0, + formatTotal() { + return \`$\${this.total.toFixed(2)}\`; + }, + formatCurrency(value: number) { + return \`$\${value.toFixed(2)}\`; + }, + calculateTotals(taxRate: number = 0.08) { + this.subtotal = this.item.unitPrice * this.item.quantity; + this.tax = this.subtotal * taxRate; + this.total = this.subtotal + this.tax; + } +});`,y=`const { data, state: { errors, hasErrors, isDirty } } = createSvState(createSourceData(), { + validator: (source) => ({ + productName: stringValidator(source.productName, 'trim').required().minLength(2).getError(), + item: { + unitPrice: numberValidator(source.item.unitPrice).required().positive().getError(), + quantity: numberValidator(source.item.quantity).required().integer().min(1).max(100).getError() + } + }), + effect: ({ property }) => { + if (property === 'item.unitPrice' || property === 'item.quantity') { + data.calculateTotals(); // Call method on state object! + } + } +});`,g=` +{data.formatCurrency(data.subtotal)} +{data.formatTotal()}`;lt(e,{description:"Demonstrates using objects with methods as state. The effect callback can call methods directly on the state object.",title:"State with Methods Demo",main:k=>{var S=ss(),C=te(S);ct(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let j=I(()=>a()?.productName);Q(w,{id:"productName",get error(){return p(j)},label:"Product Name",placeholder:"Enter product name",get value(){return u.productName},set value(U){u.productName=U}})}var N=d(w,2),T=f(N);$t(T,{subtitle:"nested object",title:"Item Details"});var O=d(T,2),P=f(O);{let j=I(()=>a()?.item?.unitPrice);Q(P,{id:"unitPrice",get error(){return p(j)},label:"Unit Price ($)",min:0,placeholder:"0.00",step:.01,type:"number",get value(){return u.item.unitPrice},set value(U){u.item.unitPrice=U}})}var ae=d(P,2);{let j=I(()=>a()?.item?.quantity);Q(ae,{id:"quantity",get error(){return p(j)},label:"Quantity",max:100,min:1,placeholder:"1",type:"number",get value(){return u.item.quantity},set value(U){u.item.quantity=U}})}var M=d(N,2),L=f(M);$t(L,{subtitle:"computed by method",title:"Calculated Totals"});var F=d(L,2),ee=f(F),ne=f(ee),se=d(f(ne),2),z=f(se),B=d(ne,2),J=d(f(B),2),R=f(J),A=d(B,2),G=d(f(A),2),he=f(G);W((j,U,ve)=>{V(z,j),V(R,U),V(he,ve)},[()=>u.formatCurrency(u.subtotal),()=>u.formatCurrency(u.tax),()=>u.formatTotal()]),E(k,S)},sidebar:k=>{ot(k,{get data(){return u},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:k=>{ut(k,{children:(S,C)=>{var x=os(),w=te(x);de(w,{code:_,title:"Class Definition"});var N=d(w,2);de(N,{code:y,title:"State Setup with Class Instance"});var T=d(N,2);de(T,{code:g,title:"Template Usage"}),E(S,x)}})}}),Fe(),o()}var us=D('
          Subtotal:
          Tax (8%):
          Total:
          ',1),cs=D(" ",1);function ds(e,t){Re(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=it(),l=.08,s={productName:`Widget ${le()}`,item:{unitPrice:0,quantity:1},subtotal:0,tax:0,total:0},{data:u,state:{errors:c,hasErrors:m,isDirty:v}}=st(s,{validator:b=>({productName:Z(b.productName,"trim").required().minLength(2).getError(),item:{unitPrice:er(b.item.unitPrice).required().positive().getError(),quantity:er(b.item.quantity).required().integer().min(1).max(100).getError()}}),effect:({property:b})=>{(b==="item.unitPrice"||b==="item.quantity")&&(u.subtotal=u.item.unitPrice*u.item.quantity,u.tax=u.subtotal*l,u.total=u.subtotal+u.tax)}}),h=()=>{u.productName=`Widget ${le()}`,u.item.unitPrice=We(10,100),u.item.quantity=We(1,10)},_=b=>`$${b.toFixed(2)}`,y=`const sourceData = { + productName: '', + item: { unitPrice: 0, quantity: 1 }, + subtotal: 0, tax: 0, total: 0 // Calculated fields (set by effect) +}; + +const TAX_RATE = 0.08; + +const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + productName: stringValidator(source.productName, 'trim').required().minLength(2).getError(), + item: { + unitPrice: numberValidator(source.item.unitPrice).required().positive().getError(), + quantity: numberValidator(source.item.quantity).required().integer().min(1).max(100).getError() + } + }), + effect: ({ property }) => { + if (property === 'item.unitPrice' || property === 'item.quantity') { + data.subtotal = data.item.unitPrice * data.item.quantity; + data.tax = data.subtotal * TAX_RATE; + data.total = data.subtotal + data.tax; + } + } +});`,g=`effect: ({ property }) => { + if (property === 'item.unitPrice' || property === 'item.quantity') { + data.subtotal = data.item.unitPrice * data.item.quantity; + data.tax = data.subtotal * TAX_RATE; + data.total = data.subtotal + data.tax; + } +}`;lt(e,{description:"Uses the effect callback to automatically compute derived values like subtotals, taxes, and totals.",title:"Calculated Fields Demo",main:k=>{var S=us(),C=te(S);ct(C,{get hasErrors(){return r()},get isDirty(){return n()}});var x=d(C,2),w=f(x);{let j=I(()=>a()?.productName);Q(w,{id:"productName",get error(){return p(j)},label:"Product Name",placeholder:"Enter product name",get value(){return u.productName},set value(U){u.productName=U}})}var N=d(w,2),T=f(N);$t(T,{subtitle:"nested object",title:"Item Details"});var O=d(T,2),P=f(O);{let j=I(()=>a()?.item?.unitPrice);Q(P,{id:"unitPrice",get error(){return p(j)},label:"Unit Price ($)",min:0,placeholder:"0.00",step:.01,type:"number",get value(){return u.item.unitPrice},set value(U){u.item.unitPrice=U}})}var ae=d(P,2);{let j=I(()=>a()?.item?.quantity);Q(ae,{id:"quantity",get error(){return p(j)},label:"Quantity",max:100,min:1,placeholder:"1",type:"number",get value(){return u.item.quantity},set value(U){u.item.quantity=U}})}var M=d(N,2),L=f(M);$t(L,{subtitle:"computed by effect",title:"Calculated Totals"});var F=d(L,2),ee=f(F),ne=f(ee),se=d(f(ne),2),z=f(se),B=d(ne,2),J=d(f(B),2),R=f(J),A=d(B,2),G=d(f(A),2),he=f(G);W((j,U,ve)=>{V(z,j),V(R,U),V(he,ve)},[()=>_(u.subtotal),()=>_(u.tax),()=>_(u.total)]),E(k,S)},sidebar:k=>{ot(k,{get data(){return u},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:k=>{ut(k,{children:(S,C)=>{var x=cs(),w=te(x);de(w,{code:y,title:"State Setup with Effect"});var N=d(w,2);de(N,{code:g,title:"Effect Function"}),E(S,x)}})}}),Fe(),o()}var fs=D(' '),vs=D('
          ');function ms(e,t){var r=vs(),n=f(r),a=f(n),i=d(a);{var o=s=>{var u=fs(),c=f(u);W(()=>V(c,`(${t.subtitle??""})`)),E(s,u)};ie(i,s=>{t.subtitle&&s(o)})}var l=d(n,2);Mt(l,()=>t.children),W(()=>V(a,`${t.title??""} `)),E(e,r)}var ps=D('
          '),hs=D('
          ',1),gs=D(" ",1);function _s(e,t){Re(t,!0);const r=()=>K(c,"$hasErrors",i),n=()=>K(m,"$isDirty",i),a=()=>K(u,"$errors",i),[i,o]=it(),l={name:"",address:{street:"",city:"",zip:""},company:{name:"",department:"",contact:{phone:"",email:""}}},{data:s,state:{errors:u,hasErrors:c,isDirty:m}}=st(l,{validator:y=>({name:Z(y.name,"trim").required().minLength(2).maxLength(50).getError(),address:{street:Z(y.address.street,"trim").required().minLength(5).getError(),city:Z(y.address.city,"trim").required().minLength(2).getError(),zip:Z(y.address.zip,"trim").required().minLength(5).maxLength(10).getError()},company:{name:Z(y.company.name,"trim").required().minLength(2).getError(),department:Z(y.company.department,"trim").maxLength(50).getError(),contact:{phone:Z(y.company.contact.phone,"trim").required().minLength(10).getError(),email:Z(y.company.contact.email,"trim").required().email().getError()}}})}),v=()=>{s.name=`John ${le()}`,s.address.street=`${We(100,9999)} Main Street`,s.address.city="New York",s.address.zip=`${We(1e4,99999)}`,s.company.name=`Acme ${le()} Inc`,s.company.department="Engineering",s.company.contact.phone=`555-${We(100,999)}-${We(1e3,9999)}`,s.company.contact.email=`contact@${le()}.com`},h=`const sourceData = { + name: '', + address: { street: '', city: '', zip: '' }, // 2-level nested + company: { // 3-level nested + name: '', + department: '', + contact: { phone: '', email: '' } + } +}; + +const { data, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + name: stringValidator(source.name, 'trim').required().minLength(2).maxLength(50).getError(), + address: { + street: stringValidator(source.address.street, 'trim').required().minLength(5).getError(), + city: stringValidator(source.address.city, 'trim').required().minLength(2).getError(), + zip: stringValidator(source.address.zip, 'trim').required().minLength(5).maxLength(10).getError() + }, + company: { + name: stringValidator(source.company.name, 'trim').required().minLength(2).getError(), + department: stringValidator(source.company.department, 'trim').maxLength(50).getError(), + contact: { + phone: stringValidator(source.company.contact.phone, 'trim').required().minLength(10).getError(), + email: stringValidator(source.company.contact.email, 'trim').required().email().getError() + } + } + }) +});`,_=` + + + + + +`;lt(e,{description:"Illustrates validating deeply nested object structures with multi-level property paths.",title:"Nested Objects Demo",main:$=>{var q=hs(),k=te(q);ct(k,{get hasErrors(){return r()},get isDirty(){return n()}});var S=d(k,2),C=f(S),x=f(C);$t(x,{title:"Personal Info"});var w=d(x,2);{let R=I(()=>a()?.name);Q(w,{id:"name",get error(){return p(R)},label:"Full Name",placeholder:"Enter your full name",get value(){return s.name},set value(A){s.name=A}})}var N=d(C,2),T=f(N);$t(T,{subtitle:"2-level nested",title:"Address"});var O=d(T,2),P=f(O);{let R=I(()=>a()?.address?.street);Q(P,{id:"street",get error(){return p(R)},label:"Street",placeholder:"Enter street address",get value(){return s.address.street},set value(A){s.address.street=A}})}var ae=d(P,2),M=f(ae);{let R=I(()=>a()?.address?.city);Q(M,{id:"city",get error(){return p(R)},label:"City",placeholder:"Enter city",get value(){return s.address.city},set value(A){s.address.city=A}})}var L=d(M,2);{let R=I(()=>a()?.address?.zip);Q(L,{id:"zip",get error(){return p(R)},label:"ZIP Code",placeholder:"Enter ZIP",get value(){return s.address.zip},set value(A){s.address.zip=A}})}var F=d(N,2),ee=f(F);$t(ee,{subtitle:"3-level nested",title:"Company"});var ne=d(ee,2),se=f(ne),z=f(se);{let R=I(()=>a()?.company?.name);Q(z,{id:"company-name",get error(){return p(R)},label:"Company Name",placeholder:"Enter company name",get value(){return s.company.name},set value(A){s.company.name=A}})}var B=d(z,2);{let R=I(()=>a()?.company?.department);Q(B,{id:"department",get error(){return p(R)},label:"Department",placeholder:"Enter department",required:!1,get value(){return s.company.department},set value(A){s.company.department=A}})}var J=d(se,2);ms(J,{subtitle:"3rd level",title:"Contact Info",children:(R,A)=>{var G=ps(),he=f(G);{let U=I(()=>a()?.company?.contact?.phone);Q(he,{id:"contact-phone",get error(){return p(U)},label:"Phone",placeholder:"Enter phone number",variant:"nested",get value(){return s.company.contact.phone},set value(ve){s.company.contact.phone=ve}})}var j=d(he,2);{let U=I(()=>a()?.company?.contact?.email);Q(j,{id:"contact-email",get error(){return p(U)},label:"Email",placeholder:"Enter email address",type:"email",variant:"nested",get value(){return s.company.contact.email},set value(ve){s.company.contact.email=ve}})}E(R,G)}}),E($,q)},sidebar:$=>{ot($,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:v,width:"xl:w-96"})},sourceCode:$=>{ut($,{children:(q,k)=>{var S=gs(),C=te(S);de(C,{code:h,title:"State Setup with Nested Validation"});var x=d(C,2);de(x,{code:_,title:"Nested Form Binding Examples"}),E(q,S)}})}}),Fe(),o()}var bs=D('
          Effect triggered:
          '),ys=D('
          '),xs=D('
          '),ws=D(' Submitting...'),Es=D('
          ',1),$s=D('
          Options

          Reset isDirty after successful action

          Try 500ms and type quickly

          Keep errors until next action

          Current Options
          '),Ss=D(" ",1);function Ds(e,t){Re(t,!0);const r=()=>K(p(S),"$hasErrors",l),n=()=>K(p(C),"$isDirty",l),a=()=>K(p(x),"$actionInProgress",l),i=()=>K(p(k),"$errors",l),o=()=>K(p(w),"$actionError",l),[l,s]=it();let u=fe(!0),c=fe(0),m=fe(!1),v=fe(0),h=fe(!1),_=fe(void 0),y=fe(void 0);const g=()=>({name:`User ${le()}`,email:`${le()}@example.com`}),b=L=>st(g(),{validator:F=>({name:Z(F.name,"trim").required().minLength(2).maxLength(50).getError(),email:Z(F.email,"trim").required().email().getError()}),effect:({property:F})=>{oe(y,F,!0)},action:async()=>{const F=We(100,800);if(await new Promise(ee=>setTimeout(ee,F)),p(h))throw new Error(`Simulated error after ${F}ms`);oe(_,`Submitted successfully in ${F}ms!`)},actionCompleted:F=>{F&&oe(_,void 0)}},L);let $=fe(vt(b({resetDirtyOnAction:!0,debounceValidation:0,persistActionError:!1})));const q=()=>{oe(y,void 0),oe(_,void 0),oe($,b({resetDirtyOnAction:p(u),debounceValidation:p(c),persistActionError:p(m)}),!0),Vn(v)},k=I(()=>p($).state.errors),S=I(()=>p($).state.hasErrors),C=I(()=>p($).state.isDirty),x=I(()=>p($).state.actionInProgress),w=I(()=>p($).state.actionError),N=()=>{p($).data.name=`User ${le()}`,p($).data.email=`${le()}@example.com`},T=()=>{oe(_,void 0),p($).execute()},O=`const { data, execute, state } = createSvState( + sourceData, + { validator, effect, action }, + { + // Reset isDirty to false after successful action + resetDirtyOnAction: true, // default: true + + // Debounce validation by N milliseconds + debounceValidation: 0, // default: 0 (uses queueMicrotask) + + // Keep action errors until next action (not cleared on data change) + persistActionError: false // default: false + } +);`,P=`// With resetDirtyOnAction: true (default) +await execute(); +// isDirty is now false + +// With resetDirtyOnAction: false +await execute(); +// isDirty remains true`,ae=`// With debounceValidation: 0 (default) +// Validation runs via queueMicrotask after each change + +// With debounceValidation: 500 +// Validation runs 500ms after the last change +// Useful for expensive validators or rapid typing`,M=`// With persistActionError: false (default) +data.name = 'new value'; +// actionError is cleared immediately + +// With persistActionError: true +data.name = 'new value'; +// actionError remains until next execute() call`;lt(e,{description:"Interactive playground for configuring createSvState options like debouncing and error persistence.",title:"Options Demo",main:ne=>{var se=Be(),z=te(se);ii(z,()=>p(v),B=>{var J=Es(),R=te(J);ct(R,{get hasErrors(){return r()},get isDirty(){return n()}});var A=d(R,2);{var G=H=>{var me=bs(),Pe=f(me),dt=d(f(Pe));W(()=>V(dt,` property "${p(y)??""}" changed`)),E(H,me)};ie(A,H=>{p(y)&&H(G)})}var he=d(A,2),j=f(he);{let H=I(()=>i()?.name);Q(j,{id:"name",get disabled(){return a()},get error(){return p(H)},label:"Name",placeholder:"Enter name",get value(){return p($).data.name},set value(me){p($).data.name=me}})}var U=d(j,2);{let H=I(()=>i()?.email);Q(U,{id:"email",get disabled(){return a()},get error(){return p(H)},label:"Email",placeholder:"Enter email",type:"email",get value(){return p($).data.email},set value(me){p($).data.email=me}})}var ve=d(U,2),Ne=f(ve),re=d(he,2);{var ce=H=>{var me=ys(),Pe=f(me),dt=d(f(Pe),2),Ut=f(dt);W(()=>V(Ut,o().message)),E(H,me)};ie(re,H=>{o()&&H(ce)})}var $e=d(re,2);{var we=H=>{var me=xs(),Pe=f(me),dt=d(f(Pe),2),Ut=f(dt);W(()=>V(Ut,p(_))),E(H,me)};ie($e,H=>{p(_)&&H(we)})}var je=d($e,2),ye=f(je);ye.__click=T;var Ye=f(ye);{var At=H=>{var me=ws();E(H,me)},zt=H=>{var me=Ha("Submit");E(H,me)};ie(Ye,H=>{a()?H(At):H(zt,!1)})}W(()=>{Ne.disabled=a(),ye.disabled=r()||a()}),ur(Ne,()=>p(h),H=>oe(h,H)),E(B,J)}),E(ne,se)},sidebar:ne=>{var se=$s(),z=f(se);ot(z,{get data(){return p($).data},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:N});var B=d(z,2),J=d(f(B),2),R=f(J),A=f(R),G=f(A),he=d(R,2),j=d(f(he),2),U=d(he,2),ve=f(U),Ne=f(ve),re=d(U,2);re.__click=q;var ce=d(B,2),$e=d(f(ce),2),we=f($e),je=f(we),ye=d(we,2),Ye=f(ye),At=d(ye,2),zt=f(At);W(()=>{V(je,`resetDirtyOnAction: ${p(u)??""}`),V(Ye,`debounceValidation: ${p(c)??""}`),V(zt,`persistActionError: ${p(m)??""}`)}),ur(G,()=>p(u),H=>oe(u,H)),Qt(j,()=>p(c),H=>oe(c,H)),ur(Ne,()=>p(m),H=>oe(m,H)),E(ne,se)},sourceCode:ne=>{ut(ne,{children:(se,z)=>{var B=Ss(),J=te(B);de(J,{code:O,title:"Options Overview"});var R=d(J,2);de(R,{code:P,title:"resetDirtyOnAction"});var A=d(R,2);de(A,{code:ae,title:"debounceValidation"});var G=d(A,2);de(G,{code:M,title:"persistActionError"}),E(se,B)}})}}),Fe(),s()}nt(["click"]);var Cs=D('
          '),Ns=D('
          ',1),ks=D(" ",1);function As(e,t){Re(t,!0);const r=()=>K(m,"$hasErrors",i),n=()=>K(v,"$isDirty",i),a=()=>K(c,"$errors",i),[i,o]=it(),l={firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com",phone:"",bio:""},{data:s,reset:u,state:{errors:c,hasErrors:m,isDirty:v}}=st(l,{validator:g=>({firstName:Z(g.firstName,"trim").required().minLength(2).maxLength(30).getError(),lastName:Z(g.lastName,"trim").required().minLength(2).maxLength(30).getError(),email:Z(g.email,"trim").required().email().getError(),phone:Z(g.phone,"trim").required().minLength(10).getError(),bio:Z(g.bio).maxLength(200).getError()})}),h=()=>{s.firstName="John",s.lastName=`Doe${le()}`,s.email=`john.doe.${le()}@example.com`,s.phone=`555-${le().slice(0,3)}-${le().slice(0,4)}`,s.bio="Software developer with a passion for clean code."},_=`const sourceData = { + firstName: 'Alice', + lastName: 'Smith', + email: 'alice.smith@example.com', + phone: '', + bio: '' +}; + +const { data, reset, state: { errors, hasErrors, isDirty } } = createSvState(sourceData, { + validator: (source) => ({ + firstName: stringValidator(source.firstName, 'trim').required().minLength(2).maxLength(30).getError(), + lastName: stringValidator(source.lastName, 'trim').required().minLength(2).maxLength(30).getError(), + email: stringValidator(source.email, 'trim').required().email().getError(), + phone: stringValidator(source.phone, 'trim').required().minLength(10).getError(), + bio: stringValidator(source.bio).maxLength(200).getError() + }) +});`,y=` +{#if $isDirty} + +{/if} + + +`;lt(e,{description:"Demonstrates the reset() function to restore state back to its initial values.",title:"Reset Demo",main:q=>{var k=Ns(),S=te(k);ct(S,{get hasErrors(){return r()},get isDirty(){return n()}});var C=d(S,2),x=f(C);{let M=I(()=>a()?.firstName);Q(x,{id:"firstName",get error(){return p(M)},label:"First Name",placeholder:"Enter first name",get value(){return s.firstName},set value(L){s.firstName=L}})}var w=d(x,2);{let M=I(()=>a()?.lastName);Q(w,{id:"lastName",get error(){return p(M)},label:"Last Name",placeholder:"Enter last name",get value(){return s.lastName},set value(L){s.lastName=L}})}var N=d(w,2);{let M=I(()=>a()?.email);Q(N,{id:"email",get error(){return p(M)},label:"Email",placeholder:"Enter email",type:"email",get value(){return s.email},set value(L){s.email=L}})}var T=d(N,2);{let M=I(()=>a()?.phone);Q(T,{id:"phone",get error(){return p(M)},label:"Phone",placeholder:"555-123-4567",get value(){return s.phone},set value(L){s.phone=L}})}var O=d(T,2);{let M=I(()=>a()?.bio);Wr(O,{id:"bio",get error(){return p(M)},label:"Bio",placeholder:"Tell us about yourself",required:!1,get value(){return s.bio},set value(L){s.bio=L}})}var P=d(C,2);{var ae=M=>{var L=Cs(),F=f(L);F.__click=u,E(M,L)};ie(P,M=>{n()&&M(ae)})}E(q,k)},sidebar:q=>{ot(q,{get data(){return s},get errors(){return a()},get hasErrors(){return r()},get isDirty(){return n()},onFill:h})},sourceCode:q=>{ut(q,{children:(k,S)=>{var C=ks(),x=te(C);de(x,{code:_,title:"State Setup with Reset"});var w=d(x,2);de(w,{code:y,title:"Conditional Reset Button"}),E(k,C)}})}}),Fe(),o()}nt(["click"]);var qs=D(''),Ps=D('
          ',1),Ls=D('

          No snapshots yet

          '),Ts=D('
        • '),Is=D('
            '),Os=D('
            Snapshot History
            '),Ms=D(" ",1);function Vs(e,t){Re(t,!0);const r=()=>K(_,"$hasErrors",o),n=()=>K(y,"$isDirty",o),a=()=>K(g,"$snapshots",o),i=()=>K(h,"$errors",o),[o,l]=it(),s={firstName:"Alice",lastName:"Smith",email:"alice.smith@example.com",phone:"",bio:""},u=S=>S.charAt(0).toUpperCase()+S.slice(1).replaceAll(/([A-Z])/g," $1"),{data:c,reset:m,rollback:v,state:{errors:h,hasErrors:_,isDirty:y,snapshots:g}}=st(s,{validator:S=>({firstName:Z(S.firstName,"trim").required().minLength(2).maxLength(30).getError(),lastName:Z(S.lastName,"trim").required().minLength(2).maxLength(30).getError(),email:Z(S.email,"trim").required().email().getError(),phone:Z(S.phone,"trim").required().minLength(10).getError(),bio:Z(S.bio).maxLength(200).getError()}),effect:({snapshot:S,property:C})=>{S(`Changed ${u(C)}`)}}),b=()=>{c.firstName="John",c.lastName=`Doe${le()}`,c.email=`john.doe.${le()}@example.com`,c.phone=`555-${le().slice(0,3)}-${le().slice(0,4)}`,c.bio="Software developer with a passion for clean code."},$=`const sourceData = { + firstName: 'Alice', lastName: 'Smith', email: 'alice.smith@example.com', phone: '', bio: '' +}; + +const { data, reset, rollback, state: { errors, hasErrors, isDirty, snapshots } } = + createSvState(sourceData, { + validator: (source) => ({ /* validation rules */ }), + effect: ({ snapshot, property }) => { + snapshot(\`Changed \${formatFieldName(property)}\`); + } + });`,q=`// Effect callback creates snapshots on each change +effect: ({ snapshot, property }) => { + snapshot(\`Changed \${property}\`); // Creates undo point + // If same title, replaces last snapshot (debouncing) + // Use snapshot(title, false) to always create new +}`,k=`// Undo last change (disabled if only initial snapshot) + + +// Rollback multiple steps at once +rollback(3); // Undo 3 changes + +// Reset to initial state (clears all snapshots) +`;lt(e,{description:"Shows snapshot creation for undo functionality with rollback() support.",title:"Snapshot & Rollback Demo",main:w=>{var N=Ps(),T=te(N);ct(T,{get hasErrors(){return r()},get isDirty(){return n()}});var O=d(T,2),P=f(O),ae=f(P),M=d(O,2),L=f(M);{let A=I(()=>i()?.firstName);Q(L,{id:"firstName",get error(){return p(A)},label:"First Name",placeholder:"Enter first name",get value(){return c.firstName},set value(G){c.firstName=G}})}var F=d(L,2);{let A=I(()=>i()?.lastName);Q(F,{id:"lastName",get error(){return p(A)},label:"Last Name",placeholder:"Enter last name",get value(){return c.lastName},set value(G){c.lastName=G}})}var ee=d(F,2);{let A=I(()=>i()?.email);Q(ee,{id:"email",get error(){return p(A)},label:"Email",placeholder:"Enter email",type:"email",get value(){return c.email},set value(G){c.email=G}})}var ne=d(ee,2);{let A=I(()=>i()?.phone);Q(ne,{id:"phone",get error(){return p(A)},label:"Phone",placeholder:"555-123-4567",get value(){return c.phone},set value(G){c.phone=G}})}var se=d(ne,2);{let A=I(()=>i()?.bio);Wr(se,{id:"bio",get error(){return p(A)},label:"Bio",placeholder:"Tell us about yourself",required:!1,get value(){return c.bio},set value(G){c.bio=G}})}var z=d(M,2),B=f(z);B.__click=()=>v();var J=d(B,2);{var R=A=>{var G=qs();G.__click=m,E(A,G)};ie(J,A=>{n()&&A(R)})}W(()=>{V(ae,`${a().length??""} Snapshot${a().length===1?"":"s"}`),B.disabled=a().length<=1}),E(w,N)},sidebar:w=>{var N=Os(),T=f(N);ot(T,{get data(){return c},get errors(){return i()},get hasErrors(){return r()},get isDirty(){return n()},onFill:b,width:"xl:w-96"});var O=d(T,2),P=d(f(O),2);{var ae=L=>{var F=Ls();E(L,F)},M=L=>{var F=Is();zr(F,5,a,Br,(ee,ne,se)=>{var z=Ts(),B=f(z);B.textContent=se+1;var J=d(B,2),R=f(J);W(()=>V(R,p(ne).title)),E(ee,z)}),E(L,F)};ie(P,L=>{a().length===0?L(ae):L(M,!1)})}E(w,N)},sourceCode:w=>{ut(w,{children:(N,T)=>{var O=Ms(),P=te(O);de(P,{code:$,title:"State Setup with Snapshots"});var ae=d(P,2);de(ae,{code:q,title:"Effect with Snapshot Creation"});var M=d(ae,2);de(M,{code:k,title:"Rollback & Reset Usage"}),E(N,O)}})}}),Fe(),l()}nt(["click"]);var Rs=D(""),Fs=D(`
            svstate logo

            svstate

            A Svelte 5 library that provides a supercharged $state() with deep reactive proxies, validation, snapshot/undo, + and side effects — built for complex, real-world applications.

            $ npm i svstate
            `);function js(e){const t=[{value:"basic-validation",name:"Basic Validation"},{value:"nested-objects",name:"Nested Objects"},{value:"array-property",name:"Array Property"},{value:"calculated-fields",name:"Calculated Fields"},{value:"calculated-class",name:"State with Methods"},{value:"reset-demo",name:"Reset"},{value:"snapshot-demo",name:"Snapshot & Rollback"},{value:"action-demo",name:"Action & Error"},{value:"options-demo",name:"Options"}];let r=fe("basic-validation");const n="1.2.0",a="/svstate";var i=Fs(),o=f(i),l=f(o),s=d(l,2),u=f(s),c=d(f(u),2),m=f(c),v=d(u,4),h=d(f(v),4);h.__click=()=>navigator.clipboard.writeText(`npm i svstate@${n}`);var _=d(v,2),y=d(o,2),g=f(y),b=f(g),$=d(f(b),2);zr($,21,()=>t,Br,(x,w)=>{var N=Rs(),T=f(N),O={};W(()=>{V(T,p(w).name),O!==(O=p(w).value)&&(N.value=(N.__value=p(w).value)??"")}),E(x,N)});var q=d(g,2),k=f(q);{var S=x=>{as(x,{})},C=x=>{var w=Be(),N=te(w);{var T=P=>{_s(P,{})},O=P=>{var ae=Be(),M=te(ae);{var L=ee=>{Qi(ee,{})},F=ee=>{var ne=Be(),se=te(ne);{var z=J=>{ds(J,{})},B=J=>{var R=Be(),A=te(R);{var G=j=>{ls(j,{})},he=j=>{var U=Be(),ve=te(U);{var Ne=ce=>{As(ce,{})},re=ce=>{var $e=Be(),we=te($e);{var je=Ye=>{Vs(Ye,{})},ye=Ye=>{var At=Be(),zt=te(At);{var H=Pe=>{zi(Pe,{})},me=Pe=>{var dt=Be(),Ut=te(dt);{var Ja=br=>{Ds(br,{})};ie(Ut,br=>{p(r)==="options-demo"&&br(Ja)},!0)}E(Pe,dt)};ie(zt,Pe=>{p(r)==="action-demo"?Pe(H):Pe(me,!1)},!0)}E(Ye,At)};ie(we,Ye=>{p(r)==="snapshot-demo"?Ye(je):Ye(ye,!1)},!0)}E(ce,$e)};ie(ve,ce=>{p(r)==="reset-demo"?ce(Ne):ce(re,!1)},!0)}E(j,U)};ie(A,j=>{p(r)==="calculated-class"?j(G):j(he,!1)},!0)}E(J,R)};ie(se,J=>{p(r)==="calculated-fields"?J(z):J(B,!1)},!0)}E(ee,ne)};ie(M,ee=>{p(r)==="array-property"?ee(L):ee(F,!1)},!0)}E(P,ae)};ie(N,P=>{p(r)==="nested-objects"?P(T):P(O,!1)},!0)}E(x,w)};ie(k,x=>{p(r)==="basic-validation"?x(S):x(C,!1)})}W(()=>{_e(l,"src",`${a}/favicon.png`),V(m,`v${n}`),_e(_,"href",`${a}/llms.txt`)}),di($,()=>p(r),x=>oe(r,x)),E(e,i)}nt(["click"]);ri(js,{target:document.querySelector("#app")}); diff --git a/docs/index.html b/docs/index.html index f261c75..79f46e4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,7 +5,7 @@ svstate demo - + diff --git a/package-lock.json b/package-lock.json index f496266..9a1185d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "svstate", - "version": "1.1.0", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "svstate", - "version": "1.1.0", + "version": "1.2.0", "license": "ISC", "devDependencies": { "@sveltejs/vite-plugin-svelte": "^6.2.4", diff --git a/package.json b/package.json index 82a066a..1f228ec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "svstate", - "version": "1.1.0", + "version": "1.2.0", "description": "Supercharged $state() for Svelte 5: deep reactive proxy with validation, cross-field rules, computed & side-effects", "author": "BCsabaEngine", "license": "ISC",