sprae 7.0.0 → 8.0.1

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,73 @@
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
+ return sandbox[key];
454
+ },
455
+ set(values2, key, v2) {
456
+ if (_len) {
457
+ if (key === "length") {
458
+ n(() => {
459
+ for (let i2 = v2, l2 = signals.length; i2 < l2; i2++)
460
+ delete state[i2];
461
+ _len.value = signals.length = values2.length = v2;
462
+ });
463
+ return true;
464
+ }
442
465
  }
443
- if (_len)
444
- lastProp = null;
466
+ const s2 = signals[key] || initSignal(key, v2) || a();
467
+ const cur = s2.peek();
468
+ if (v2 === cur)
469
+ ;
470
+ else if (s2._set)
471
+ s2._set(v2);
472
+ else if (Array.isArray(v2) && Array.isArray(cur)) {
473
+ s(() => n(() => {
474
+ let i2 = 0, l2 = v2.length, vals = values2[key];
475
+ for (; i2 < l2; i2++)
476
+ cur[i2] = vals[i2] = v2[i2];
477
+ cur.length = l2;
478
+ }));
479
+ } else {
480
+ s2.value = createState(values2[key] = v2);
481
+ }
482
+ if (_len && key >= _len.peek())
483
+ _len.value = signals.length = values2.length = Number(key) + 1;
484
+ return true;
485
+ },
486
+ deleteProperty(values2, key) {
487
+ signals[key]?._del?.(), delete signals[key], delete values2[key];
445
488
  return true;
446
489
  }
447
490
  });
448
- for (let key in values) {
449
- signals[key] = initSignal(key);
450
- }
491
+ for (let key in values)
492
+ signals[key] = initSignals?.[key] ?? initSignal(key);
451
493
  function initSignal(key) {
452
494
  if (values.hasOwnProperty(key)) {
453
495
  const desc = Object.getOwnPropertyDescriptor(values, key);
@@ -457,103 +499,17 @@
457
499
  }
458
500
  return signals[key] = desc.value?.peek ? desc.value : a(createState(desc.value));
459
501
  }
460
- if (parent)
461
- return parent[key];
462
- if (sandbox.hasOwnProperty(key))
463
- return sandbox[key];
464
502
  }
465
- memo.set(state, signals);
466
503
  return state;
467
504
  }
468
505
 
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
506
  // src/util.js
522
507
  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
508
 
553
509
  // src/directives.js
554
510
  var primary = {};
555
511
  var secondary = {};
