sprae 10.10.3 → 10.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,632 +0,0 @@
1
- (() => {
2
- var __defProp = Object.defineProperty;
3
- var __export = (target, all) => {
4
- for (var name in all)
5
- __defProp(target, name, { get: all[name], enumerable: true });
6
- };
7
-
8
- // signal.js
9
- var signal;
10
- var effect;
11
- var untracked;
12
- var batch;
13
- var computed;
14
- function use(s) {
15
- signal = s.signal;
16
- effect = s.effect;
17
- computed = s.computed;
18
- batch = s.batch || ((fn) => fn());
19
- untracked = s.untracked || batch;
20
- }
21
-
22
- // store.js
23
- var _signals = Symbol("signals");
24
- var _change = Symbol("length");
25
- function store(values, parent) {
26
- if (!values)
27
- return values;
28
- if (values[_signals])
29
- return values;
30
- if (Array.isArray(values))
31
- return list(values);
32
- if (values.constructor !== Object)
33
- return values;
34
- let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);
35
- const state = new Proxy(signals, {
36
- get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),
37
- set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? ++_len.value, 1),
38
- deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),
39
- ownKeys() {
40
- _len.value;
41
- return Reflect.ownKeys(signals);
42
- }
43
- });
44
- for (let key in values) {
45
- const desc = Object.getOwnPropertyDescriptor(values, key);
46
- if (desc?.get) {
47
- (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);
48
- } else {
49
- signals[key] = void 0;
50
- set(signals, key, values[key]);
51
- }
52
- }
53
- return state;
54
- }
55
- var mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 };
56
- function list(values) {
57
- let lastProp;
58
- if (values[_signals])
59
- return values;
60
- let _len = signal(values.length), signals = Array(values.length).fill();
61
- const state = new Proxy(signals, {
62
- get(_, key) {
63
- if (typeof key === "symbol")
64
- return key === _change ? _len : key === _signals ? signals : signals[key];
65
- if (key === "length")
66
- return mut[lastProp] ? _len.peek() : _len.value;
67
- lastProp = key;
68
- if (signals[key])
69
- return signals[key].valueOf();
70
- if (key < signals.length)
71
- return (signals[key] = signal(store(values[key]))).value;
72
- },
73
- set(_, key, v) {
74
- if (key === "length") {
75
- for (let i = v, l = signals.length; i < l; i++)
76
- delete state[i];
77
- _len.value = signals.length = v;
78
- return true;
79
- }
80
- set(signals, key, v);
81
- if (key >= _len.peek())
82
- _len.value = signals.length = Number(key) + 1;
83
- return true;
84
- },
85
- deleteProperty: (_, key) => (signals[key] && del(signals, key), 1)
86
- });
87
- return state;
88
- }
89
- function set(signals, key, v) {
90
- let s = signals[key];
91
- if (key[0] === "_")
92
- signals[key] = v;
93
- else if (!s) {
94
- signals[key] = s = v?.peek ? v : signal(store(v));
95
- } else if (v === s.peek())
96
- ;
97
- else if (s._set)
98
- s._set(v);
99
- else if (Array.isArray(v) && Array.isArray(s.peek())) {
100
- const cur = s.peek();
101
- if (cur[_change])
102
- untracked(() => {
103
- batch(() => {
104
- let i = 0, l = v.length;
105
- for (; i < l; i++)
106
- cur[i] = v[i];
107
- cur.length = l;
108
- });
109
- });
110
- else {
111
- s.value = v;
112
- }
113
- } else {
114
- s.value = store(v);
115
- }
116
- }
117
- function del(signals, key) {
118
- const s = signals[key], del2 = s[Symbol.dispose];
119
- if (del2)
120
- delete s[Symbol.dispose];
121
- delete signals[key];
122
- del2?.();
123
- }
124
-
125
- // core.js
126
- var _dispose = Symbol.dispose || (Symbol.dispose = Symbol("dispose"));
127
- var directive = {};
128
- var memo = /* @__PURE__ */ new WeakMap();
129
- function sprae(el, values) {
130
- if (!el?.childNodes)
131
- return;
132
- if (memo.has(el)) {
133
- return Object.assign(memo.get(el), values);
134
- }
135
- const state = store(values || {}), disposes = [];
136
- init(el);
137
- if (!memo.has(el))
138
- memo.set(el, state);
139
- el[_dispose] = () => {
140
- while (disposes.length)
141
- disposes.pop()();
142
- memo.delete(el);
143
- };
144
- return state;
145
- function init(el2, parent = el2.parentNode) {
146
- if (!el2.childNodes)
147
- return;
148
- for (let i = 0; i < el2.attributes?.length; ) {
149
- let attr2 = el2.attributes[i];
150
- if (attr2.name[0] === ":") {
151
- el2.removeAttribute(attr2.name);
152
- let names = attr2.name.slice(1).split(":");
153
- for (let name of names) {
154
- let dir = directive[name] || directive.default;
155
- let evaluate = (dir.parse || parse)(attr2.value);
156
- let dispose = dir(el2, evaluate, state, name);
157
- if (dispose)
158
- disposes.push(dispose);
159
- }
160
- if (memo.has(el2))
161
- return el2[_dispose] && disposes.push(el2[_dispose]);
162
- if (el2.parentNode !== parent)
163
- return;
164
- } else
165
- i++;
166
- }
167
- for (let child of [...el2.childNodes])
168
- init(child, el2);
169
- }
170
- ;
171
- }
172
- var evalMemo = {};
173
- var parse = (expr, dir, fn) => {
174
- if (fn = evalMemo[expr = expr.trim()])
175
- return fn;
176
- try {
177
- fn = compile(expr);
178
- } catch (e) {
179
- err(e, dir, expr);
180
- }
181
- return evalMemo[expr] = fn;
182
- };
183
- var err = (e, dir, expr = "") => {
184
- throw Object.assign(e, { message: `\u2234 ${e.message}
185
-
186
- ${dir}${expr ? `="${expr}"
187
-
188
- ` : ""}`, expr });
189
- };
190
- var compile;
191
- sprae.use = (s) => {
192
- s.signal && use(s);
193
- s.compile && (compile = s.compile);
194
- };
195
- var frag = (tpl) => {
196
- if (!tpl.nodeType)
197
- return tpl;
198
- let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(""), childNodes = (content.append(ref), [...content.childNodes]);
199
- return {
200
- childNodes,
201
- content,
202
- remove: () => content.append(...childNodes),
203
- replaceWith(el) {
204
- if (el === ref)
205
- return;
206
- ref.before(el);
207
- content.append(...childNodes);
208
- },
209
- attributes,
210
- removeAttribute(name) {
211
- attributes.splice(attributes.findIndex((a) => a.name === name), 1);
212
- }
213
- };
214
- };
215
-
216
- // node_modules/ulive/dist/ulive.es.js
217
- var ulive_es_exports = {};
218
- __export(ulive_es_exports, {
219
- batch: () => batch2,
220
- computed: () => computed2,
221
- effect: () => effect2,
222
- signal: () => signal2,
223
- untracked: () => untracked2
224
- });
225
- var current;
226
- var batched;
227
- var signal2 = (v, s, obs = /* @__PURE__ */ new Set()) => (s = {
228
- get value() {
229
- current?.deps.push(obs.add(current));
230
- return v;
231
- },
232
- set value(val) {
233
- if (val === v)
234
- return;
235
- v = val;
236
- for (let sub of obs)
237
- batched ? batched.add(sub) : sub();
238
- },
239
- peek() {
240
- return v;
241
- }
242
- }, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);
243
- var effect2 = (fn, teardown, fx, deps) => (fx = (prev) => {
244
- teardown?.call?.();
245
- prev = current, current = fx;
246
- try {
247
- teardown = fn();
248
- } finally {
249
- current = prev;
250
- }
251
- }, deps = fx.deps = [], fx(), (dep) => {
252
- teardown?.call?.();
253
- while (dep = deps.pop())
254
- dep.delete(fx);
255
- });
256
- var computed2 = (fn, s = signal2(), c, e) => (c = {
257
- get value() {
258
- e || (e = effect2(() => s.value = fn()));
259
- return s.value;
260
- },
261
- peek: s.peek
262
- }, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);
263
- var batch2 = (fn) => {
264
- let fxs = batched;
265
- if (!fxs)
266
- batched = /* @__PURE__ */ new Set();
267
- try {
268
- fn();
269
- } finally {
270
- if (!fxs) {
271
- fxs = batched;
272
- batched = null;
273
- for (const fx of fxs)
274
- fx();
275
- }
276
- }
277
- };
278
- var untracked2 = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);
279
-
280
- // directive/if.js
281
- var _prevIf = Symbol("if");
282
- directive.if = (el, evaluate, state) => {
283
- let next = el.nextElementSibling, holder = document.createTextNode(""), curEl, ifEl, elseEl;
284
- el.replaceWith(holder);
285
- ifEl = el.content ? frag(el) : el;
286
- memo.set(ifEl, null);
287
- if (next?.hasAttribute(":else")) {
288
- next.removeAttribute(":else");
289
- if (!next.hasAttribute(":if"))
290
- next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);
291
- }
292
- return effect(() => {
293
- const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;
294
- if (next)
295
- next[_prevIf] = newEl === ifEl;
296
- if (curEl != newEl) {
297
- curEl?.remove();
298
- if (curEl = newEl) {
299
- holder.before(curEl.content || curEl);
300
- memo.get(curEl) === null && memo.delete(curEl);
301
- sprae(curEl, state);
302
- }
303
- }
304
- });
305
- };
306
-
307
- // directive/each.js
308
- directive.each = (tpl, [itemVar, idxVar, evaluate], state) => {
309
- const holder = document.createTextNode("");
310
- tpl.replaceWith(holder);
311
- let cur, keys2, prevl = 0;
312
- const items = computed(() => {
313
- keys2 = null;
314
- let items2 = evaluate(state);
315
- if (typeof items2 === "number")
316
- items2 = Array.from({ length: items2 }, (_, i) => i + 1);
317
- if (items2?.constructor === Object)
318
- keys2 = Object.keys(items2), items2 = Object.values(items2);
319
- return items2 || [];
320
- });
321
- const update = () => {
322
- untracked(() => {
323
- var _a, _b;
324
- let i = 0, newItems = items.value, newl = newItems.length;
325
- if (cur && !cur[_change]) {
326
- for (let s of cur[_signals] || []) {
327
- s[Symbol.dispose]();
328
- }
329
- cur = null, prevl = 0;
330
- }
331
- if (newl < prevl) {
332
- cur.length = newl;
333
- } else {
334
- if (!cur) {
335
- cur = newItems;
336
- } else {
337
- for (; i < prevl; i++) {
338
- cur[i] = newItems[i];
339
- }
340
- }
341
- for (; i < newl; i++) {
342
- cur[i] = newItems[i];
343
- let idx = i, scope = store({
344
- [itemVar]: cur[_signals]?.[idx] || cur[idx],
345
- [idxVar]: keys2 ? keys2[idx] : idx
346
- }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);
347
- holder.before(el.content || el);
348
- sprae(el, scope);
349
- ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {
350
- el[Symbol.dispose](), el.remove();
351
- };
352
- }
353
- }
354
- prevl = newl;
355
- });
356
- };
357
- let planned = 0;
358
- return effect(() => {
359
- items.value[_change]?.value;
360
- if (!planned) {
361
- update();
362
- queueMicrotask(() => (planned && update(), planned = 0));
363
- } else
364
- planned++;
365
- });
366
- };
367
- directive.each.parse = (expr) => {
368
- let [leftSide, itemsExpr] = expr.split(/\s+in\s+/);
369
- let [itemVar, idxVar = "$"] = leftSide.split(/\s*,\s*/);
370
- return [itemVar, idxVar, parse(itemsExpr)];
371
- };
372
-
373
- // directive/ref.js
374
- directive.ref = (el, expr, state) => {
375
- state[expr] = el;
376
- };
377
- directive.ref.parse = (expr) => expr;
378
-
379
- // directive/with.js
380
- directive.with = (el, evaluate, rootState) => {
381
- let state;
382
- return effect(() => {
383
- let values = evaluate(rootState);
384
- sprae(el, state ? values : state = store(values, rootState));
385
- });
386
- };
387
-
388
- // directive/html.js
389
- directive.html = (el, evaluate, state) => {
390
- let tpl = evaluate(state);
391
- if (!tpl)
392
- return;
393
- let content = (tpl.content || tpl).cloneNode(true);
394
- el.replaceChildren(content);
395
- sprae(el, state);
396
- };
397
-
398
- // directive/text.js
399
- directive.text = (el, evaluate, state) => {
400
- if (el.content)
401
- el.replaceWith(el = frag(el).childNodes[0]);
402
- return effect(() => {
403
- let value = evaluate(state);
404
- el.textContent = value == null ? "" : value;
405
- });
406
- };
407
-
408
- // directive/class.js
409
- directive.class = (el, evaluate, state) => {
410
- let cur = /* @__PURE__ */ new Set();
411
- return effect(() => {
412
- let v = evaluate(state);
413
- let clsx = /* @__PURE__ */ new Set();
414
- if (v) {
415
- if (typeof v === "string")
416
- v.split(" ").map((cls) => clsx.add(cls));
417
- else if (Array.isArray(v))
418
- v.map((v2) => v2 && clsx.add(v2));
419
- else
420
- Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));
421
- }
422
- for (let cls of cur)
423
- if (clsx.has(cls))
424
- clsx.delete(cls);
425
- else
426
- el.classList.remove(cls);
427
- for (let cls of cur = clsx)
428
- el.classList.add(cls);
429
- });
430
- };
431
-
432
- // directive/style.js
433
- directive.style = (el, evaluate, state) => {
434
- let initStyle = el.getAttribute("style");
435
- return effect(() => {
436
- let v = evaluate(state);
437
- if (typeof v === "string")
438
- el.setAttribute("style", initStyle + (initStyle.endsWith(";") ? "" : "; ") + v);
439
- else {
440
- if (initStyle)
441
- el.setAttribute("style", initStyle);
442
- for (let k in v)
443
- k[0] == "-" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];
444
- }
445
- });
446
- };
447
-
448
- // directive/default.js
449
- directive.default = (target, evaluate, state, name) => {
450
- if (!name.startsWith("on"))
451
- return effect(() => {
452
- let value = evaluate(state);
453
- if (name)
454
- attr(target, name, value);
455
- else
456
- for (let key in value)
457
- attr(target, dashcase(key), value[key]);
458
- });
459
- const ctxs = name.split("..").map((e) => {
460
- let ctx = { evt: "", target, test: () => true };
461
- ctx.evt = (e.startsWith("on") ? e.slice(2) : e).replace(
462
- /\.(\w+)?-?([-\w]+)?/g,
463
- (match, mod, param = "") => (ctx.test = mods[mod]?.(ctx, ...param.split("-")) || ctx.test, "")
464
- );
465
- return ctx;
466
- });
467
- if (ctxs.length == 1)
468
- return effect(() => addListener(evaluate(state), ctxs[0]));
469
- let startFn, nextFn, off, idx = 0;
470
- const nextListener = (fn) => {
471
- off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);
472
- };
473
- return effect(() => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null));
474
- function addListener(fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) {
475
- if (defer)
476
- fn = defer(fn);
477
- const cb = (e) => {
478
- try {
479
- test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e));
480
- } catch (error) {
481
- err(error, `:on${evt}`, fn);
482
- }
483
- };
484
- target2.addEventListener(evt, cb, opts);
485
- return () => target2.removeEventListener(evt, cb, opts);
486
- }
487
- ;
488
- };
489
- var mods = {
490
- prevent(ctx) {
491
- ctx.prevent = true;
492
- },
493
- stop(ctx) {
494
- ctx.stop = true;
495
- },
496
- immediate(ctx) {
497
- ctx.immediate = true;
498
- },
499
- once(ctx) {
500
- ctx.once = true;
501
- },
502
- passive(ctx) {
503
- ctx.passive = true;
504
- },
505
- capture(ctx) {
506
- ctx.capture = true;
507
- },
508
- window(ctx) {
509
- ctx.target = window;
510
- },
511
- document(ctx) {
512
- ctx.target = document;
513
- },
514
- throttle(ctx, limit) {
515
- ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);
516
- },
517
- debounce(ctx, wait) {
518
- ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108);
519
- },
520
- outside: (ctx) => (e) => {
521
- let target = ctx.target;
522
- if (target.contains(e.target))
523
- return false;
524
- if (e.target.isConnected === false)
525
- return false;
526
- if (target.offsetWidth < 1 && target.offsetHeight < 1)
527
- return false;
528
- return true;
529
- },
530
- self: (ctx) => (e) => e.target === ctx.target,
531
- ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),
532
- shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),
533
- alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),
534
- meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),
535
- arrow: () => keys.arrow,
536
- enter: () => keys.enter,
537
- esc: () => keys.esc,
538
- tab: () => keys.tab,
539
- space: () => keys.space,
540
- delete: () => keys.delete,
541
- digit: () => keys.digit,
542
- letter: () => keys.letter,
543
- char: () => keys.char
544
- };
545
- var keys = {
546
- ctrl: (e) => e.ctrlKey || e.key === "Control" || e.key === "Ctrl",
547
- shift: (e) => e.shiftKey || e.key === "Shift",
548
- alt: (e) => e.altKey || e.key === "Alt",
549
- meta: (e) => e.metaKey || e.key === "Meta" || e.key === "Command",
550
- arrow: (e) => e.key.startsWith("Arrow"),
551
- enter: (e) => e.key === "Enter",
552
- esc: (e) => e.key.startsWith("Esc"),
553
- tab: (e) => e.key === "Tab",
554
- space: (e) => e.key === "\xA0" || e.key === "Space" || e.key === " ",
555
- delete: (e) => e.key === "Delete" || e.key === "Backspace",
556
- digit: (e) => /^\d$/.test(e.key),
557
- letter: (e) => /^\p{L}$/gu.test(e.key),
558
- char: (e) => /^\S$/.test(e.key)
559
- };
560
- var attr = (el, name, v) => {
561
- if (v == null || v === false)
562
- el.removeAttribute(name);
563
- else
564
- el.setAttribute(name, v === true ? "" : typeof v === "number" || typeof v === "string" ? v : "");
565
- };
566
- var throttle = (fn, limit) => {
567
- let pause, planned, block = (e) => {
568
- pause = true;
569
- setTimeout(() => {
570
- pause = false;
571
- if (planned)
572
- return planned = false, block(e), fn(e);
573
- }, limit);
574
- };
575
- return (e) => {
576
- if (pause)
577
- return planned = true;
578
- block(e);
579
- return fn(e);
580
- };
581
- };
582
- var debounce = (fn, wait) => {
583
- let timeout;
584
- return (e) => {
585
- clearTimeout(timeout);
586
- timeout = setTimeout(() => {
587
- timeout = null;
588
- fn(e);
589
- }, wait);
590
- };
591
- };
592
- var dashcase = (str) => {
593
- return str.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g, (match, i) => (i ? "-" : "") + match.toLowerCase());
594
- };
595
-
596
- // directive/value.js
597
- directive.value = (el, [getValue, setValue], state) => {
598
- const update = el.type === "text" || el.type === "" ? (value) => el.setAttribute("value", el.value = value == null ? "" : value) : el.tagName === "TEXTAREA" || el.type === "text" || el.type === "" ? (value, from, to) => (from = el.selectionStart, to = el.selectionEnd, el.setAttribute("value", el.value = value == null ? "" : value), from && el.setSelectionRange(from, to)) : el.type === "checkbox" ? (value) => (el.checked = value, attr(el, "checked", value)) : el.type === "select-one" ? (value) => {
599
- for (let option in el.options)
600
- option.removeAttribute("selected");
601
- el.value = value;
602
- el.selectedOptions[0]?.setAttribute("selected", "");
603
- } : (value) => el.value = value;
604
- const handleChange = el.type === "checkbox" ? (e) => setValue(state, el.checked) : (e) => setValue(state, el.value);
605
- el.addEventListener("input", handleChange);
606
- el.addEventListener("change", handleChange);
607
- return effect(() => update(getValue(state)));
608
- };
609
- directive.value.parse = (expr) => {
610
- let evaluate = [parse(expr)];
611
- try {
612
- evaluate.push(parse(`${expr}=arguments[1];`));
613
- } catch (e) {
614
- }
615
- return evaluate;
616
- };
617
-
618
- // directive/fx.js
619
- directive.fx = (el, evaluate, state) => {
620
- return effect(() => evaluate(state));
621
- };
622
-
623
- // sprae.js
624
- sprae.use(ulive_es_exports);
625
- sprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });
626
- var sprae_default = sprae;
627
-
628
- // sprae.auto.js
629
- window.sprae = sprae_default;
630
- if (document.currentScript?.hasAttribute("init"))
631
- sprae_default(document.documentElement);
632
- })();
@@ -1,5 +0,0 @@
1
- (()=>{var G=Object.defineProperty,Q=(e,n)=>{for(var t in n)G(e,t,{get:n[t],enumerable:!0})},E,h,L,T,C;function U(e){E=e.signal,h=e.effect,C=e.computed,T=e.batch||(n=>n()),L=e.untracked||T}var A=Symbol("signals"),P=Symbol("length");function N(e,n){if(!e||e[A])return e;if(Array.isArray(e))return ee(e);if(e.constructor!==Object)return e;let t={...n?.[A]},r=E(Object.values(e).length);const a=new Proxy(t,{get:(s,i)=>i===P?r:i===A?t:t[i]?.valueOf(),set:(s,i,l,u)=>(u=t[i],D(t,i,l),u??++r.value,1),deleteProperty:(s,i)=>(t[i]&&(R(t,i),r.value--),1),ownKeys(){return r.value,Reflect.ownKeys(t)}});for(let s in e){const i=Object.getOwnPropertyDescriptor(e,s);i?.get?(t[s]=C(i.get.bind(a)))._set=i.set?.bind(a):(t[s]=void 0,D(t,s,e[s]))}return a}var Y={push:1,pop:1,shift:1,unshift:1,splice:1};function ee(e){let n;if(e[A])return e;let t=E(e.length),r=Array(e.length).fill();const a=new Proxy(r,{get(s,i){if(typeof i=="symbol")return i===P?t:i===A?r:r[i];if(i==="length")return Y[n]?t.peek():t.value;if(n=i,r[i])return r[i].valueOf();if(i<r.length)return(r[i]=E(N(e[i]))).value},set(s,i,l){if(i==="length"){for(let u=l,y=r.length;u<y;u++)delete a[u];return t.value=r.length=l,!0}return D(r,i,l),i>=t.peek()&&(t.value=r.length=Number(i)+1),!0},deleteProperty:(s,i)=>(r[i]&&R(r,i),1)});return a}function D(e,n,t){let r=e[n];if(n[0]==="_")e[n]=t;else if(!r)e[n]=r=t?.peek?t:E(N(t));else if(t!==r.peek())if(r._set)r._set(t);else if(Array.isArray(t)&&Array.isArray(r.peek())){const a=r.peek();a[P]?L(()=>{T(()=>{let s=0,i=t.length;for(;s<i;s++)a[s]=t[s];a.length=i})}):r.value=t}else r.value=N(t)}function R(e,n){const t=e[n],r=t[Symbol.dispose];r&&delete t[Symbol.dispose],delete e[n],r?.()}var K=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),p={},m=new WeakMap;function g(e,n){if(!e?.childNodes)return;if(m.has(e))return Object.assign(m.get(e),n);const t=N(n||{}),r=[];return a(e),m.has(e)||m.set(e,t),e[K]=()=>{for(;r.length;)r.pop()();m.delete(e)},t;function a(s,i=s.parentNode){if(!!s.childNodes){for(let l=0;l<s.attributes?.length;){let u=s.attributes[l];if(u.name[0]===":"){s.removeAttribute(u.name);let y=u.name.slice(1).split(":");for(let k of y){let c=p[k]||p.default,o=(c.parse||$)(u.value),b=c(s,o,t,k);b&&r.push(b)}if(m.has(s))return s[K]&&r.push(s[K]);if(s.parentNode!==i)return}else l++}for(let l of[...s.childNodes])a(l,s)}}}var F={},$=(e,n,t)=>{if(t=F[e=e.trim()])return t;try{t=q(e)}catch(r){J(r,n,e)}return F[e]=t},J=(e,n,t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
2
-
3
- ${n}${t?`="${t}"
4
-
5
- `:""}`,expr:t})},q;g.use=e=>{e.signal&&U(e),e.compile&&(q=e.compile)};var j=e=>{if(!e.nodeType)return e;let n=e.content.cloneNode(!0),t=[...e.attributes],r=document.createTextNode(""),a=(n.append(r),[...n.childNodes]);return{childNodes:a,content:n,remove:()=>n.append(...a),replaceWith(s){s!==r&&(r.before(s),n.append(...a))},attributes:t,removeAttribute(s){t.splice(t.findIndex(i=>i.name===s),1)}}},B={};Q(B,{batch:()=>re,computed:()=>te,effect:()=>V,signal:()=>H,untracked:()=>ne});var _,x,H=(e,n,t=new Set)=>(n={get value(){return _?.deps.push(t.add(_)),e},set value(r){if(r!==e){e=r;for(let a of t)x?x.add(a):a()}},peek(){return e}},n.toJSON=n.then=n.toString=n.valueOf=()=>n.value,n),V=(e,n,t,r)=>(t=a=>{n?.call?.(),a=_,_=t;try{n=e()}finally{_=a}},r=t.deps=[],t(),a=>{for(n?.call?.();a=r.pop();)a.delete(t)}),te=(e,n=H(),t,r)=>(t={get value(){return r||(r=V(()=>n.value=e())),n.value},peek:n.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),re=e=>{let n=x;n||(x=new Set);try{e()}finally{if(!n){n=x,x=null;for(const t of n)t()}}},ne=(e,n,t)=>(n=_,_=null,t=e(),_=n,t),X=Symbol("if");p.if=(e,n,t)=>{let r=e.nextElementSibling,a=document.createTextNode(""),s,i,l;return e.replaceWith(a),i=e.content?j(e):e,m.set(i,null),r?.hasAttribute(":else")&&(r.removeAttribute(":else"),r.hasAttribute(":if")||(r.remove(),l=r.content?j(r):r,m.set(l,null))),h(()=>{const u=n(t)?i:e[X]?null:l;r&&(r[X]=u===i),s!=u&&(s?.remove(),(s=u)&&(a.before(s.content||s),m.get(s)===null&&m.delete(s),g(s,t)))})},p.each=(e,[n,t,r],a)=>{const s=document.createTextNode("");e.replaceWith(s);let i,l,u=0;const y=C(()=>{l=null;let o=r(a);return typeof o=="number"&&(o=Array.from({length:o},(b,d)=>d+1)),o?.constructor===Object&&(l=Object.keys(o),o=Object.values(o)),o||[]}),k=()=>{L(()=>{var o,b;let d=0,v=y.value,O=v.length;if(i&&!i[P]){for(let w of i[A]||[])w[Symbol.dispose]();i=null,u=0}if(O<u)i.length=O;else{if(!i)i=v;else for(;d<u;d++)i[d]=v[d];for(;d<O;d++){i[d]=v[d];let w=d,M=N({[n]:i[A]?.[w]||i[w],[t]:l?l[w]:w},a),S=e.content?j(e):e.cloneNode(!0);s.before(S.content||S),g(S,M),((b=i[o=A]||(i[o]=[]))[d]||(b[d]={}))[Symbol.dispose]=()=>{S[Symbol.dispose](),S.remove()}}}u=O})};let c=0;return h(()=>{y.value[P]?.value,c?c++:(k(),queueMicrotask(()=>(c&&k(),c=0)))})},p.each.parse=e=>{let[n,t]=e.split(/\s+in\s+/),[r,a="$"]=n.split(/\s*,\s*/);return[r,a,$(t)]},p.ref=(e,n,t)=>{t[n]=e},p.ref.parse=e=>e,p.with=(e,n,t)=>{let r;return h(()=>{let a=n(t);g(e,r?a:r=N(a,t))})},p.html=(e,n,t)=>{let r=n(t);if(!r)return;let a=(r.content||r).cloneNode(!0);e.replaceChildren(a),g(e,t)},p.text=(e,n,t)=>(e.content&&e.replaceWith(e=j(e).childNodes[0]),h(()=>{let r=n(t);e.textContent=r??""})),p.class=(e,n,t)=>{let r=new Set;return h(()=>{let a=n(t),s=new Set;a&&(typeof a=="string"?a.split(" ").map(i=>s.add(i)):Array.isArray(a)?a.map(i=>i&&s.add(i)):Object.entries(a).map(([i,l])=>l&&s.add(i)));for(let i of r)s.has(i)?s.delete(i):e.classList.remove(i);for(let i of r=s)e.classList.add(i)})},p.style=(e,n,t)=>{let r=e.getAttribute("style");return h(()=>{let a=n(t);if(typeof a=="string")e.setAttribute("style",r+(r.endsWith(";")?"":"; ")+a);else{r&&e.setAttribute("style",r);for(let s in a)s[0]=="-"?e.style.setProperty(s,a[s]):e.style[s]=a[s]}})},p.default=(e,n,t,r)=>{if(!r.startsWith("on"))return h(()=>{let c=n(t);if(r)I(e,r,c);else for(let o in c)I(e,le(o),c[o])});const a=r.split("..").map(c=>{let o={evt:"",target:e,test:()=>!0};return o.evt=(c.startsWith("on")?c.slice(2):c).replace(/\.(\w+)?-?([-\w]+)?/g,(b,d,v="")=>(o.test=ie[d]?.(o,...v.split("-"))||o.test,"")),o});if(a.length==1)return h(()=>k(n(t),a[0]));let s,i,l,u=0;const y=c=>{l=k(o=>(l(),i=c?.(o),(u=++u%a.length)?y(i):s&&y(s)),a[u])};return h(()=>(s=n(t),!l&&y(s),()=>s=null));function k(c,{evt:o,target:b,test:d,defer:v,stop:O,prevent:w,immediate:M,...S}){v&&(c=v(c));const z=W=>{try{d(W)&&(O&&(M?W.stopImmediatePropagation():W.stopPropagation()),w&&W.preventDefault(),c?.(W))}catch(oe){J(oe,`:on${o}`,c)}};return b.addEventListener(o,z,S),()=>b.removeEventListener(o,z,S)}};var ie={prevent(e){e.prevent=!0},stop(e){e.stop=!0},immediate(e){e.immediate=!0},once(e){e.once=!0},passive(e){e.passive=!0},capture(e){e.capture=!0},window(e){e.target=window},document(e){e.target=document},throttle(e,n){e.defer=t=>se(t,n?Number(n)||0:108)},debounce(e,n){e.defer=t=>ae(t,n?Number(n)||0:108)},outside:e=>n=>{let t=e.target;return!(t.contains(n.target)||n.target.isConnected===!1||t.offsetWidth<1&&t.offsetHeight<1)},self:e=>n=>n.target===e.target,ctrl:(e,...n)=>t=>f.ctrl(t)&&n.every(r=>f[r]?f[r](t):t.key===r),shift:(e,...n)=>t=>f.shift(t)&&n.every(r=>f[r]?f[r](t):t.key===r),alt:(e,...n)=>t=>f.alt(t)&&n.every(r=>f[r]?f[r](t):t.key===r),meta:(e,...n)=>t=>f.meta(t)&&n.every(r=>f[r]?f[r](t):t.key===r),arrow:()=>f.arrow,enter:()=>f.enter,esc:()=>f.esc,tab:()=>f.tab,space:()=>f.space,delete:()=>f.delete,digit:()=>f.digit,letter:()=>f.letter,char:()=>f.char},f={ctrl:e=>e.ctrlKey||e.key==="Control"||e.key==="Ctrl",shift:e=>e.shiftKey||e.key==="Shift",alt:e=>e.altKey||e.key==="Alt",meta:e=>e.metaKey||e.key==="Meta"||e.key==="Command",arrow:e=>e.key.startsWith("Arrow"),enter:e=>e.key==="Enter",esc:e=>e.key.startsWith("Esc"),tab:e=>e.key==="Tab",space:e=>e.key==="\xA0"||e.key==="Space"||e.key===" ",delete:e=>e.key==="Delete"||e.key==="Backspace",digit:e=>/^\d$/.test(e.key),letter:e=>/^\p{L}$/gu.test(e.key),char:e=>/^\S$/.test(e.key)},I=(e,n,t)=>{t==null||t===!1?e.removeAttribute(n):e.setAttribute(n,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},se=(e,n)=>{let t,r,a=s=>{t=!0,setTimeout(()=>{if(t=!1,r)return r=!1,a(s),e(s)},n)};return s=>t?r=!0:(a(s),e(s))},ae=(e,n)=>{let t;return r=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(r)},n)}},le=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(n,t)=>(t?"-":"")+n.toLowerCase());p.value=(e,[n,t],r)=>{const a=e.type==="text"||e.type===""?i=>e.setAttribute("value",e.value=i??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(i,l,u)=>(l=e.selectionStart,u=e.selectionEnd,e.setAttribute("value",e.value=i??""),l&&e.setSelectionRange(l,u)):e.type==="checkbox"?i=>(e.checked=i,I(e,"checked",i)):e.type==="select-one"?i=>{for(let l in e.options)l.removeAttribute("selected");e.value=i,e.selectedOptions[0]?.setAttribute("selected","")}:i=>e.value=i,s=e.type==="checkbox"?i=>t(r,e.checked):i=>t(r,e.value);return e.addEventListener("input",s),e.addEventListener("change",s),h(()=>a(n(r)))},p.value.parse=e=>{let n=[$(e)];try{n.push($(`${e}=arguments[1];`))}catch{}return n},p.fx=(e,n,t)=>h(()=>n(t)),g.use(B),g.use({compile:e=>g.constructor(`with (arguments[0]) { return ${e} };`)});var Z=g;window.sprae=Z,document.currentScript?.hasAttribute("init")&&Z(document.documentElement)})();