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.js CHANGED
@@ -44,6 +44,20 @@ function n(i2) {
44
44
  }
45
45
  }
46
46
  var o = void 0;
47
+ var h = 0;
48
+ function s(i2) {
49
+ if (h > 0)
50
+ return i2();
51
+ var t2 = o;
52
+ o = void 0;
53
+ h++;
54
+ try {
55
+ return i2();
56
+ } finally {
57
+ h--;
58
+ o = t2;
59
+ }
60
+ }
47
61
  var f = void 0;
48
62
  var v = 0;
49
63
  var e = 0;
@@ -380,6 +394,8 @@ function O(i2) {
380
394
  }
381
395
 
382
396
  // src/state.signals-proxy.js
397
+ var _dispose = Symbol.dispose ||= Symbol("dispose");
398
+ var _signals = Symbol("signals");
383
399
  var sandbox = {
384
400
  Array,
385
401
  Object,
@@ -406,47 +422,73 @@ var sandbox = {
406
422
  requestAnimationFrame
407
423
  };
408
424
  var isObject = (v2) => v2?.constructor === Object;
409
- var memo = /* @__PURE__ */ new WeakMap();
410
425
  var lastProp;
411
426
  function createState(values, parent) {
412
427
  if (!isObject(values) && !Array.isArray(values))
413
428
  return values;
414
- if (memo.has(values) && !parent)
429
+ if (values[_signals] && !parent)
415
430
  return values;
416
- const _len = Array.isArray(values) && a(values.length), signals = parent ? Object.create(memo.get(parent = createState(parent))) : Array.isArray(values) ? [] : {}, state = new Proxy(signals, {
431
+ const initSignals = values[_signals];
432
+ const _len = Array.isArray(values) && a((initSignals || values).length), signals = parent ? Object.create((parent = createState(parent))[_signals]) : Array.isArray(values) ? [] : {}, proto = signals.constructor.prototype;
433
+ const state = new Proxy(values, {
417
434
  has() {
418
435
  return true;
419
436
  },
420
- get(signals2, key) {
421
- let v2;
422
- if (_len && key === "length")
423
- v2 = Array.prototype[lastProp] ? _len.peek() : _len.value;
424
- else
425
- v2 = (signals2[key] || initSignal(key))?.valueOf();
437
+ get(values2, key) {
426
438
  if (_len)
427
- lastProp = key;
428
- return v2;
429
- },
430
- set(signals2, key, v2) {
431
- if (_len && key === "length")
432
- _len.value = signals2.length = v2;
433
- else {
434
- const s = signals2[key] || initSignal(key);
435
- if (!s)
436
- signals2[key] = a(createState(v2?.valueOf()));
437
- else if (s._set)
438
- s._set(v2);
439
+ if (key === "length")
440
+ return proto[lastProp] ? _len.peek() : _len.value;
439
441
  else
440
- s.value = createState(v2?.valueOf());
442
+ lastProp = key;
443
+ if (proto[key])
444
+ return proto[key];
445
+ if (key === _signals)
446
+ return signals;
447
+ const s2 = signals[key] || initSignal(key);
448
+ if (s2)
449
+ return s2.value;
450
+ if (parent)
451
+ return parent[key];
452
+ return sandbox[key];
453
+ },
454
+ set(values2, key, v2) {
455
+ if (_len) {
456
+ if (key === "length") {
457
+ n(() => {
458
+ for (let i2 = v2, l2 = signals.length; i2 < l2; i2++)
459
+ delete state[i2];
460
+ _len.value = signals.length = values2.length = v2;
461
+ });
462
+ return true;
463
+ }
441
464
  }
442
- if (_len)
443
- lastProp = null;
465
+ const s2 = signals[key] || initSignal(key, v2) || a();
466
+ const cur = s2.peek();
467
+ if (v2 === cur)
468
+ ;
469
+ else if (s2._set)
470
+ s2._set(v2);
471
+ else if (Array.isArray(v2) && Array.isArray(cur)) {
472
+ s(() => n(() => {
473
+ let i2 = 0, l2 = v2.length, vals = values2[key];
474
+ for (; i2 < l2; i2++)
475
+ cur[i2] = vals[i2] = v2[i2];
476
+ cur.length = l2;
477
+ }));
478
+ } else {
479
+ s2.value = createState(values2[key] = v2);
480
+ }
481
+ if (_len && key >= _len.peek())
482
+ _len.value = signals.length = values2.length = Number(key) + 1;
483
+ return true;
484
+ },
485
+ deleteProperty(values2, key) {
486
+ signals[key]?._del?.(), delete signals[key], delete values2[key];
444
487
  return true;
445
488
  }
446
489
  });
447
- for (let key in values) {
448
- signals[key] = initSignal(key);
449
- }
490
+ for (let key in values)
491
+ signals[key] = initSignals?.[key] ?? initSignal(key);
450
492
  function initSignal(key) {
451
493
  if (values.hasOwnProperty(key)) {
452
494
  const desc = Object.getOwnPropertyDescriptor(values, key);
@@ -456,103 +498,17 @@ function createState(values, parent) {
456
498
  }
457
499
  return signals[key] = desc.value?.peek ? desc.value : a(createState(desc.value));
458
500
  }
459
- if (parent)
460
- return parent[key];
461
- if (sandbox.hasOwnProperty(key))
462
- return sandbox[key];
463
501
  }
464
- memo.set(state, signals);
465
502
  return state;
466
503
  }
467
504
 
468
- // src/domdiff.js
469
- function domdiff_default(parent, a2, b2, before) {
470
- const aIdx = /* @__PURE__ */ new Map();
471
- const bIdx = /* @__PURE__ */ new Map();
472
- let i2;
473
- let j;
474
- for (i2 = 0; i2 < a2.length; i2++) {
475
- aIdx.set(a2[i2], i2);
476
- }
477
- for (i2 = 0; i2 < b2.length; i2++) {
478
- bIdx.set(b2[i2], i2);
479
- }
480
- for (i2 = j = 0; i2 !== a2.length || j !== b2.length; ) {
481
- var aElm = a2[i2], bElm = b2[j];
482
- if (aElm === null) {
483
- i2++;
484
- } else if (b2.length <= j) {
485
- parent.removeChild(a2[i2]);
486
- i2++;
487
- } else if (a2.length <= i2) {
488
- parent.insertBefore(bElm, a2[i2] || before);
489
- j++;
490
- } else if (aElm === bElm) {
491
- i2++;
492
- j++;
493
- } else {
494
- var curElmInNew = bIdx.get(aElm);
495
- var wantedElmInOld = aIdx.get(bElm);
496
- if (curElmInNew === void 0) {
497
- parent.removeChild(a2[i2]);
498
- i2++;
499
- } else if (wantedElmInOld === void 0) {
500
- parent.insertBefore(
501
- bElm,
502
- a2[i2] || before
503
- );
504
- j++;
505
- } else {
506
- parent.insertBefore(
507
- a2[wantedElmInOld],
508
- a2[i2] || before
509
- );
510
- a2[wantedElmInOld] = null;
511
- if (wantedElmInOld > i2 + 1)
512
- i2++;
513
- j++;
514
- }
515
- }
516
- }
517
- return b2;
518
- }
519
-
520
505
  // src/util.js
521
506
  var queueMicrotask = Promise.prototype.then.bind(Promise.resolve());
522
- var refs = /* @__PURE__ */ new WeakMap();
523
- var set = (value) => {
524
- const ref = new WeakRef(value);
525
- refs.set(value, ref);
526
- return ref;
527
- };
528
- var get = (value) => refs.get(value) || set(value);
529
- var WeakishMap = class extends Map {
530
- #registry = new FinalizationRegistry((key) => super.delete(key));
531
- get size() {
532
- return [...this].length;
533
- }
534
- constructor(entries = []) {
535
- super();
536
- for (const [key, value] of entries)
537
- this.set(key, value);
538
- }
539
- get(key) {
540
- return super.get(key)?.deref();
541
- }
542
- set(key, value) {
543
- let ref = super.get(key);
544
- if (ref)
545
- this.#registry.unregister(ref);
546
- ref = get(value);
547
- this.#registry.register(value, key, ref);
548
- return super.set(key, ref);
549
- }
550
- };
551
507
 
552
508
  // src/directives.js
553
509
  var primary = {};
554
510
  var secondary = {};
555
- primary["if"] = (el, expr) => {
511
+ primary["if"] = (el, expr, state) => {
556
512
  let holder = document.createTextNode(""), clauses = [parseExpr(el, expr, ":if")], els = [el], cur = el;
557
513
  while (cur = el.nextElementSibling) {
558
514
  if (cur.hasAttribute(":else")) {
@@ -570,70 +526,92 @@ primary["if"] = (el, expr) => {
570
526
  break;
571
527
  }
572
528
  el.replaceWith(cur = holder);
573
- return (state) => {
529
+ const dispose = O(() => {
574
530
  let i2 = clauses.findIndex((f2) => f2(state));
575
531
  if (els[i2] != cur) {
576
532
  ;
577
533
  (cur[_each] || cur).replaceWith(cur = els[i2] || holder);
578
534
  sprae(cur, state);
579
535
  }
536
+ });
537
+ return () => {
538
+ for (const el2 of els)
539
+ el2[_dispose]?.();
540
+ dispose();
580
541
  };
581
542
  };
582
543
  var _each = Symbol(":each");
583
- primary["each"] = (tpl, expr) => {
544
+ primary["each"] = (tpl, expr, state) => {
584
545
  let each = parseForExpression(expr);
585
546
  if (!each)
586
547
  return exprError(new Error(), tpl, expr, ":each");
548
+ const [itemVar, idxVar, itemsExpr] = each;
587
549
  const holder = tpl[_each] = document.createTextNode("");
588
550
  tpl.replaceWith(holder);
589
- const evaluate = parseExpr(tpl, each[2], ":each");
590
- const keyExpr = tpl.getAttribute(":key");
591
- const itemKey = keyExpr ? parseExpr(null, keyExpr, ":each") : null;
592
- tpl.removeAttribute(":key");
593
- const refExpr = tpl.getAttribute(":ref");
594
- const scopes = new WeakishMap();
595
- const itemEls = new WeakishMap();
596
- let curEls = [];
597
- return (state) => {
598
- let list = evaluate(state);
599
- if (!list)
600
- list = [];
601
- else if (typeof list === "number")
602
- list = Array.from({ length: list }, (_2, i2) => [i2 + 1, i2]);
603
- else if (Array.isArray(list))
604
- list = list.map((item, i2) => [i2 + 1, item]);
605
- else if (typeof list === "object")
606
- list = Object.entries(list);
607
- else
608
- exprError(Error("Bad list value"), tpl, expr, ":each", list);
609
- let newEls = [], elScopes = [];
610
- for (let [idx, item] of list) {
611
- let el, scope, key = itemKey?.({ [each[0]]: item, [each[1]]: idx });
612
- if (key == null)
613
- el = tpl.cloneNode(true);
614
- else
615
- (el = itemEls.get(key)) || itemEls.set(key, el = tpl.cloneNode(true));
616
- newEls.push(el);
617
- if (key == null || !(scope = scopes.get(key))) {
618
- scope = createState({ [each[0]]: item, [refExpr || ""]: null, [each[1]]: idx }, state);
619
- if (key != null)
620
- scopes.set(key, scope);
621
- } else
622
- scope[each[0]] = item;
623
- elScopes.push(scope);
624
- }
625
- domdiff_default(holder.parentNode, curEls, newEls, holder);
626
- curEls = newEls;
627
- for (let i2 = 0; i2 < newEls.length; i2++) {
628
- sprae(newEls[i2], elScopes[i2]);
551
+ const evaluate = parseExpr(tpl, itemsExpr, ":each");
552
+ let items, prevl = 0, keys2;
553
+ O(() => {
554
+ let newItems = evaluate(state);
555
+ if (!newItems)
556
+ newItems = [];
557
+ else if (typeof newItems === "number") {
558
+ newItems = Array.from({ length: newItems }, (_2, i2) => i2);
559
+ } else if (Array.isArray(newItems))
560
+ ;
561
+ else if (typeof newItems === "object") {
562
+ keys2 = Object.keys(newItems);
563
+ newItems = Object.values(newItems);
564
+ } else {
565
+ exprError(Error("Bad items value"), tpl, expr, ":each", newItems);
629
566
  }
630
- };
567
+ s(() => n(() => {
568
+ if (!items?.[_signals][0]?.peek) {
569
+ for (let i2 = 0, signals = items?.[_signals]; i2 < prevl; i2++)
570
+ signals[i2]?._del();
571
+ items = newItems, items[_signals] ||= {};
572
+ } else {
573
+ let newl = newItems.length, i2 = 0;
574
+ for (; i2 < newl; i2++)
575
+ items[i2] = newItems[i2];
576
+ items.length = newl;
577
+ }
578
+ }));
579
+ return O(() => {
580
+ let newl = newItems.length;
581
+ if (prevl !== newl)
582
+ s(() => n(() => {
583
+ const signals = items[_signals];
584
+ for (let i2 = prevl; i2 < newl; i2++) {
585
+ items[i2];
586
+ const el = tpl.cloneNode(true), scope = createState({
587
+ [itemVar]: signals[i2] ?? items[i2],
588
+ [idxVar]: keys2?.[i2] ?? i2
589
+ }, state);
590
+ holder.before(el);
591
+ sprae(el, scope);
592
+ const { _del } = signals[i2] ||= {};
593
+ signals[i2]._del = () => {
594
+ delete signals[i2];
595
+ _del?.();
596
+ el[_dispose](), el.remove(), delete items[i2];
597
+ };
598
+ }
599
+ prevl = newl;
600
+ }));
601
+ });
602
+ });
603
+ return () => n(() => {
604
+ for (let _i of items[_signals])
605
+ _i?._del();
606
+ items.length = 0;
607
+ });
631
608
  };
632
609
  primary["with"] = (el, expr, rootState) => {
633
610
  let evaluate = parseExpr(el, expr, ":with");
634
611
  const localState = evaluate(rootState);
635
612
  let state = createState(localState, rootState);
636
613
  sprae(el, state);
614
+ return el[_dispose];
637
615
  };
638
616
  primary["ref"] = (el, expr, state) => {
639
617
  state[expr] = el;
@@ -663,16 +641,17 @@ secondary["render"] = (el, expr, state) => {
663
641
  let content = tpl.content.cloneNode(true);
664
642
  el.replaceChildren(content);
665
643
  sprae(el, state);
644
+ return el[_dispose];
666
645
  };
667
- secondary["id"] = (el, expr) => {
646
+ secondary["id"] = (el, expr, state) => {
668
647
  let evaluate = parseExpr(el, expr, ":id");
669
648
  const update = (v2) => el.id = v2 || v2 === 0 ? v2 : "";
670
- return (state) => update(evaluate(state));
649
+ return O(() => update(evaluate(state)));
671
650
  };
672
- secondary["class"] = (el, expr) => {
651
+ secondary["class"] = (el, expr, state) => {
673
652
  let evaluate = parseExpr(el, expr, ":class");
674
653
  let initClassName = el.getAttribute("class");
675
- return (state) => {
654
+ return O(() => {
676
655
  let v2 = evaluate(state);
677
656
  let className = [initClassName];
678
657
  if (v2) {
@@ -687,41 +666,44 @@ secondary["class"] = (el, expr) => {
687
666
  el.setAttribute("class", className);
688
667
  else
689
668
  el.removeAttribute("class");
690
- };
669
+ });
691
670
  };
692
- secondary["style"] = (el, expr) => {
671
+ secondary["style"] = (el, expr, state) => {
693
672
  let evaluate = parseExpr(el, expr, ":style");
694
673
  let initStyle = el.getAttribute("style") || "";
695
674
  if (!initStyle.endsWith(";"))
696
675
  initStyle += "; ";
697
- return (state) => {
676
+ return O(() => {
698
677
  let v2 = evaluate(state);
699
678
  if (typeof v2 === "string")
700
679
  el.setAttribute("style", initStyle + v2);
701
680
  else {
702
- el.setAttribute("style", initStyle);
703
- for (let k in v2)
704
- el.style.setProperty(k, v2[k]);
681
+ s(() => {
682
+ el.setAttribute("style", initStyle);
683
+ for (let k in v2)
684
+ if (typeof v2[k] !== "symbol")
685
+ el.style.setProperty(k, v2[k]);
686
+ });
705
687
  }
706
- };
688
+ });
707
689
  };
708
- secondary["text"] = (el, expr) => {
690
+ secondary["text"] = (el, expr, state) => {
709
691
  let evaluate = parseExpr(el, expr, ":text");
710
- return (state) => {
692
+ return O(() => {
711
693
  let value = evaluate(state);
712
694
  el.textContent = value == null ? "" : value;
713
- };
695
+ });
714
696
  };
715
- secondary[""] = (el, expr) => {
697
+ secondary[""] = (el, expr, state) => {
716
698
  let evaluate = parseExpr(el, expr, ":");
717
699
  if (evaluate)
718
- return (state) => {
700
+ return O(() => {
719
701
  let value = evaluate(state);
720
702
  for (let key in value)
721
703
  attr(el, dashcase(key), value[key]);
722
- };
704
+ });
723
705
  };
724
- secondary["value"] = (el, expr) => {
706
+ secondary["value"] = (el, expr, state) => {
725
707
  let evaluate = parseExpr(el, expr, ":value");
726
708
  let from, to;
727
709
  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) => {
@@ -730,20 +712,28 @@ secondary["value"] = (el, expr) => {
730
712
  el.value = value;
731
713
  el.selectedOptions[0]?.setAttribute("selected", "");
732
714
  } : (value) => el.value = value;
733
- return (state) => update(evaluate(state));
715
+ return O(() => {
716
+ update(evaluate(state));
717
+ });
734
718
  };
735
719
  var directives_default = (el, expr, state, name) => {
736
720
  let evt = name.startsWith("on") && name.slice(2);
737
721
  let evaluate = parseExpr(el, expr, ":" + name);
738
722
  if (!evaluate)
739
723
  return;
740
- if (evt)
741
- return (state2) => {
742
- let value = evaluate(state2) || (() => {
743
- });
744
- return on(el, evt, value);
745
- };
746
- return (state2) => attr(el, name, evaluate(state2));
724
+ if (evt) {
725
+ let off, dispose = O(() => {
726
+ if (off)
727
+ off(), off = null;
728
+ let value = evaluate(state);
729
+ if (value)
730
+ off = on(el, evt, value);
731
+ });
732
+ return () => (off?.(), dispose());
733
+ }
734
+ return O(() => {
735
+ attr(el, name, evaluate(state));
736
+ });
747
737
  };
748
738
  var on = (el, e2, fn) => {
749
739
  if (!fn)
@@ -867,7 +857,7 @@ function parseExpr(el, expression, dir) {
867
857
  let evaluate = evaluatorMemo[expression];
868
858
  if (!evaluate) {
869
859
  try {
870
- evaluate = evaluatorMemo[expression] = new Function(`__scope`, `with (__scope) { return ${expression.trim()} };`);
860
+ evaluate = evaluatorMemo[expression] = new Function(`__scope`, `with (__scope) { let __; return ${expression.trim()} };`);
871
861
  } catch (e2) {
872
862
  return exprError(e2, el, expression, dir);
873
863
  }
@@ -899,22 +889,22 @@ function dashcase(str) {
899
889
 
900
890
  // src/core.js
901
891
  sprae.globals = sandbox;
902
- var memo2 = /* @__PURE__ */ new WeakMap();
892
+ var memo = /* @__PURE__ */ new WeakMap();
903
893
  function sprae(container, values) {
904
894
  if (!container.children)
905
895
  return;
906
- if (memo2.has(container))
907
- return n(() => Object.assign(memo2.get(container), values));
896
+ if (memo.has(container))
897
+ return n(() => Object.assign(memo.get(container), values));
908
898
  const state = createState(values || {});
909
- const updates = [];
899
+ const disposes = [];
910
900
  const init = (el, parent = el.parentNode) => {
911
901
  for (let name in primary) {
912
902
  let attrName = ":" + name;
913
903
  if (el.hasAttribute?.(attrName)) {
914
904
  let expr = el.getAttribute(attrName);
915
905
  el.removeAttribute(attrName);
916
- updates.push(primary[name](el, expr, state, name));
917
- if (memo2.has(el))
906
+ disposes.push(primary[name](el, expr, state, name));
907
+ if (memo.has(el))
918
908
  return;
919
909
  if (el.parentNode !== parent)
920
910
  return false;
@@ -930,7 +920,7 @@ function sprae(container, values) {
930
920
  if (prefix === "@")
931
921
  name = `on` + name;
932
922
  let dir = secondary[name] || directives_default;
933
- updates.push(dir(el, expr, state, name));
923
+ disposes.push(dir(el, expr, state, name));
934
924
  }
935
925
  } else
936
926
  i2++;
@@ -942,16 +932,17 @@ function sprae(container, values) {
942
932
  }
943
933
  };
944
934
  init(container);
945
- for (let update of updates)
946
- if (update) {
947
- let teardown;
948
- O(() => {
949
- if (typeof teardown === "function")
950
- teardown();
951
- teardown = update(state);
952
- });
953
- }
954
- memo2.set(container, state);
935
+ if (memo.has(container))
936
+ return state;
937
+ memo.set(container, state);
938
+ if (disposes.length)
939
+ Object.defineProperty(container, _dispose, {
940
+ value: () => {
941
+ while (disposes.length)
942
+ disposes.shift()?.();
943
+ memo.delete(container);
944
+ }
945
+ });
955
946
  return state;
956
947
  }
957
948
 
package/sprae.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}var z=R;document.currentScript&&R(document.documentElement);export{z as default};
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}var R=M;document.currentScript&&M(document.documentElement);export{R as default};