556
- primary["if"] = (el, expr) => {
512
+ primary["if"] = (el, expr, state) => {
557
513
  let holder = document.createTextNode(""), clauses = [parseExpr(el, expr, ":if")], els = [el], cur = el;
558
514
  while (cur = el.nextElementSibling) {
559
515
  if (cur.hasAttribute(":else")) {
@@ -571,70 +527,92 @@
571
527
  break;
572
528
  }
573
529
  el.replaceWith(cur = holder);
574
- return (state) => {
530
+ const dispose = O(() => {
575
531
  let i2 = clauses.findIndex((f2) => f2(state));
576
532
  if (els[i2] != cur) {
577
533
  ;
578
534
  (cur[_each] || cur).replaceWith(cur = els[i2] || holder);
579
535
  sprae(cur, state);
580
536
  }
537
+ });
538
+ return () => {
539
+ for (const el2 of els)
540
+ el2[_dispose]?.();
541
+ dispose();
581
542
  };
582
543
  };
583
544
  var _each = Symbol(":each");
584
- primary["each"] = (tpl, expr) => {
545
+ primary["each"] = (tpl, expr, state) => {
585
546
  let each = parseForExpression(expr);
586
547
  if (!each)
587
548
  return exprError(new Error(), tpl, expr, ":each");
549
+ const [itemVar, idxVar, itemsExpr] = each;
588
550
  const holder = tpl[_each] = document.createTextNode("");
589
551
  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]);
552
+ const evaluate = parseExpr(tpl, itemsExpr, ":each");
553
+ let items, prevl = 0, keys2;
554
+ O(() => {
555
+ let newItems = evaluate(state);
556
+ if (!newItems)
557
+ newItems = [];
558
+ else if (typeof newItems === "number") {
559
+ newItems = Array.from({ length: newItems }, (_2, i2) => i2);
560
+ } else if (Array.isArray(newItems))
561
+ ;
562
+ else if (typeof newItems === "object") {
563
+ keys2 = Object.keys(newItems);
564
+ newItems = Object.values(newItems);
565
+ } else {
566
+ exprError(Error("Bad items value"), tpl, expr, ":each", newItems);
630
567
  }
631
- };
568
+ s(() => n(() => {
569
+ if (!items?.[_signals][0]?.peek) {
570
+ for (let i2 = 0, signals = items?.[_signals]; i2 < prevl; i2++)
571
+ signals[i2]?._del();
572
+ items = newItems, items[_signals] ||= {};
573
+ } else {
574
+ let newl = newItems.length, i2 = 0;
575
+ for (; i2 < newl; i2++)
576
+ items[i2] = newItems[i2];
577
+ items.length = newl;
578
+ }
579
+ }));
580
+ return O(() => {
581
+ let newl = newItems.length;
582
+ if (prevl !== newl)
583
+ s(() => n(() => {
584
+ const signals = items[_signals];
585
+ for (let i2 = prevl; i2 < newl; i2++) {
586
+ items[i2];
587
+ const el = tpl.cloneNode(true), scope = createState({
588
+ [itemVar]: signals[i2] ?? items[i2],
589
+ [idxVar]: keys2?.[i2] ?? i2
590
+ }, state);
591
+ holder.before(el);
592
+ sprae(el, scope);
593
+ const { _del } = signals[i2] ||= {};
594
+ signals[i2]._del = () => {
595
+ delete signals[i2];
596
+ _del?.();
597
+ el[_dispose](), el.remove(), delete items[i2];
598
+ };
599
+ }
600
+ prevl = newl;
601
+ }));
602
+ });
603
+ });
604
+ return () => n(() => {
605
+ for (let _i of items[_signals])
606
+ _i?._del();
607
+ items.length = 0;
608
+ });
632
609
  };
633
610
  primary["with"] = (el, expr, rootState) => {
634
611
  let evaluate = parseExpr(el, expr, ":with");
635
612
  const localState = evaluate(rootState);
636
613
  let state = createState(localState, rootState);
637
614
  sprae(el, state);
615
+ return el[_dispose];
638
616
  };
639
617
  primary["ref"] = (el, expr, state) => {
640
618
  state[expr] = el;
@@ -664,16 +642,17 @@
664
642
  let content = tpl.content.cloneNode(true);
665
643
  el.replaceChildren(content);
666
644
  sprae(el, state);
645
+ return el[_dispose];
667
646
  };
668
- secondary["id"] = (el, expr) => {
647
+ secondary["id"] = (el, expr, state) => {
669
648
  let evaluate = parseExpr(el, expr, ":id");
670
649
  const update = (v2) => el.id = v2 || v2 === 0 ? v2 : "";
671
- return (state) => update(evaluate(state));
650
+ return O(() => update(evaluate(state)));
672
651
  };
673
- secondary["class"] = (el, expr) => {
652
+ secondary["class"] = (el, expr, state) => {
674
653
  let evaluate = parseExpr(el, expr, ":class");
675
654
  let initClassName = el.getAttribute("class");
676
- return (state) => {
655
+ return O(() => {
677
656
  let v2 = evaluate(state);
678
657
  let className = [initClassName];
679
658
  if (v2) {
@@ -688,41 +667,44 @@
688
667
  el.setAttribute("class", className);
689
668
  else
690
669
  el.removeAttribute("class");
691
- };
670
+ });
692
671
  };
693
- secondary["style"] = (el, expr) => {
672
+ secondary["style"] = (el, expr, state) => {
694
673
  let evaluate = parseExpr(el, expr, ":style");
695
674
  let initStyle = el.getAttribute("style") || "";
696
675
  if (!initStyle.endsWith(";"))
697
676
  initStyle += "; ";
698
- return (state) => {
677
+ return O(() => {
699
678
  let v2 = evaluate(state);
700
679
  if (typeof v2 === "string")
701
680
  el.setAttribute("style", initStyle + v2);
702
681
  else {
703
- el.setAttribute("style", initStyle);
704
- for (let k in v2)
705
- el.style.setProperty(k, v2[k]);
682
+ s(() => {
683
+ el.setAttribute("style", initStyle);
684
+ for (let k in v2)
685
+ if (typeof v2[k] !== "symbol")
686
+ el.style.setProperty(k, v2[k]);
687
+ });
706
688
  }
707
- };
689
+ });
708
690
  };
709
- secondary["text"] = (el, expr) => {
691
+ secondary["text"] = (el, expr, state) => {
710
692
  let evaluate = parseExpr(el, expr, ":text");
711
- return (state) => {
693
+ return O(() => {
712
694
  let value = evaluate(state);
713
695
  el.textContent = value == null ? "" : value;
714
- };
696
+ });
715
697
  };
716
- secondary[""] = (el, expr) => {
698
+ secondary[""] = (el, expr, state) => {
717
699
  let evaluate = parseExpr(el, expr, ":");
718
700
  if (evaluate)
719
- return (state) => {
701
+ return O(() => {
720
702
  let value = evaluate(state);
721
703
  for (let key in value)
722
704
  attr(el, dashcase(key), value[key]);
723
- };
705
+ });
724
706
  };
725
- secondary["value"] = (el, expr) => {
707
+ secondary["value"] = (el, expr, state) => {
726
708
  let evaluate = parseExpr(el, expr, ":value");
727
709
  let from, to;
728
710
  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 +713,28 @@
731
713
  el.value = value;
732
714
  el.selectedOptions[0]?.setAttribute("selected", "");
733
715
  } : (value) => el.value = value;
734
- return (state) => update(evaluate(state));
716
+ return O(() => {
717
+ update(evaluate(state));
718
+ });
735
719
  };
736
720
  var directives_default = (el, expr, state, name) => {
737
721
  let evt = name.startsWith("on") && name.slice(2);
738
722
  let evaluate = parseExpr(el, expr, ":" + name);
739
723
  if (!evaluate)
740
724
  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));
725
+ if (evt) {
726
+ let off, dispose = O(() => {
727
+ if (off)
728
+ off(), off = null;
729
+ let value = evaluate(state);
730
+ if (value)
731
+ off = on(el, evt, value);
732
+ });
733
+ return () => (off?.(), dispose());
734
+ }
735
+ return O(() => {
736
+ attr(el, name, evaluate(state));
737
+ });
748
738
  };
749
739
  var on = (el, e2, fn) => {
750
740
  if (!fn)
@@ -868,7 +858,7 @@
868
858
  let evaluate = evaluatorMemo[expression];
869
859
  if (!evaluate) {
870
860
  try {
871
- evaluate = evaluatorMemo[expression] = new Function(`__scope`, `with (__scope) { return ${expression.trim()} };`);
861
+ evaluate = evaluatorMemo[expression] = new Function(`__scope`, `with (__scope) { let __; return ${expression.trim()} };`);
872
862
  } catch (e2) {
873
863
  return exprError(e2, el, expression, dir);
874
864
  }
@@ -900,22 +890,22 @@ ${directive}=${expression ? `"${expression}"
900
890
 
901
891
  // src/core.js
902
892
  sprae.globals = sandbox;
903
- var memo2 = /* @__PURE__ */ new WeakMap();
893
+ var memo = /* @__PURE__ */ new WeakMap();
904
894
  function sprae(container, values) {
905
895
  if (!container.children)
906
896
  return;
907
- if (memo2.has(container))
908
- return n(() => Object.assign(memo2.get(container), values));
897
+ if (memo.has(container))
898
+ return n(() => Object.assign(memo.get(container), values));
909
899
  const state = createState(values || {});
910
- const updates = [];
900
+ const disposes = [];
911
901
  const init = (el, parent = el.parentNode) => {
912
902
  for (let name in primary) {
913
903
  let attrName = ":" + name;
914
904
  if (el.hasAttribute?.(attrName)) {
915
905
  let expr = el.getAttribute(attrName);
916
906
  el.removeAttribute(attrName);
917
- updates.push(primary[name](el, expr, state, name));
918
- if (memo2.has(el))
907
+ disposes.push(primary[name](el, expr, state, name));
908
+ if (memo.has(el))
919
909
  return;
920
910
  if (el.parentNode !== parent)
921
911
  return false;
@@ -931,7 +921,7 @@ ${directive}=${expression ? `"${expression}"
931
921
  if (prefix === "@")
932
922
  name = `on` + name;
933
923
  let dir = secondary[name] || directives_default;
934
- updates.push(dir(el, expr, state, name));
924
+ disposes.push(dir(el, expr, state, name));
935
925
  }
936
926
  } else
937
927
  i2++;
@@ -943,16 +933,17 @@ ${directive}=${expression ? `"${expression}"
943
933
  }
944
934
  };
945
935
  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);
936
+ if (memo.has(container))
937
+ return state;
938
+ memo.set(container, state);
939
+ if (disposes.length)
940
+ Object.defineProperty(container, _dispose, {
941
+ value: () => {
942
+ while (disposes.length)
943
+ disposes.shift()?.();
944
+ memo.delete(container);
945
+ }
946
+ });
956
947
  return state;
957
948
  }
958
949
 
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 b(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,g(t),e}finally{n=i,r()}}}function g(t){for(var e=t.s;void 0!==e;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,b(t)}function A(t){if(n!==this)throw new Error("Out-of-order effect");y(this),n=t,this.f&=-2,8&this.f&&g(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,b(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||g(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[r]},set(t,e,r){if(n&&"length"===e)return i((()=>{for(let t=r,e=o.length;t<e;t++)delete l[t];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,o=t[e];for(;i<n;i++)f[i]=o[i]=r[i];f.length=n})))):a.value=E(t[e]=r)),n&&e>=n.peek()&&(n.value=o.length=t.length=Number(e)+1),!0},deleteProperty:(t,e)=>(o[e]?._del?.(),delete o[e],delete t[e],!0)});for(let e in t)o[e]=r?.[e]??u(e);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()),_={},$={};_.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[P]||s).replaceWith(s=o[t]||i),M(s,r))}));return()=>{for(const t of o)t[x]?.();a()}};var P=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[P]=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},$.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]},$.id=(t,e,r)=>{let i=I(t,e,":id");return S((()=>{return e=i(r),t.id=e||0===e?e:"";var e}))},$.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")}))},$.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])}))}))},$.text=(t,e,r)=>{let i=I(t,e,":text");return S((()=>{let e=i(r);t.textContent=null==e?"":e}))},$[""]=(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])}))},$.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=$[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)})();