sprae 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/sprae.auto.js CHANGED
@@ -45,6 +45,20 @@
45
45
  }
46
46
  }
47
47
  var o = void 0;
48
+ var h = 0;
49
+ function s(i2) {
50
+ if (h > 0)
51
+ return i2();
52
+ var t2 = o;
53
+ o = void 0;
54
+ h++;
55
+ try {
56
+ return i2();
57
+ } finally {
58
+ h--;
59
+ o = t2;
60
+ }
61
+ }
48
62
  var f = void 0;
49
63
  var v = 0;
50
64
  var e = 0;
@@ -381,6 +395,8 @@
381
395
  }
382
396
 
383
397
  // src/state.signals-proxy.js
398
+ var _dispose = Symbol.dispose ||= Symbol("dispose");
399
+ var _signals = Symbol("signals");
384
400
  var sandbox = {
385
401
  Array,
386
402
  Object,
@@ -407,47 +423,80 @@
407
423
  requestAnimationFrame
408
424
  };
409
425
  var isObject = (v2) => v2?.constructor === Object;
410
- var memo = /* @__PURE__ */ new WeakMap();
411
426
  var lastProp;
412
427
  function createState(values, parent) {
413
428
  if (!isObject(values) && !Array.isArray(values))
414
429
  return values;
415
- if (memo.has(values) && !parent)
430
+ if (values[_signals] && !parent)
416
431
  return values;
417
- const _len = Array.isArray(values) && a(values.length), signals = parent ? Object.create(memo.get(parent = createState(parent))) : Array.isArray(values) ? [] : {}, state = new Proxy(signals, {
432
+ const initSignals = values[_signals];
433
+ const _len = Array.isArray(values) && a((initSignals || values).length), signals = parent ? Object.create((parent = createState(parent))[_signals]) : Array.isArray(values) ? [] : {}, proto = signals.constructor.prototype;
434
+ const state = new Proxy(values, {
418
435
  has() {
419
436
  return true;
420
437
  },
421
- get(signals2, key) {
422
- let v2;
423
- if (_len && key === "length")
424
- v2 = Array.prototype[lastProp] ? _len.peek() : _len.value;
425
- else
426
- v2 = (signals2[key] || initSignal(key))?.valueOf();
438
+ get(values2, key) {
427
439
  if (_len)
428
- lastProp = key;
429
- return v2;
430
- },
431
- set(signals2, key, v2) {
432
- if (_len && key === "length")
433
- _len.value = signals2.length = v2;
434
- else {
435
- const s = signals2[key] || initSignal(key);
436
- if (!s)
437
- signals2[key] = a(createState(v2?.valueOf()));
438
- else if (s._set)
439
- s._set(v2);
440
+ if (key === "length")
441
+ return proto[lastProp] ? _len.peek() : _len.value;
440
442
  else
441
- s.value = createState(v2?.valueOf());
443
+ lastProp = key;
444
+ if (proto[key])
445
+ return proto[key];
446
+ if (key === _signals)
447
+ return signals;
448
+ const s2 = signals[key] || initSignal(key);
449
+ if (s2)
450
+ return s2.value;
451
+ if (parent)
452
+ return parent[key];
453
+ if (sandbox.hasOwnProperty(key))
454
+ return sandbox[key];
455
+ },
456
+ set(values2, key, v2) {
457
+ if (_len) {
458
+ if (key === "length") {
459
+ n(() => {
460
+ for (let i2 = v2, l2 = signals.length; i2 < l2; i2++)
461
+ delete state[i2];
462
+ for (let i2 = signals.length; i2 < v2; i2++)
463
+ state[i2] = null;
464
+ _len.value = signals.length = values2.length = v2;
465
+ });
466
+ return true;
467
+ }
442
468
  }
443
- if (_len)
444
- lastProp = null;
469
+ const s2 = signals[key] || initSignal(key, v2) || a();
470
+ const cur = s2.peek();
471
+ if (v2 === cur)
472
+ ;
473
+ else if (s2._set)
474
+ s2._set(v2);
475
+ else if (Array.isArray(v2) && Array.isArray(cur)) {
476
+ s(() => n(() => {
477
+ let i2 = 0, l2 = v2.length;
478
+ for (; i2 < l2; i2++)
479
+ cur[i2] = values2[key][i2] = v2[i2];
480
+ cur.length = l2;
481
+ s2.value = null, s2.value = cur;
482
+ }));
483
+ } else {
484
+ if (Array.isArray(cur))
485
+ cur.length = 0;
486
+ s2.value = createState(values2[key] = v2);
487
+ }
488
+ if (_len && key >= _len.peek())
489
+ _len.value = signals.length = values2.length = Number(key) + 1;
490
+ return true;
491
+ },
492
+ deleteProperty(values2, key) {
493
+ if (key in signals)
494
+ signals[key]._del?.(), delete signals[key], delete values2[key];
445
495
  return true;
446
496
  }
447
497
  });
448
- for (let key in values) {
449
- signals[key] = initSignal(key);
450
- }
498
+ for (let key in values)
499
+ values[key], signals[key] = initSignals?.[key] ?? null;
451
500
  function initSignal(key) {
452
501
  if (values.hasOwnProperty(key)) {
453
502
  const desc = Object.getOwnPropertyDescriptor(values, key);
@@ -457,103 +506,17 @@
457
506
  }
458
507
  return signals[key] = desc.value?.peek ? desc.value : a(createState(desc.value));
459
508
  }
460
- if (parent)
461
- return parent[key];
462
- if (sandbox.hasOwnProperty(key))
463
- return sandbox[key];
464
509
  }
465
- memo.set(state, signals);
466
510
  return state;
467
511
  }
468
512
 
469
- // src/domdiff.js
470
- function domdiff_default(parent, a2, b2, before) {
471
- const aIdx = /* @__PURE__ */ new Map();
472
- const bIdx = /* @__PURE__ */ new Map();
473
- let i2;
474
- let j;
475
- for (i2 = 0; i2 < a2.length; i2++) {
476
- aIdx.set(a2[i2], i2);
477
- }
478
- for (i2 = 0; i2 < b2.length; i2++) {
479
- bIdx.set(b2[i2], i2);
480
- }
481
- for (i2 = j = 0; i2 !== a2.length || j !== b2.length; ) {
482
- var aElm = a2[i2], bElm = b2[j];
483
- if (aElm === null) {
484
- i2++;
485
- } else if (b2.length <= j) {
486
- parent.removeChild(a2[i2]);
487
- i2++;
488
- } else if (a2.length <= i2) {
489
- parent.insertBefore(bElm, a2[i2] || before);
490
- j++;
491
- } else if (aElm === bElm) {
492
- i2++;
493
- j++;
494
- } else {
495
- var curElmInNew = bIdx.get(aElm);
496
- var wantedElmInOld = aIdx.get(bElm);
497
- if (curElmInNew === void 0) {
498
- parent.removeChild(a2[i2]);
499
- i2++;
500
- } else if (wantedElmInOld === void 0) {
501
- parent.insertBefore(
502
- bElm,
503
- a2[i2] || before
504
- );
505
- j++;
506
- } else {
507
- parent.insertBefore(
508
- a2[wantedElmInOld],
509
- a2[i2] || before
510
- );
511
- a2[wantedElmInOld] = null;
512
- if (wantedElmInOld > i2 + 1)
513
- i2++;
514
- j++;
515
- }
516
- }
517
- }
518
- return b2;
519
- }
520
-
521
513
  // src/util.js
522
514
  var queueMicrotask = Promise.prototype.then.bind(Promise.resolve());
523
- var refs = /* @__PURE__ */ new WeakMap();
524
- var set = (value) => {
525
- const ref = new WeakRef(value);
526
- refs.set(value, ref);
527
- return ref;
528
- };
529
- var get = (value) => refs.get(value) || set(value);
530
- var WeakishMap = class extends Map {
531
- #registry = new FinalizationRegistry((key) => super.delete(key));
532
- get size() {
533
- return [...this].length;
534
- }
535
- constructor(entries = []) {
536
- super();
537
- for (const [key, value] of entries)
538
- this.set(key, value);
539
- }
540
- get(key) {
541
- return super.get(key)?.deref();
542
- }
543
- set(key, value) {
544
- let ref = super.get(key);
545
- if (ref)
546
- this.#registry.unregister(ref);
547
- ref = get(value);
548
- this.#registry.register(value, key, ref);
549
- return super.set(key, ref);
550
- }
551
- };
552
515
 
553
516
  // src/directives.js
554
517
  var primary = {};
555
518
  var secondary = {};
556
- primary["if"] = (el, expr) => {
519
+ primary["if"] = (el, expr, state) => {
557
520
  let holder = document.createTextNode(""), clauses = [parseExpr(el, expr, ":if")], els = [el], cur = el;
558
521
  while (cur = el.nextElementSibling) {
559
522
  if (cur.hasAttribute(":else")) {
@@ -571,70 +534,92 @@
571
534
  break;
572
535
  }
573
536
  el.replaceWith(cur = holder);
574
- return (state) => {
537
+ const dispose = O(() => {
575
538
  let i2 = clauses.findIndex((f2) => f2(state));
576
539
  if (els[i2] != cur) {
577
540
  ;
578
541
  (cur[_each] || cur).replaceWith(cur = els[i2] || holder);
579
542
  sprae(cur, state);
580
543
  }
544
+ });
545
+ return () => {
546
+ for (const el2 of els)
547
+ el2[_dispose]?.();
548
+ dispose();
581
549
  };
582
550
  };
583
551
  var _each = Symbol(":each");
584
- primary["each"] = (tpl, expr) => {
552
+ primary["each"] = (tpl, expr, state) => {
585
553
  let each = parseForExpression(expr);
586
554
  if (!each)
587
555
  return exprError(new Error(), tpl, expr, ":each");
556
+ const [itemVar, idxVar, itemsExpr] = each;
588
557
  const holder = tpl[_each] = document.createTextNode("");
589
558
  tpl.replaceWith(holder);
590
- const evaluate = parseExpr(tpl, each[2], ":each");
591
- const keyExpr = tpl.getAttribute(":key");
592
- const itemKey = keyExpr ? parseExpr(null, keyExpr, ":each") : null;
593
- tpl.removeAttribute(":key");
594
- const refExpr = tpl.getAttribute(":ref");
595
- const scopes = new WeakishMap();
596
- const itemEls = new WeakishMap();
597
- let curEls = [];
598
- return (state) => {
599
- let list = evaluate(state);
600
- if (!list)
601
- list = [];
602
- else if (typeof list === "number")
603
- list = Array.from({ length: list }, (_2, i2) => [i2 + 1, i2]);
604
- else if (Array.isArray(list))
605
- list = list.map((item, i2) => [i2 + 1, item]);
606
- else if (typeof list === "object")
607
- list = Object.entries(list);
608
- else
609
- exprError(Error("Bad list value"), tpl, expr, ":each", list);
610
- let newEls = [], elScopes = [];
611
- for (let [idx, item] of list) {
612
- let el, scope, key = itemKey?.({ [each[0]]: item, [each[1]]: idx });
613
- if (key == null)
614
- el = tpl.cloneNode(true);
615
- else
616
- (el = itemEls.get(key)) || itemEls.set(key, el = tpl.cloneNode(true));
617
- newEls.push(el);
618
- if (key == null || !(scope = scopes.get(key))) {
619
- scope = createState({ [each[0]]: item, [refExpr || ""]: null, [each[1]]: idx }, state);
620
- if (key != null)
621
- scopes.set(key, scope);
622
- } else
623
- scope[each[0]] = item;
624
- elScopes.push(scope);
625
- }
626
- domdiff_default(holder.parentNode, curEls, newEls, holder);
627
- curEls = newEls;
628
- for (let i2 = 0; i2 < newEls.length; i2++) {
629
- sprae(newEls[i2], elScopes[i2]);
559
+ const evaluate = parseExpr(tpl, itemsExpr, ":each");
560
+ let items, prevl = 0, keys2;
561
+ O(() => {
562
+ let newItems = evaluate(state);
563
+ if (!newItems)
564
+ newItems = [];
565
+ else if (typeof newItems === "number") {
566
+ newItems = Array.from({ length: newItems }, (_2, i2) => i2);
567
+ } else if (Array.isArray(newItems))
568
+ ;
569
+ else if (typeof newItems === "object") {
570
+ keys2 = Object.keys(newItems);
571
+ newItems = Object.values(newItems);
572
+ } else {
573
+ exprError(Error("Bad items value"), tpl, expr, ":each", newItems);
630
574
  }
631
- };
575
+ s(() => n(() => {
576
+ if (!items?.[_signals][0]?.peek) {
577
+ for (let i2 = 0, signals = items?.[_signals]; i2 < prevl; i2++)
578
+ signals[i2]?._del();
579
+ items = newItems, items[_signals] ||= {};
580
+ } else {
581
+ let newl = newItems.length, i2 = 0;
582
+ for (; i2 < newl; i2++)
583
+ items[i2] = newItems[i2];
584
+ items.length = newl;
585
+ }
586
+ }));
587
+ return O(() => {
588
+ let newl = newItems.length;
589
+ if (prevl !== newl)
590
+ s(() => n(() => {
591
+ const signals = items[_signals];
592
+ for (let i2 = prevl; i2 < newl; i2++) {
593
+ items[i2];
594
+ const el = tpl.cloneNode(true), scope = createState({
595
+ [itemVar]: signals[i2] ?? items[i2],
596
+ [idxVar]: keys2?.[i2] ?? i2
597
+ }, state);
598
+ holder.before(el);
599
+ sprae(el, scope);
600
+ const { _del } = signals[i2] ||= {};
601
+ signals[i2]._del = () => {
602
+ delete signals[i2];
603
+ _del?.();
604
+ el[_dispose](), el.remove(), delete items[i2];
605
+ };
606
+ }
607
+ prevl = newl;
608
+ }));
609
+ });
610
+ });
611
+ return () => n(() => {
612
+ for (let _i of items[_signals])
613
+ _i?._del();
614
+ items.length = 0;
615
+ });
632
616
  };
633
617
  primary["with"] = (el, expr, rootState) => {
634
618
  let evaluate = parseExpr(el, expr, ":with");
635
619
  const localState = evaluate(rootState);
636
620
  let state = createState(localState, rootState);
637
621
  sprae(el, state);
622
+ return el[_dispose];
638
623
  };
639
624
  primary["ref"] = (el, expr, state) => {
640
625
  state[expr] = el;
@@ -664,16 +649,17 @@
664
649
  let content = tpl.content.cloneNode(true);
665
650
  el.replaceChildren(content);
666
651
  sprae(el, state);
652
+ return el[_dispose];
667
653
  };
668
- secondary["id"] = (el, expr) => {
654
+ secondary["id"] = (el, expr, state) => {
669
655
  let evaluate = parseExpr(el, expr, ":id");
670
656
  const update = (v2) => el.id = v2 || v2 === 0 ? v2 : "";
671
- return (state) => update(evaluate(state));
657
+ return O(() => update(evaluate(state)));
672
658
  };
673
- secondary["class"] = (el, expr) => {
659
+ secondary["class"] = (el, expr, state) => {
674
660
  let evaluate = parseExpr(el, expr, ":class");
675
661
  let initClassName = el.getAttribute("class");
676
- return (state) => {
662
+ return O(() => {
677
663
  let v2 = evaluate(state);
678
664
  let className = [initClassName];
679
665
  if (v2) {
@@ -688,41 +674,44 @@
688
674
  el.setAttribute("class", className);
689
675
  else
690
676
  el.removeAttribute("class");
691
- };
677
+ });
692
678
  };
693
- secondary["style"] = (el, expr) => {
679
+ secondary["style"] = (el, expr, state) => {
694
680
  let evaluate = parseExpr(el, expr, ":style");
695
681
  let initStyle = el.getAttribute("style") || "";
696
682
  if (!initStyle.endsWith(";"))
697
683
  initStyle += "; ";
698
- return (state) => {
684
+ return O(() => {
699
685
  let v2 = evaluate(state);
700
686
  if (typeof v2 === "string")
701
687
  el.setAttribute("style", initStyle + v2);
702
688
  else {
703
- el.setAttribute("style", initStyle);
704
- for (let k in v2)
705
- el.style.setProperty(k, v2[k]);
689
+ s(() => {
690
+ el.setAttribute("style", initStyle);
691
+ for (let k in v2)
692
+ if (typeof v2[k] !== "symbol")
693
+ el.style.setProperty(k, v2[k]);
694
+ });
706
695
  }
707
- };
696
+ });
708
697
  };
709
- secondary["text"] = (el, expr) => {
698
+ secondary["text"] = (el, expr, state) => {
710
699
  let evaluate = parseExpr(el, expr, ":text");
711
- return (state) => {
700
+ return O(() => {
712
701
  let value = evaluate(state);
713
702
  el.textContent = value == null ? "" : value;
714
- };
703
+ });
715
704
  };
716
- secondary[""] = (el, expr) => {
705
+ secondary[""] = (el, expr, state) => {
717
706
  let evaluate = parseExpr(el, expr, ":");
718
707
  if (evaluate)
719
- return (state) => {
708
+ return O(() => {
720
709
  let value = evaluate(state);
721
710
  for (let key in value)
722
711
  attr(el, dashcase(key), value[key]);
723
- };
712
+ });
724
713
  };
725
- secondary["value"] = (el, expr) => {
714
+ secondary["value"] = (el, expr, state) => {
726
715
  let evaluate = parseExpr(el, expr, ":value");
727
716
  let from, to;
728
717
  let 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 = el.selectionStart, to = el.selectionEnd, el.setAttribute("value", el.value = value == null ? "" : value), from && el.setSelectionRange(from, to)) : el.type === "checkbox" ? (value) => (el.value = value ? "on" : "", attr(el, "checked", value)) : el.type === "select-one" ? (value) => {
@@ -731,20 +720,28 @@
731
720
  el.value = value;
732
721
  el.selectedOptions[0]?.setAttribute("selected", "");
733
722
  } : (value) => el.value = value;
734
- return (state) => update(evaluate(state));
723
+ return O(() => {
724
+ update(evaluate(state));
725
+ });
735
726
  };
736
727
  var directives_default = (el, expr, state, name) => {
737
728
  let evt = name.startsWith("on") && name.slice(2);
738
729
  let evaluate = parseExpr(el, expr, ":" + name);
739
730
  if (!evaluate)
740
731
  return;
741
- if (evt)
742
- return (state2) => {
743
- let value = evaluate(state2) || (() => {
744
- });
745
- return on(el, evt, value);
746
- };
747
- return (state2) => attr(el, name, evaluate(state2));
732
+ if (evt) {
733
+ let off, dispose = O(() => {
734
+ if (off)
735
+ off(), off = null;
736
+ let value = evaluate(state);
737
+ if (value)
738
+ off = on(el, evt, value);
739
+ });
740
+ return () => (off?.(), dispose());
741
+ }
742
+ return O(() => {
743
+ attr(el, name, evaluate(state));
744
+ });
748
745
  };
749
746
  var on = (el, e2, fn) => {
750
747
  if (!fn)
@@ -868,7 +865,7 @@
868
865
  let evaluate = evaluatorMemo[expression];
869
866
  if (!evaluate) {
870
867
  try {
871
- evaluate = evaluatorMemo[expression] = new Function(`__scope`, `with (__scope) { return ${expression.trim()} };`);
868
+ evaluate = evaluatorMemo[expression] = new Function(`__scope`, `with (__scope) { let __; return ${expression.trim()} };`);
872
869
  } catch (e2) {
873
870
  return exprError(e2, el, expression, dir);
874
871
  }
@@ -900,22 +897,22 @@ ${directive}=${expression ? `"${expression}"
900
897
 
901
898
  // src/core.js
902
899
  sprae.globals = sandbox;
903
- var memo2 = /* @__PURE__ */ new WeakMap();
900
+ var memo = /* @__PURE__ */ new WeakMap();
904
901
  function sprae(container, values) {
905
902
  if (!container.children)
906
903
  return;
907
- if (memo2.has(container))
908
- return n(() => Object.assign(memo2.get(container), values));
904
+ if (memo.has(container))
905
+ return n(() => Object.assign(memo.get(container), values));
909
906
  const state = createState(values || {});
910
- const updates = [];
907
+ const disposes = [];
911
908
  const init = (el, parent = el.parentNode) => {
912
909
  for (let name in primary) {
913
910
  let attrName = ":" + name;
914
911
  if (el.hasAttribute?.(attrName)) {
915
912
  let expr = el.getAttribute(attrName);
916
913
  el.removeAttribute(attrName);
917
- updates.push(primary[name](el, expr, state, name));
918
- if (memo2.has(el))
914
+ disposes.push(primary[name](el, expr, state, name));
915
+ if (memo.has(el))
919
916
  return;
920
917
  if (el.parentNode !== parent)
921
918
  return false;
@@ -931,7 +928,7 @@ ${directive}=${expression ? `"${expression}"
931
928
  if (prefix === "@")
932
929
  name = `on` + name;
933
930
  let dir = secondary[name] || directives_default;
934
- updates.push(dir(el, expr, state, name));
931
+ disposes.push(dir(el, expr, state, name));
935
932
  }
936
933
  } else
937
934
  i2++;
@@ -943,16 +940,17 @@ ${directive}=${expression ? `"${expression}"
943
940
  }
944
941
  };
945
942
  init(container);
946
- for (let update of updates)
947
- if (update) {
948
- let teardown;
949
- O(() => {
950
- if (typeof teardown === "function")
951
- teardown();
952
- teardown = update(state);
953
- });
954
- }
955
- memo2.set(container, state);
943
+ if (memo.has(container))
944
+ return state;
945
+ memo.set(container, state);
946
+ if (disposes.length)
947
+ Object.defineProperty(container, _dispose, {
948
+ value: () => {
949
+ while (disposes.length)
950
+ disposes.shift()?.();
951
+ memo.delete(container);
952
+ }
953
+ });
956
954
  return state;
957
955
  }
958
956
 
package/sprae.auto.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{function t(){throw new Error("Cycle detected")}var e=Symbol.for("preact-signals");function r(){if(o>1)o--;else{for(var t,e=!1;void 0!==n;){var r=n;for(n=void 0,s++;void 0!==r;){var i=r.o;if(r.o=void 0,r.f&=-3,!(8&r.f)&&c(r))try{r.c()}catch(r){e||(t=r,e=!0)}r=i}}if(s=0,o--,e)throw t}}var i=void 0,n=void 0,o=0,s=0,a=0;function l(t){if(void 0!==i){var e=t.n;if(void 0===e||e.t!==i)return e={i:0,S:t,p:i.s,n:void 0,t:i,e:void 0,x:void 0,r:e},void 0!==i.s&&(i.s.n=e),i.s=e,t.n=e,32&i.f&&t.S(e),e;if(-1===e.i)return e.i=0,void 0!==e.n&&(e.n.p=e.p,void 0!==e.p&&(e.p.n=e.n),e.p=i.s,e.n=void 0,i.s.n=e,i.s=e),e}}function u(t){this.v=t,this.i=0,this.n=void 0,this.t=void 0}function f(t){return new u(t)}function c(t){for(var e=t.s;void 0!==e;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}function h(t){for(var e=t.s;void 0!==e;e=e.n){var r=e.S.n;if(void 0!==r&&(e.r=r),e.S.n=e,e.i=-1,void 0===e.n){t.s=e;break}}}function v(t){for(var e=t.s,r=void 0;void 0!==e;){var i=e.p;-1===e.i?(e.S.U(e),void 0!==i&&(i.n=e.n),void 0!==e.n&&(e.n.p=i)):r=e,e.S.n=e.r,void 0!==e.r&&(e.r=void 0),e=i}t.s=r}function p(t){u.call(this,void 0),this.x=t,this.s=void 0,this.g=a-1,this.f=4}function d(t){var e=t.u;if(t.u=void 0,"function"==typeof e){o++;var n=i;i=void 0;try{e()}catch(e){throw t.f&=-2,t.f|=8,y(t),e}finally{i=n,r()}}}function y(t){for(var e=t.s;void 0!==e;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,d(t)}function g(t){if(i!==this)throw new Error("Out-of-order effect");v(this),i=t,this.f&=-2,8&this.f&&y(this),r()}function m(t){this.x=t,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32}function b(t){var e=new m(t);try{e.c()}catch(t){throw e.d(),t}return e.d.bind(e)}u.prototype.brand=e,u.prototype.h=function(){return!0},u.prototype.S=function(t){this.t!==t&&void 0===t.e&&(t.x=this.t,void 0!==this.t&&(this.t.e=t),this.t=t)},u.prototype.U=function(t){if(void 0!==this.t){var e=t.e,r=t.x;void 0!==e&&(e.x=r,t.e=void 0),void 0!==r&&(r.e=e,t.x=void 0),t===this.t&&(this.t=r)}},u.prototype.subscribe=function(t){var e=this;return b((function(){var r=e.value,i=32&this.f;this.f&=-33;try{t(r)}finally{this.f|=i}}))},u.prototype.valueOf=function(){return this.value},u.prototype.toString=function(){return this.value+""},u.prototype.toJSON=function(){return this.value},u.prototype.peek=function(){return this.v},Object.defineProperty(u.prototype,"value",{get:function(){var t=l(this);return void 0!==t&&(t.i=this.i),this.v},set:function(e){if(i instanceof p&&function(){throw new Error("Computed cannot have side-effects")}(),e!==this.v){s>100&&t(),this.v=e,this.i++,a++,o++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{r()}}}}),(p.prototype=new u).h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===a)return!0;if(this.g=a,this.f|=1,this.i>0&&!c(this))return this.f&=-2,!0;var t=i;try{h(this),i=this;var e=this.x();(16&this.f||this.v!==e||0===this.i)&&(this.v=e,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return i=t,v(this),this.f&=-2,!0},p.prototype.S=function(t){if(void 0===this.t){this.f|=36;for(var e=this.s;void 0!==e;e=e.n)e.S.S(e)}u.prototype.S.call(this,t)},p.prototype.U=function(t){if(void 0!==this.t&&(u.prototype.U.call(this,t),void 0===this.t)){this.f&=-33;for(var e=this.s;void 0!==e;e=e.n)e.S.U(e)}},p.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var t=this.t;void 0!==t;t=t.x)t.t.N()}},p.prototype.peek=function(){if(this.h()||t(),16&this.f)throw this.v;return this.v},Object.defineProperty(p.prototype,"value",{get:function(){1&this.f&&t();var e=l(this);if(this.h(),void 0!==e&&(e.i=this.i),16&this.f)throw this.v;return this.v}}),m.prototype.c=function(){var t=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var e=this.x();"function"==typeof e&&(this.u=e)}finally{t()}},m.prototype.S=function(){1&this.f&&t(),this.f|=1,this.f&=-9,d(this),h(this),o++;var e=i;return i=this,g.bind(this,e)},m.prototype.N=function(){2&this.f||(this.f|=2,this.o=n,n=this)},m.prototype.d=function(){this.f|=8,1&this.f||y(this)};var w,A={Array:Array,Object:Object,Number:Number,String:String,Boolean:Boolean,Date:Date,console:console,window:window,document:document,history:history,navigator:navigator,location:location,screen:screen,localStorage:localStorage,sessionStorage:sessionStorage,alert:alert,prompt:prompt,confirm:confirm,fetch:fetch,performance:performance,setTimeout:setTimeout,setInterval:setInterval,requestAnimationFrame:requestAnimationFrame},k=new WeakMap;function S(t,e){if(t?.constructor!==Object&&!Array.isArray(t))return t;if(k.has(t)&&!e)return t;const r=Array.isArray(t)&&f(t.length),i=e?Object.create(k.get(e=S(e))):Array.isArray(t)?[]:{},n=new Proxy(i,{has:()=>!0,get(t,e){let i;return i=r&&"length"===e?Array.prototype[w]?r.peek():r.value:(t[e]||o(e))?.valueOf(),r&&(w=e),i},set(t,e,i){if(r&&"length"===e)r.value=t.length=i;else{const r=t[e]||o(e);r?r._set?r._set(i):r.value=S(i?.valueOf()):t[e]=f(S(i?.valueOf()))}return r&&(w=null),!0}});for(let e in t)i[e]=o(e);function o(r){if(t.hasOwnProperty(r)){const e=Object.getOwnPropertyDescriptor(t,r);return e?.get?((i[r]=(o=e.get.bind(n),new p(o)))._set=e.set?.bind(n),i[r]):i[r]=e.value?.peek?e.value:f(S(e.value))}var o;return e?e[r]:A.hasOwnProperty(r)?A[r]:void 0}return k.set(n,i),n}var x=Promise.prototype.then.bind(Promise.resolve()),O=new WeakMap,N=class extends Map{#t=new FinalizationRegistry((t=>super.delete(t)));get size(){return[...this].length}constructor(t=[]){super();for(const[e,r]of t)this.set(e,r)}get(t){return super.get(t)?.deref()}set(t,e){let r=super.get(t);return r&&this.#t.unregister(r),r=(t=>O.get(t)||(t=>{const e=new WeakRef(t);return O.set(t,e),e})(t))(e),this.#t.register(e,t,r),super.set(t,r)}},E={},j={};E.if=(t,e)=>{let r=document.createTextNode(""),i=[U(t,e,":if")],n=[t],o=t;for(;(o=t.nextElementSibling)&&o.hasAttribute(":else");)o.removeAttribute(":else"),(e=o.getAttribute(":if"))?(o.removeAttribute(":if"),o.remove(),n.push(o),i.push(U(t,e,":else :if"))):(o.remove(),n.push(o),i.push((()=>1)));return t.replaceWith(o=r),t=>{let e=i.findIndex((e=>e(t)));n[e]!=o&&((o[W]||o).replaceWith(o=n[e]||r),R(o,t))}};var W=Symbol(":each");E.each=(t,e)=>{let r=function(t){let e=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,r=t.match(/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/);if(!r)return;let i=r[2].trim(),n=r[1].replace(/^\s*\(|\)\s*$/g,"").trim(),o=n.match(e);return o?[n.replace(e,"").trim(),o[1].trim(),i]:[n,"",i]}(e);if(!r)return F(new Error,t,e,":each");const i=t[W]=document.createTextNode("");t.replaceWith(i);const n=U(t,r[2],":each"),o=t.getAttribute(":key"),s=o?U(null,o,":each"):null;t.removeAttribute(":key");const a=t.getAttribute(":ref"),l=new N,u=new N;let f=[];return o=>{let c=n(o);c?"number"==typeof c?c=Array.from({length:c},((t,e)=>[e+1,e])):Array.isArray(c)?c=c.map(((t,e)=>[e+1,t])):"object"==typeof c?c=Object.entries(c):F(Error("Bad list value"),t,e,":each"):c=[];let h=[],v=[];for(let[e,i]of c){let n,f,c=s?.({[r[0]]:i,[r[1]]:e});null==c?n=t.cloneNode(!0):(n=u.get(c))||u.set(c,n=t.cloneNode(!0)),h.push(n),null!=c&&(f=l.get(c))?f[r[0]]=i:(f=S({[r[0]]:i,[a||""]:null,[r[1]]:e},o),null!=c&&l.set(c,f)),v.push(f)}!function(t,e,r,i){const n=new Map,o=new Map;let s,a;for(s=0;s<e.length;s++)n.set(e[s],s);for(s=0;s<r.length;s++)o.set(r[s],s);for(s=a=0;s!==e.length||a!==r.length;){var l=e[s],u=r[a];if(null===l)s++;else if(r.length<=a)t.removeChild(e[s]),s++;else if(e.length<=s)t.insertBefore(u,e[s]||i),a++;else if(l===u)s++,a++;else{var f=o.get(l),c=n.get(u);void 0===f?(t.removeChild(e[s]),s++):void 0===c?(t.insertBefore(u,e[s]||i),a++):(t.insertBefore(e[c],e[s]||i),e[c]=null,c>s+1&&s++,a++)}}}(i.parentNode,f,h,i),f=h;for(let t=0;t<h.length;t++)R(h[t],v[t])}},E.with=(t,e,r)=>{R(t,S(U(t,e,":with")(r),r))},E.ref=(t,e,r)=>{r[e]=t},j.render=(t,e,r)=>{let i=U(t,e,":render")(r);i||F(new Error("Template not found"),t,e,":render");let n=i.content.cloneNode(!0);t.replaceChildren(n),R(t,r)},j.id=(t,e)=>{let r=U(t,e,":id");return e=>{return i=r(e),t.id=i||0===i?i:"";var i}},j.class=(t,e)=>{let r=U(t,e,":class"),i=t.getAttribute("class");return e=>{let n=r(e),o=[i];n&&("string"==typeof n?o.push(n):Array.isArray(n)?o.push(...n):o.push(...Object.entries(n).map((([t,e])=>e?t:"")))),(o=o.filter(Boolean).join(" "))?t.setAttribute("class",o):t.removeAttribute("class")}},j.style=(t,e)=>{let r=U(t,e,":style"),i=t.getAttribute("style")||"";return i.endsWith(";")||(i+="; "),e=>{let n=r(e);if("string"==typeof n)t.setAttribute("style",i+n);else{t.setAttribute("style",i);for(let e in n)t.style.setProperty(e,n[e])}}},j.text=(t,e)=>{let r=U(t,e,":text");return e=>{let i=r(e);t.textContent=null==i?"":i}},j[""]=(t,e)=>{let r=U(t,e,":");if(r)return e=>{let i=r(e);for(let e in i)M(t,e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(t=>"-"+t.toLowerCase())),i[e])}},j.value=(t,e)=>{let r,i,n=U(t,e,":value"),o="text"===t.type||""===t.type?e=>t.setAttribute("value",t.value=null==e?"":e):"TEXTAREA"===t.tagName||"text"===t.type||""===t.type?e=>(r=t.selectionStart,i=t.selectionEnd,t.setAttribute("value",t.value=null==e?"":e),r&&t.setSelectionRange(r,i)):"checkbox"===t.type?e=>(t.value=e?"on":"",M(t,"checked",e)):"select-one"===t.type?e=>{for(let e in t.options)e.removeAttribute("selected");t.value=e,t.selectedOptions[0]?.setAttribute("selected","")}:e=>t.value=e;return t=>o(n(t))};var C=(t,e,r,i)=>{let n=i.startsWith("on")&&i.slice(2),o=U(t,e,":"+i);if(o)return n?e=>{let r=o(e)||(()=>{});return $(t,n,r)}:e=>M(t,i,o(e))},$=(t,e,r)=>{if(!r)return;const i={evt:"",target:t,test:()=>!0};i.evt=(e.startsWith("on")?e.slice(2):e).replace(/\.(\w+)?-?([-\w]+)?/g,((t,e,r="")=>(i.test=T[e]?.(i,...r.split("-"))||i.test,"")));const{evt:n,target:o,test:s,defer:a,stop:l,prevent:u,...f}=i;a&&(r=a(r));const c=t=>s(t)&&(l&&t.stopPropagation(),u&&t.preventDefault(),r.call(o,t));return o.addEventListener(n,c,f),()=>o.removeEventListener(n,c,f)},T={prevent(t){t.prevent=!0},stop(t){t.stop=!0},once(t){t.once=!0},passive(t){t.passive=!0},capture(t){t.capture=!0},window(t){t.target=window},document(t){t.target=document},throttle(t,e){t.defer=t=>B(t,e?Number(e)||0:108)},debounce(t,e){t.defer=t=>D(t,e?Number(e)||0:108)},outside:t=>e=>{let r=t.target;return!(r.contains(e.target)||!1===e.target.isConnected||r.offsetWidth<1&&r.offsetHeight<1)},self:t=>e=>e.target===t.target,ctrl:(t,...e)=>t=>P.ctrl(t)&&e.every((e=>P[e]?P[e](t):t.key===e)),shift:(t,...e)=>t=>P.shift(t)&&e.every((e=>P[e]?P[e](t):t.key===e)),alt:(t,...e)=>t=>P.alt(t)&&e.every((e=>P[e]?P[e](t):t.key===e)),meta:(t,...e)=>t=>P.meta(t)&&e.every((e=>P[e]?P[e](t):t.key===e)),arrow:t=>P.arrow,enter:t=>P.enter,escape:t=>P.escape,tab:t=>P.tab,space:t=>P.space,backspace:t=>P.backspace,delete:t=>P.delete,digit:t=>P.digit,letter:t=>P.letter,character:t=>P.character},P={ctrl:t=>t.ctrlKey||"Control"===t.key||"Ctrl"===t.key,shift:t=>t.shiftKey||"Shift"===t.key,alt:t=>t.altKey||"Alt"===t.key,meta:t=>t.metaKey||"Meta"===t.key||"Command"===t.key,arrow:t=>t.key.startsWith("Arrow"),enter:t=>"Enter"===t.key,escape:t=>t.key.startsWith("Esc"),tab:t=>"Tab"===t.key,space:t=>" "===t.key||"Space"===t.key||" "===t.key,backspace:t=>"Backspace"===t.key,delete:t=>"Delete"===t.key,digit:t=>/^\d$/.test(t.key),letter:t=>/^[a-zA-Z]$/.test(t.key),character:t=>/^\S$/.test(t.key)},B=(t,e)=>{let r,i,n=o=>{r=!0,setTimeout((()=>{if(r=!1,i)return i=!1,n(o),t(o)}),e)};return e=>r?i=!0:(n(e),t(e))},D=(t,e)=>{let r;return i=>{clearTimeout(r),r=setTimeout((()=>{r=null,t(i)}),e)}},M=(t,e,r)=>{null==r||!1===r?t.removeAttribute(e):t.setAttribute(e,!0===r?"":"number"==typeof r||"string"==typeof r?r:"")},_={};function U(t,e,r){let i=_[e];if(!i)try{i=_[e]=new Function("__scope",`with (__scope) { return ${e.trim()} };`)}catch(i){return F(i,t,e,r)}return n=>{let o;try{o=i.call(t,n)}catch(i){return F(i,t,e,r)}return o}}function F(t,e,r,i){Object.assign(t,{element:e,expression:r}),console.warn(`∴ ${t.message}\n\n${i}=${r?`"${r}"\n\n`:""}`,e),x((()=>{throw t}),0)}R.globals=A;var K=new WeakMap;function R(t,e){if(!t.children)return;if(K.has(t))return function(t){if(o>0)return t();o++;try{return t()}finally{r()}}((()=>Object.assign(K.get(t),e)));const i=S(e||{}),n=[],s=(t,e=t.parentNode)=>{for(let r in E){let o=":"+r;if(t.hasAttribute?.(o)){let s=t.getAttribute(o);if(t.removeAttribute(o),n.push(E[r](t,s,i,r)),K.has(t))return;if(t.parentNode!==e)return!1}}if(t.attributes)for(let e=0;e<t.attributes.length;){let r=t.attributes[e],o=r.name[0];if(":"===o||"@"===o){t.removeAttribute(r.name);let e="@"===o?`${r.value.includes("await")?"async":""} event=>{${r.value}}`:r.value,s=r.name.slice(1).split(o);for(let r of s){"@"===o&&(r="on"+r);let s=j[r]||C;n.push(s(t,e,i,r))}}else e++}for(let e,r=0;e=t.children[r];r++)!1===s(e,t)&&r--};s(t);for(let t of n)if(t){let e;b((()=>{"function"==typeof e&&e(),e=t(i)}))}return K.set(t,i),i}document.currentScript&&R(document.documentElement)})();
1
+ (()=>{function t(){throw new Error("Cycle detected")}var e=Symbol.for("preact-signals");function r(){if(l>1)l--;else{for(var t,e=!1;void 0!==a;){var r=a;for(a=void 0,u++;void 0!==r;){var i=r.o;if(r.o=void 0,r.f&=-3,!(8&r.f)&&p(r))try{r.c()}catch(r){e||(t=r,e=!0)}r=i}}if(u=0,l--,e)throw t}}function i(t){if(l>0)return t();l++;try{return t()}finally{r()}}var n=void 0,o=0;function s(t){if(o>0)return t();var e=n;n=void 0,o++;try{return t()}finally{o--,n=e}}var a=void 0,l=0,u=0,f=0;function c(t){if(void 0!==n){var e=t.n;if(void 0===e||e.t!==n)return e={i:0,S:t,p:n.s,n:void 0,t:n,e:void 0,x:void 0,r:e},void 0!==n.s&&(n.s.n=e),n.s=e,t.n=e,32&n.f&&t.S(e),e;if(-1===e.i)return e.i=0,void 0!==e.n&&(e.n.p=e.p,void 0!==e.p&&(e.p.n=e.n),e.p=n.s,e.n=void 0,n.s.n=e,n.s=e),e}}function h(t){this.v=t,this.i=0,this.n=void 0,this.t=void 0}function v(t){return new h(t)}function p(t){for(var e=t.s;void 0!==e;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}function d(t){for(var e=t.s;void 0!==e;e=e.n){var r=e.S.n;if(void 0!==r&&(e.r=r),e.S.n=e,e.i=-1,void 0===e.n){t.s=e;break}}}function y(t){for(var e=t.s,r=void 0;void 0!==e;){var i=e.p;-1===e.i?(e.S.U(e),void 0!==i&&(i.n=e.n),void 0!==e.n&&(e.n.p=i)):r=e,e.S.n=e.r,void 0!==e.r&&(e.r=void 0),e=i}t.s=r}function m(t){h.call(this,void 0),this.x=t,this.s=void 0,this.g=f-1,this.f=4}function g(t){var e=t.u;if(t.u=void 0,"function"==typeof e){l++;var i=n;n=void 0;try{e()}catch(e){throw t.f&=-2,t.f|=8,b(t),e}finally{n=i,r()}}}function b(t){for(var e=t.s;void 0!==e;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,g(t)}function A(t){if(n!==this)throw new Error("Out-of-order effect");y(this),n=t,this.f&=-2,8&this.f&&b(this),r()}function w(t){this.x=t,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32}function S(t){var e=new w(t);try{e.c()}catch(t){throw e.d(),t}return e.d.bind(e)}h.prototype.brand=e,h.prototype.h=function(){return!0},h.prototype.S=function(t){this.t!==t&&void 0===t.e&&(t.x=this.t,void 0!==this.t&&(this.t.e=t),this.t=t)},h.prototype.U=function(t){if(void 0!==this.t){var e=t.e,r=t.x;void 0!==e&&(e.x=r,t.e=void 0),void 0!==r&&(r.e=e,t.x=void 0),t===this.t&&(this.t=r)}},h.prototype.subscribe=function(t){var e=this;return S((function(){var r=e.value,i=32&this.f;this.f&=-33;try{t(r)}finally{this.f|=i}}))},h.prototype.valueOf=function(){return this.value},h.prototype.toString=function(){return this.value+""},h.prototype.toJSON=function(){return this.value},h.prototype.peek=function(){return this.v},Object.defineProperty(h.prototype,"value",{get:function(){var t=c(this);return void 0!==t&&(t.i=this.i),this.v},set:function(e){if(n instanceof m&&function(){throw new Error("Computed cannot have side-effects")}(),e!==this.v){u>100&&t(),this.v=e,this.i++,f++,l++;try{for(var i=this.t;void 0!==i;i=i.x)i.t.N()}finally{r()}}}}),(m.prototype=new h).h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===f)return!0;if(this.g=f,this.f|=1,this.i>0&&!p(this))return this.f&=-2,!0;var t=n;try{d(this),n=this;var e=this.x();(16&this.f||this.v!==e||0===this.i)&&(this.v=e,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return n=t,y(this),this.f&=-2,!0},m.prototype.S=function(t){if(void 0===this.t){this.f|=36;for(var e=this.s;void 0!==e;e=e.n)e.S.S(e)}h.prototype.S.call(this,t)},m.prototype.U=function(t){if(void 0!==this.t&&(h.prototype.U.call(this,t),void 0===this.t)){this.f&=-33;for(var e=this.s;void 0!==e;e=e.n)e.S.U(e)}},m.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var t=this.t;void 0!==t;t=t.x)t.t.N()}},m.prototype.peek=function(){if(this.h()||t(),16&this.f)throw this.v;return this.v},Object.defineProperty(m.prototype,"value",{get:function(){1&this.f&&t();var e=c(this);if(this.h(),void 0!==e&&(e.i=this.i),16&this.f)throw this.v;return this.v}}),w.prototype.c=function(){var t=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var e=this.x();"function"==typeof e&&(this.u=e)}finally{t()}},w.prototype.S=function(){1&this.f&&t(),this.f|=1,this.f&=-9,g(this),d(this),l++;var e=n;return n=this,A.bind(this,e)},w.prototype.N=function(){2&this.f||(this.f|=2,this.o=a,a=this)},w.prototype.d=function(){this.f|=8,1&this.f||b(this)};var k,x=Symbol.dispose||=Symbol("dispose"),O=Symbol("signals"),N={Array:Array,Object:Object,Number:Number,String:String,Boolean:Boolean,Date:Date,console:console,window:window,document:document,history:history,navigator:navigator,location:location,screen:screen,localStorage:localStorage,sessionStorage:sessionStorage,alert:alert,prompt:prompt,confirm:confirm,fetch:fetch,performance:performance,setTimeout:setTimeout,setInterval:setInterval,requestAnimationFrame:requestAnimationFrame};function E(t,e){if(t?.constructor!==Object&&!Array.isArray(t))return t;if(t[O]&&!e)return t;const r=t[O],n=Array.isArray(t)&&v((r||t).length),o=e?Object.create((e=E(e))[O]):Array.isArray(t)?[]:{},a=o.constructor.prototype,l=new Proxy(t,{has:()=>!0,get(t,r){if(n){if("length"===r)return a[k]?n.peek():n.value;k=r}if(a[r])return a[r];if(r===O)return o;const i=o[r]||u(r);return i?i.value:e?e[r]:N.hasOwnProperty(r)?N[r]:void 0},set(t,e,r){if(n&&"length"===e)return i((()=>{for(let t=r,e=o.length;t<e;t++)delete l[t];for(let t=o.length;t<r;t++)l[t]=null;n.value=o.length=t.length=r})),!0;const a=o[e]||u(e)||v(),f=a.peek();return r===f||(a._set?a._set(r):Array.isArray(r)&&Array.isArray(f)?s((()=>i((()=>{let i=0,n=r.length;for(;i<n;i++)f[i]=t[e][i]=r[i];f.length=n,a.value=null,a.value=f})))):(Array.isArray(f)&&(f.length=0),a.value=E(t[e]=r))),n&&e>=n.peek()&&(n.value=o.length=t.length=Number(e)+1),!0},deleteProperty:(t,e)=>(e in o&&(o[e]._del?.(),delete o[e],delete t[e]),!0)});for(let e in t)t[e],o[e]=r?.[e]??null;function u(e){if(t.hasOwnProperty(e)){const i=Object.getOwnPropertyDescriptor(t,e);return i?.get?((o[e]=(r=i.get.bind(l),new m(r)))._set=i.set?.bind(l),o[e]):o[e]=i.value?.peek?i.value:v(E(i.value))}var r}return l}var j=Promise.prototype.then.bind(Promise.resolve()),_={},P={};_.if=(t,e,r)=>{let i=document.createTextNode(""),n=[I(t,e,":if")],o=[t],s=t;for(;(s=t.nextElementSibling)&&s.hasAttribute(":else");)s.removeAttribute(":else"),(e=s.getAttribute(":if"))?(s.removeAttribute(":if"),s.remove(),o.push(s),n.push(I(t,e,":else :if"))):(s.remove(),o.push(s),n.push((()=>1)));t.replaceWith(s=i);const a=S((()=>{let t=n.findIndex((t=>t(r)));o[t]!=s&&((s[$]||s).replaceWith(s=o[t]||i),M(s,r))}));return()=>{for(const t of o)t[x]?.();a()}};var $=Symbol(":each");_.each=(t,e,r)=>{let n=function(t){let e=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,r=t.match(/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/);if(!r)return;let i=r[2].trim(),n=r[1].replace(/^\s*\(|\)\s*$/g,"").trim(),o=n.match(e);return o?[n.replace(e,"").trim(),o[1].trim(),i]:[n,"",i]}(e);if(!n)return L(new Error,t,e,":each");const[o,a,l]=n,u=t[$]=document.createTextNode("");t.replaceWith(u);const f=I(t,l,":each");let c,h,v=0;return S((()=>{let n=f(r);return n?"number"==typeof n?n=Array.from({length:n},((t,e)=>e)):Array.isArray(n)||("object"==typeof n?(h=Object.keys(n),n=Object.values(n)):L(Error("Bad items value"),t,e,":each")):n=[],s((()=>i((()=>{if(c?.[O][0]?.peek){let t=n.length,e=0;for(;e<t;e++)c[e]=n[e];c.length=t}else{for(let t=0,e=c?.[O];t<v;t++)e[t]?._del();c=n,c[O]||={}}})))),S((()=>{let e=n.length;v!==e&&s((()=>i((()=>{const i=c[O];for(let n=v;n<e;n++){c[n];const e=t.cloneNode(!0),s=E({[o]:i[n]??c[n],[a]:h?.[n]??n},r);u.before(e),M(e,s);const{_del:l}=i[n]||={};i[n]._del=()=>{delete i[n],l?.(),e[x](),e.remove(),delete c[n]}}v=e}))))}))})),()=>i((()=>{for(let t of c[O])t?._del();c.length=0}))},_.with=(t,e,r)=>(M(t,E(I(t,e,":with")(r),r)),t[x]),_.ref=(t,e,r)=>{r[e]=t},P.render=(t,e,r)=>{let i=I(t,e,":render")(r);i||L(new Error("Template not found"),t,e,":render");let n=i.content.cloneNode(!0);return t.replaceChildren(n),M(t,r),t[x]},P.id=(t,e,r)=>{let i=I(t,e,":id");return S((()=>{return e=i(r),t.id=e||0===e?e:"";var e}))},P.class=(t,e,r)=>{let i=I(t,e,":class"),n=t.getAttribute("class");return S((()=>{let e=i(r),o=[n];e&&("string"==typeof e?o.push(e):Array.isArray(e)?o.push(...e):o.push(...Object.entries(e).map((([t,e])=>e?t:"")))),(o=o.filter(Boolean).join(" "))?t.setAttribute("class",o):t.removeAttribute("class")}))},P.style=(t,e,r)=>{let i=I(t,e,":style"),n=t.getAttribute("style")||"";return n.endsWith(";")||(n+="; "),S((()=>{let e=i(r);"string"==typeof e?t.setAttribute("style",n+e):s((()=>{t.setAttribute("style",n);for(let r in e)"symbol"!=typeof e[r]&&t.style.setProperty(r,e[r])}))}))},P.text=(t,e,r)=>{let i=I(t,e,":text");return S((()=>{let e=i(r);t.textContent=null==e?"":e}))},P[""]=(t,e,r)=>{let i=I(t,e,":");if(i)return S((()=>{let e=i(r);for(let r in e)K(t,r.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(t=>"-"+t.toLowerCase())),e[r])}))},P.value=(t,e,r)=>{let i,n,o=I(t,e,":value"),s="text"===t.type||""===t.type?e=>t.setAttribute("value",t.value=null==e?"":e):"TEXTAREA"===t.tagName||"text"===t.type||""===t.type?e=>(i=t.selectionStart,n=t.selectionEnd,t.setAttribute("value",t.value=null==e?"":e),i&&t.setSelectionRange(i,n)):"checkbox"===t.type?e=>(t.value=e?"on":"",K(t,"checked",e)):"select-one"===t.type?e=>{for(let e in t.options)e.removeAttribute("selected");t.value=e,t.selectedOptions[0]?.setAttribute("selected","")}:e=>t.value=e;return S((()=>{s(o(r))}))};var T=(t,e,r,i)=>{let n=i.startsWith("on")&&i.slice(2),o=I(t,e,":"+i);if(o){if(n){let e,i=S((()=>{e&&(e(),e=null);let i=o(r);i&&(e=C(t,n,i))}));return()=>(e?.(),i())}return S((()=>{K(t,i,o(r))}))}},C=(t,e,r)=>{if(!r)return;const i={evt:"",target:t,test:()=>!0};i.evt=(e.startsWith("on")?e.slice(2):e).replace(/\.(\w+)?-?([-\w]+)?/g,((t,e,r="")=>(i.test=W[e]?.(i,...r.split("-"))||i.test,"")));const{evt:n,target:o,test:s,defer:a,stop:l,prevent:u,...f}=i;a&&(r=a(r));const c=t=>s(t)&&(l&&t.stopPropagation(),u&&t.preventDefault(),r.call(o,t));return o.addEventListener(n,c,f),()=>o.removeEventListener(n,c,f)},W={prevent(t){t.prevent=!0},stop(t){t.stop=!0},once(t){t.once=!0},passive(t){t.passive=!0},capture(t){t.capture=!0},window(t){t.target=window},document(t){t.target=document},throttle(t,e){t.defer=t=>U(t,e?Number(e)||0:108)},debounce(t,e){t.defer=t=>B(t,e?Number(e)||0:108)},outside:t=>e=>{let r=t.target;return!(r.contains(e.target)||!1===e.target.isConnected||r.offsetWidth<1&&r.offsetHeight<1)},self:t=>e=>e.target===t.target,ctrl:(t,...e)=>t=>D.ctrl(t)&&e.every((e=>D[e]?D[e](t):t.key===e)),shift:(t,...e)=>t=>D.shift(t)&&e.every((e=>D[e]?D[e](t):t.key===e)),alt:(t,...e)=>t=>D.alt(t)&&e.every((e=>D[e]?D[e](t):t.key===e)),meta:(t,...e)=>t=>D.meta(t)&&e.every((e=>D[e]?D[e](t):t.key===e)),arrow:t=>D.arrow,enter:t=>D.enter,escape:t=>D.escape,tab:t=>D.tab,space:t=>D.space,backspace:t=>D.backspace,delete:t=>D.delete,digit:t=>D.digit,letter:t=>D.letter,character:t=>D.character},D={ctrl:t=>t.ctrlKey||"Control"===t.key||"Ctrl"===t.key,shift:t=>t.shiftKey||"Shift"===t.key,alt:t=>t.altKey||"Alt"===t.key,meta:t=>t.metaKey||"Meta"===t.key||"Command"===t.key,arrow:t=>t.key.startsWith("Arrow"),enter:t=>"Enter"===t.key,escape:t=>t.key.startsWith("Esc"),tab:t=>"Tab"===t.key,space:t=>" "===t.key||"Space"===t.key||" "===t.key,backspace:t=>"Backspace"===t.key,delete:t=>"Delete"===t.key,digit:t=>/^\d$/.test(t.key),letter:t=>/^[a-zA-Z]$/.test(t.key),character:t=>/^\S$/.test(t.key)},U=(t,e)=>{let r,i,n=o=>{r=!0,setTimeout((()=>{if(r=!1,i)return i=!1,n(o),t(o)}),e)};return e=>r?i=!0:(n(e),t(e))},B=(t,e)=>{let r;return i=>{clearTimeout(r),r=setTimeout((()=>{r=null,t(i)}),e)}},K=(t,e,r)=>{null==r||!1===r?t.removeAttribute(e):t.setAttribute(e,!0===r?"":"number"==typeof r||"string"==typeof r?r:"")},F={};function I(t,e,r){let i=F[e];if(!i)try{i=F[e]=new Function("__scope",`with (__scope) { let __; return ${e.trim()} };`)}catch(i){return L(i,t,e,r)}return n=>{let o;try{o=i.call(t,n)}catch(i){return L(i,t,e,r)}return o}}function L(t,e,r,i){Object.assign(t,{element:e,expression:r}),console.warn(`∴ ${t.message}\n\n${i}=${r?`"${r}"\n\n`:""}`,e),j((()=>{throw t}),0)}M.globals=N;var q=new WeakMap;function M(t,e){if(!t.children)return;if(q.has(t))return i((()=>Object.assign(q.get(t),e)));const r=E(e||{}),n=[],o=(t,e=t.parentNode)=>{for(let i in _){let o=":"+i;if(t.hasAttribute?.(o)){let s=t.getAttribute(o);if(t.removeAttribute(o),n.push(_[i](t,s,r,i)),q.has(t))return;if(t.parentNode!==e)return!1}}if(t.attributes)for(let e=0;e<t.attributes.length;){let i=t.attributes[e],o=i.name[0];if(":"===o||"@"===o){t.removeAttribute(i.name);let e="@"===o?`${i.value.includes("await")?"async":""} event=>{${i.value}}`:i.value,s=i.name.slice(1).split(o);for(let i of s){"@"===o&&(i="on"+i);let s=P[i]||T;n.push(s(t,e,r,i))}}else e++}for(let e,r=0;e=t.children[r];r++)!1===o(e,t)&&r--};return o(t),q.has(t)||(q.set(t,r),n.length&&Object.defineProperty(t,x,{value:()=>{for(;n.length;)n.shift()?.();q.delete(t)}})),r}document.currentScript&&M(document.documentElement)})();