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