sprae 10.12.1 → 10.12.3

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/dist/sprae.umd.js CHANGED
@@ -186,6 +186,7 @@ function sprae(el, values) {
186
186
  el[_dispose] = () => {
187
187
  while (disposes.length) disposes.pop()();
188
188
  memo.delete(el);
189
+ el[_dispose] = null;
189
190
  };
190
191
  return state;
191
192
  function init2(el2, parent = el2.parentNode) {
@@ -198,8 +199,9 @@ function sprae(el, values) {
198
199
  for (let name of names) {
199
200
  let dir = directive[name] || directive.default;
200
201
  let evaluate = (dir.parse || parse)(attr2.value);
201
- let dispose = dir(el2, evaluate, state, name);
202
- if (dispose) disposes.push(dispose);
202
+ let fn = dir(el2, evaluate, state, name);
203
+ if (fn) disposes.push(effect(fn));
204
+ disposes.push(() => el2.setAttributeNode(attr2));
203
205
  }
204
206
  if (memo.has(el2)) return el2[_dispose] && disposes.push(el2[_dispose]);
205
207
  if (el2.parentNode !== parent) return;
@@ -253,6 +255,8 @@ ${dir}${expr ? `="${expr}"
253
255
  attributes,
254
256
  removeAttribute(name) {
255
257
  attributes.splice(attributes.findIndex((a) => a.name === name), 1);
258
+ },
259
+ setAttributeNode() {
256
260
  }
257
261
  };
258
262
  };
@@ -264,7 +268,6 @@ var _prevIf;
264
268
  var init_if = __esm({
265
269
  "directive/if.js"() {
266
270
  init_core();
267
- init_signal();
268
271
  _prevIf = Symbol("if");
269
272
  directive.if = (el, evaluate, state) => {
270
273
  let next = el.nextElementSibling, holder = document.createTextNode(""), curEl, ifEl, elseEl;
@@ -275,18 +278,18 @@ var init_if = __esm({
275
278
  next.removeAttribute(":else");
276
279
  if (!next.hasAttribute(":if")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);
277
280
  }
278
- return effect(() => {
281
+ return () => {
279
282
  const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;
280
283
  if (next) next[_prevIf] = newEl === ifEl;
281
284
  if (curEl != newEl) {
282
- curEl?.remove();
285
+ if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();
283
286
  if (curEl = newEl) {
284
287
  holder.before(curEl.content || curEl);
285
288
  memo.get(curEl) === null && memo.delete(curEl);
286
289
  sprae(curEl, state);
287
290
  }
288
291
  }
289
- });
292
+ };
290
293
  };
291
294
  }
292
295
  });
@@ -337,7 +340,7 @@ var init_each = __esm({
337
340
  holder.before(el.content || el);
338
341
  sprae(el, scope);
339
342
  ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {
340
- el[Symbol.dispose](), el.remove();
343
+ el[Symbol.dispose]?.(), el.remove();
341
344
  };
342
345
  }
343
346
  }
@@ -345,13 +348,13 @@ var init_each = __esm({
345
348
  });
346
349
  };
347
350
  let planned = 0;
348
- return effect(() => {
351
+ return () => {
349
352
  items.value[_change]?.value;
350
353
  if (!planned) {
351
354
  update();
352
355
  queueMicrotask(() => (planned && update(), planned = 0));
353
356
  } else planned++;
354
- });
357
+ };
355
358
  };
356
359
  directive.each.parse = (expr) => {
357
360
  let [leftSide, itemsExpr] = expr.split(/\s+in\s+/);
@@ -378,13 +381,12 @@ var init_with = __esm({
378
381
  "directive/with.js"() {
379
382
  init_core();
380
383
  init_store();
381
- init_signal();
382
384
  directive.with = (el, evaluate, rootState) => {
383
385
  let state;
384
- return effect(() => {
386
+ return () => {
385
387
  let values = evaluate(rootState);
386
388
  sprae(el, state ? values : state = store(values, rootState));
387
- });
389
+ };
388
390
  };
389
391
  }
390
392
  });
@@ -408,13 +410,12 @@ var init_html = __esm({
408
410
  var init_text = __esm({
409
411
  "directive/text.js"() {
410
412
  init_core();
411
- init_signal();
412
413
  directive.text = (el, evaluate, state) => {
413
414
  if (el.content) el.replaceWith(el = frag(el).childNodes[0]);
414
- return effect(() => {
415
+ return () => {
415
416
  let value = evaluate(state);
416
417
  el.textContent = value == null ? "" : value;
417
- });
418
+ };
418
419
  };
419
420
  }
420
421
  });
@@ -423,10 +424,9 @@ var init_text = __esm({
423
424
  var init_class = __esm({
424
425
  "directive/class.js"() {
425
426
  init_core();
426
- init_signal();
427
427
  directive.class = (el, evaluate, state) => {
428
428
  let cur = /* @__PURE__ */ new Set();
429
- return effect(() => {
429
+ return () => {
430
430
  let v = evaluate(state);
431
431
  let clsx = /* @__PURE__ */ new Set();
432
432
  if (v) {
@@ -437,7 +437,7 @@ var init_class = __esm({
437
437
  for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);
438
438
  else el.classList.remove(cls);
439
439
  for (let cls of cur = clsx) el.classList.add(cls);
440
- });
440
+ };
441
441
  };
442
442
  }
443
443
  });
@@ -446,17 +446,16 @@ var init_class = __esm({
446
446
  var init_style = __esm({
447
447
  "directive/style.js"() {
448
448
  init_core();
449
- init_signal();
450
449
  directive.style = (el, evaluate, state) => {
451
450
  let initStyle = el.getAttribute("style");
452
- return effect(() => {
451
+ return () => {
453
452
  let v = evaluate(state);
454
453
  if (typeof v === "string") el.setAttribute("style", initStyle + (initStyle.endsWith(";") ? "" : "; ") + v);
455
454
  else {
456
455
  if (initStyle) el.setAttribute("style", initStyle);
457
456
  for (let k in v) k[0] == "-" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];
458
457
  }
459
- });
458
+ };
460
459
  };
461
460
  }
462
461
  });
@@ -466,13 +465,12 @@ var mods, keys, attr, throttle, debounce, dashcase;
466
465
  var init_default = __esm({
467
466
  "directive/default.js"() {
468
467
  init_core();
469
- init_signal();
470
468
  directive.default = (target, evaluate, state, name) => {
471
- if (!name.startsWith("on")) return effect(() => {
469
+ if (!name.startsWith("on")) return () => {
472
470
  let value = evaluate(state);
473
471
  if (name) attr(target, name, value);
474
472
  else for (let key in value) attr(target, dashcase(key), value[key]);
475
- });
473
+ };
476
474
  const ctxs = name.split("..").map((e) => {
477
475
  let ctx = { evt: "", target, test: () => true };
478
476
  ctx.evt = (e.startsWith("on") ? e.slice(2) : e).replace(
@@ -481,12 +479,12 @@ var init_default = __esm({
481
479
  );
482
480
  return ctx;
483
481
  });
484
- if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]));
482
+ if (ctxs.length == 1) return () => addListener(evaluate(state), ctxs[0]);
485
483
  let startFn, nextFn, off, idx = 0;
486
484
  const nextListener = (fn) => {
487
485
  off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);
488
486
  };
489
- return effect(() => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null));
487
+ return () => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null);
490
488
  function addListener(fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) {
491
489
  if (defer) fn = defer(fn);
492
490
  const cb = (e) => {
@@ -615,7 +613,6 @@ var init_value = __esm({
615
613
  init_core();
616
614
  init_core();
617
615
  init_default();
618
- init_signal();
619
616
  directive.value = (el, [getValue, setValue], state) => {
620
617
  const update = el.type === "text" || el.type === "" ? (value) => el.setAttribute("value", el.value = value == null ? "" : value) : el.tagName === "TEXTAREA" || el.type === "text" || el.type === "" ? (value, from, to) => (
621
618
  // we retain selection in input
@@ -631,7 +628,7 @@ var init_value = __esm({
631
628
  if (el.type?.startsWith("select")) sprae(el, state);
632
629
  const handleChange = el.type === "checkbox" ? (e) => setValue(state, el.checked) : el.type === "select-multiple" ? (e) => setValue(state, [...el.selectedOptions].map((o) => o.value)) : (e) => setValue(state, el.value);
633
630
  el.oninput = el.onchange = handleChange;
634
- return effect(() => update(getValue(state)));
631
+ return () => update(getValue(state));
635
632
  };
636
633
  directive.value.parse = (expr) => {
637
634
  let evaluate = [parse(expr)];
@@ -654,9 +651,8 @@ var init_value = __esm({
654
651
  var init_fx = __esm({
655
652
  "directive/fx.js"() {
656
653
  init_core();
657
- init_signal();
658
654
  directive.fx = (el, evaluate, state) => {
659
- return effect(() => evaluate(state));
655
+ return () => evaluate(state);
660
656
  };
661
657
  }
662
658
  });
@@ -691,12 +687,11 @@ var data_exports = {};
691
687
  var init_data = __esm({
692
688
  "directive/data.js"() {
693
689
  init_core();
694
- init_signal();
695
690
  directive["data"] = (el, evaluate, state) => {
696
- return effect(() => {
691
+ return () => {
697
692
  let value = evaluate(state);
698
693
  for (let key in value) el.dataset[key] = value[key];
699
- });
694
+ };
700
695
  };
701
696
  }
702
697
  });
@@ -707,12 +702,11 @@ var init_aria = __esm({
707
702
  "directive/aria.js"() {
708
703
  init_core();
709
704
  init_default();
710
- init_signal();
711
705
  directive["aria"] = (el, evaluate, state) => {
712
706
  const update = (value) => {
713
707
  for (let key in value) attr(el, "aria-" + dashcase(key), value[key] == null ? null : value[key] + "");
714
708
  };
715
- return effect(() => update(evaluate(state)));
709
+ return () => update(evaluate(state));
716
710
  };
717
711
  }
718
712
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../signal.js", "../store.js", "../core.js", "../directive/if.js", "../directive/each.js", "../directive/ref.js", "../directive/with.js", "../directive/html.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/default.js", "../directive/value.js", "../directive/fx.js", "../sprae.js", "../directive/data.js", "../directive/aria.js", "../sprae.umd.cjs"],
4
- "sourcesContent": ["// ulive copy, stable minimal implementation\nlet current, batched;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = new Set;\n try { fn(); }\n finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n },\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n\n// signals adapter - allows switching signals implementation and not depend on core\n\nexport function use(s) {\n signal = s.signal\n effect = s.effect\n computed = s.computed\n batch = s.batch || (fn => fn())\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, effect, batch, untracked } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('length');\n\n// object store is not lazy\nexport default function store(values, parent) {\n if (!values) return values\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // redirect for optimized array store\n if (Array.isArray(values)) return list(values)\n\n // ignore non-objects or custom objects\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : (signals[key]?.valueOf()),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? (++_len.value), 1), // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n // subscribe to length when object is spread\n _len.value\n return Reflect.ownKeys(signals);\n },\n })\n\n // init signals for values\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key)\n\n // getter turns into computed\n if (desc?.get) {\n // stash setter\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n }\n else {\n // init blank signal - make sure we don't take prototype one\n signals[key] = undefined\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 }\n\n// array store - signals are lazy since arrays can be very large & expensive\nexport function list(values) {\n // track last accessed property to find out if .length was directly accessed from expression or via .push/etc method\n let lastProp\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // .length signal is stored separately, since it cannot be replaced on array\n let _len = signal(values.length),\n // gotta fill with null since proto methods like .reduce may fail\n signals = Array(values.length).fill();\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get(_, key) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof key === 'symbol') return key === _change ? _len : key === _signals ? signals : signals[key]\n\n // console.log('get', key)\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut[lastProp] ? _len.peek() : _len.value;\n\n lastProp = key;\n\n if (signals[key]) return signals[key].valueOf()\n\n // I hope reading values here won't diverge from signals\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value\n },\n\n set(_, key, v) {\n // console.log('set', key, v)\n // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v, l = signals.length; i < l; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n return true\n }\n\n set(signals, key, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1),\n\n })\n\n return state\n}\n\n// set/update signal value\nfunction set(signals, key, v) {\n let s = signals[key]\n\n // untracked\n if (key[0] === '_') signals[key] = v\n // new property\n else if (!s) {\n // preserve signal value as is\n signals[key] = s = v?.peek ? v : signal(store(v))\n }\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === s.peek());\n // stashed _set for value with getter/setter\n else if (s._set) s._set(v)\n // patch array\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek()\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i]\n cur.length = l // forces deleting tail signals\n })\n })\n else {\n s.value = v\n }\n }\n // .x = y\n else {\n s.value = store(v)\n }\n}\n\n// delete signal\nfunction del(signals, key) {\n const s = signals[key], del = s[Symbol.dispose]\n if (del) delete s[Symbol.dispose]\n delete signals[key]\n del?.()\n}\n", "import { use } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\n// reserved directives - order matters!\nexport const directive = {};\n\n// every element that's in cache === directly spraed and un subsequent sprae is just updated (like each)\nexport const memo = new WeakMap();\n\n// sprae element: apply directives\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by :each with new objects with old keys needs an update\n if (memo.has(el)) {\n // we rewrite signals instead of update, because user should have what he provided\n return Object.assign(memo.get(el), values)\n }\n\n // take over existing state instead of creating clone\n const state = store(values || {}), disposes = []\n\n init(el);\n\n // if element was spraed by :with or :each instruction - skip, otherwise save\n if (!memo.has(el)) memo.set(el, state);\n\n // disposer unspraes all internal elements\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n }\n\n return state;\n\n function init(el, parent = el.parentNode) {\n if (!el.childNodes) return // ignore text nodes, comments etc\n\n // init generic-name attributes second\n for (let i = 0; i < el.attributes?.length;) {\n let attr = el.attributes[i];\n\n if (attr.name[0] === ':') {\n el.removeAttribute(attr.name);\n\n // multiple attributes like :id:for=\"\"\n let names = attr.name.slice(1).split(':')\n\n // NOTE: secondary directives don't stop flow nor extend state, so no need to check\n for (let name of names) {\n let dir = directive[name] || directive.default\n let evaluate = (dir.parse || parse)(attr.value)\n let dispose = dir(el, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n\n // stop if element was spraed by internal directive\n if (memo.has(el)) return el[_dispose] && disposes.push(el[_dispose])\n\n // stop if element is skipped (detached) like in case of :if or :each\n if (el.parentNode !== parent) return\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child, el);\n };\n}\n\n\n// compiler\nconst evalMemo = {};\nexport const parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n // runtime errors\n return evalMemo[expr] = fn\n}\n\n// wrapped call\nexport const err = (e, dir, expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\nexport let compile\n\n// configure signals/compile\n// it's more compact than using sprae.signal = signal etc.\nsprae.use = s => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n}\n\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true),\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) }\n }\n}\n", "import sprae, { directive, memo, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling,\n holder = document.createTextNode(''),\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n memo.set(ifEl, null) // mark all el as fake-spraed, because we have to sprae for real on insert\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null)\n }\n\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n curEl?.remove()\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n memo.get(curEl) === null && memo.delete(curEl) // remove fake memo to sprae as new\n sprae(curEl, state)\n }\n }\n });\n};\n", "import sprae, { directive, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect, untracked, computed } from '../signal.js';\n\n\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n // we need :if to be able to replace holder instead of tpl for :if :each case\n const holder = (document.createTextNode(\"\"));\n tpl.replaceWith(holder);\n\n // we re-create items any time new items are produced\n let cur, keys, prevl = 0\n\n // separate computed effect reduces number of needed updates for the effect\n const items = computed(() => {\n keys = null\n let items = evaluate(state)\n if (typeof items === \"number\") items = Array.from({ length: items }, (_, i) => i + 1)\n if (items?.constructor === Object) keys = Object.keys(items), items = Object.values(items)\n return items || []\n })\n\n const update = () => {\n // NOTE: untracked avoids rerendering full list whenever internal items or props change\n untracked(() => {\n let i = 0, newItems = items.value, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !(cur[_change])) {\n for (let s of cur[_signals] || []) { s[Symbol.dispose]() }\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) {\n cur.length = newl\n }\n // update, append, init\n else {\n // init\n if (!cur) {\n cur = newItems\n }\n // update\n else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i]\n }\n }\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, scope);\n\n // signal/holder disposal removes element\n ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {\n el[Symbol.dispose](), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n }\n\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just on init) since preact unsubscribes unused signals\n items.value[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned) {\n update()\n queueMicrotask(() => (planned && update(), planned = 0))\n } else planned++\n })\n}\n\n\n// redefine parser to exclude `[a in] b`\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n\n return [itemVar, idxVar, parse(itemsExpr)]\n}\n", "import { directive } from \"../core.js\";\nimport { _change, _signals } from \"../store.js\";\n\n// ref must be last within primaries, since that must be skipped by :each, but before secondaries\ndirective.ref = (el, expr, state) => {\n state[expr] = el\n}\n\ndirective.ref.parse = expr => expr\n", "import sprae, { directive } from \"../core.js\";\nimport store, { _signals } from '../store.js';\nimport { effect } from \"../signal.js\";\n\ndirective.with = (el, evaluate, rootState) => {\n let state\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState))\n })\n};\n", "import sprae, { directive } from \"../core.js\";\n\ndirective.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n\n if (!tpl) return\n\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n};\n", "import { directive, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set text content\ndirective.text = (el, evaluate, state) => {\n // <template :text=\"a\"/> or previously initialized template\n if (el.content) el.replaceWith(el = frag(el).childNodes[0])\n\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.class = (el, evaluate, state) => {\n let cur = new Set\n return effect(() => {\n let v = evaluate(state);\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n });\n};\n", "import { directive, err } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set generic property directive\ndirective.default = (target, evaluate, state, name) => {\n // simple prop\n if (!name.startsWith('on')) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value)\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n const ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // single event\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]))\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n const nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return effect(() => (\n startFn = evaluate(state),\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n ))\n\n // add listener with the context\n function addListener(fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn)\n\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n};\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n\n throttle(ctx, limit) { ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108); },\n debounce(ctx, wait) { ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108); },\n\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char,\n};\n\n// key testers\nconst keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key),\n};\n\n// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i?'-':'') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { directive, parse } from \"../core.js\";\nimport { attr } from './default.js';\nimport { effect } from \"../signal.js\";\n\n// connect expr to element value\ndirective.value = (el, [getValue, setValue], state) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // select options must be initialized before calling an update\n if (el.type?.startsWith('select')) sprae(el, state)\n\n // bind ui back to value\n const handleChange = el.type === 'checkbox' ? e => setValue(state, el.checked) : el.type === 'select-multiple' ? e => setValue(state, [...el.selectedOptions].map(o => o.value)) : e => setValue(state, el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually - it saves 5 loc\n\n return effect(() => update(getValue(state)));\n};\n\ndirective.value.parse = expr => {\n let evaluate = [parse(expr)]\n // catch wrong assigns like `123 = arguments[1]`, `foo?.bar = arguments[1]`\n try {\n const set = parse(`${expr}=__;`);\n // FIXME: if there's a simpler way to set value in justin?\n evaluate.push((state, value) => {\n state.__ = value\n let result = set(state, value)\n delete state.__\n return result\n })\n }\n catch (e) { }\n return evaluate\n}\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\n};\n", "import sprae from './core.js'\n\n// default directives\nimport './directive/if.js'\nimport './directive/each.js'\nimport './directive/ref.js'\nimport './directive/with.js'\nimport './directive/html.js'\nimport './directive/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\n\n// default compiler (indirect new Function to avoid detector)\nsprae.use({ compile: expr => sprae.constructor(`with (arguments[0]) { return ${expr} };`) })\n\nexport default sprae\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective['data'] = (el, evaluate, state) => {\n return effect(() => {\n let value = evaluate(state)\n for (let key in value) el.dataset[key] = value[key];\n })\n}\n", "import { directive } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\nimport { effect } from \"../signal.js\";\n\ndirective['aria'] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '');\n }\n return effect(() => update(evaluate(state)))\n}\n", "// autonomous standalone sprae version - expected to run via CDN, CJS or AMD\n\nconst { default: sprae } = require(\"./sprae.js\");\n\n// include everything\nrequire('./directive/data.js');\nrequire('./directive/aria.js');\nrequire('./directive/html.js');\n\n// expose global\nmodule.exports = sprae\n\n// autoinit if wanted\nconst init = document.currentScript?.getAttribute('init') || null\nif (init) sprae(document.documentElement, JSON.parse(init));\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// ulive copy, stable minimal implementation\nlet current, batched;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = new Set;\n try { fn(); }\n finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n },\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n\n// signals adapter - allows switching signals implementation and not depend on core\n\nexport function use(s) {\n signal = s.signal\n effect = s.effect\n computed = s.computed\n batch = s.batch || (fn => fn())\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, batch, untracked } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('length');\n\n// object store is not lazy\nexport default function store(values, parent) {\n if (!values) return values\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // redirect for optimized array store\n if (Array.isArray(values)) return list(values)\n\n // ignore non-objects or custom objects\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : (signals[key]?.valueOf()),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? (++_len.value), 1), // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n // subscribe to length when object is spread\n _len.value\n return Reflect.ownKeys(signals);\n },\n })\n\n // init signals for values\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key)\n\n // getter turns into computed\n if (desc?.get) {\n // stash setter\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n }\n else {\n // init blank signal - make sure we don't take prototype one\n signals[key] = undefined\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 }\n\n// array store - signals are lazy since arrays can be very large & expensive\nexport function list(values) {\n // track last accessed property to find out if .length was directly accessed from expression or via .push/etc method\n let lastProp\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // .length signal is stored separately, since it cannot be replaced on array\n let _len = signal(values.length),\n // gotta fill with null since proto methods like .reduce may fail\n signals = Array(values.length).fill();\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get(_, key) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof key === 'symbol') return key === _change ? _len : key === _signals ? signals : signals[key]\n\n // console.log('get', key)\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut[lastProp] ? _len.peek() : _len.value;\n\n lastProp = key;\n\n if (signals[key]) return signals[key].valueOf()\n\n // I hope reading values here won't diverge from signals\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value\n },\n\n set(_, key, v) {\n // console.log('set', key, v)\n // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v, l = signals.length; i < l; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n return true\n }\n\n set(signals, key, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1),\n\n })\n\n return state\n}\n\n// set/update signal value\nfunction set(signals, key, v) {\n let s = signals[key]\n\n // untracked\n if (key[0] === '_') signals[key] = v\n // new property\n else if (!s) {\n // preserve signal value as is\n signals[key] = s = v?.peek ? v : signal(store(v))\n }\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === s.peek());\n // stashed _set for value with getter/setter\n else if (s._set) s._set(v)\n // patch array\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek()\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i]\n cur.length = l // forces deleting tail signals\n })\n })\n else {\n s.value = v\n }\n }\n // .x = y\n else {\n s.value = store(v)\n }\n}\n\n// delete signal\nfunction del(signals, key) {\n const s = signals[key], del = s[Symbol.dispose]\n if (del) delete s[Symbol.dispose]\n delete signals[key]\n del?.()\n}\n", "import { use, effect } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\n\n// reserved directives - order matters!\nexport const directive = {};\n\n// every element that's in cache === directly spraed and un subsequent sprae is just updated (like each)\nexport const memo = new WeakMap();\n\n// sprae element: apply directives\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by :each with new objects with old keys needs an update\n if (memo.has(el)) {\n // we rewrite signals instead of update, because user should have what he provided\n return Object.assign(memo.get(el), values)\n }\n\n // take over existing state instead of creating clone\n const state = store(values || {}), disposes = []\n\n init(el);\n\n // if element was spraed by :with or :each instruction - skip, otherwise save\n if (!memo.has(el)) memo.set(el, state);\n\n // disposer unspraes all internal elements\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n el[_dispose] = null;\n }\n\n return state;\n\n function init(el, parent = el.parentNode) {\n if (!el.childNodes) return // ignore text nodes, comments etc\n\n // init generic-name attributes second\n for (let i = 0; i < el.attributes?.length;) {\n let attr = el.attributes[i];\n\n if (attr.name[0] === ':') {\n el.removeAttribute(attr.name);\n\n // multiple attributes like :id:for=\"\"\n let names = attr.name.slice(1).split(':')\n\n for (let name of names) {\n let dir = directive[name] || directive.default\n let evaluate = (dir.parse || parse)(attr.value)\n let fn = dir(el, evaluate, state, name);\n if (fn) disposes.push(effect(fn))\n disposes.push(() => el.setAttributeNode(attr)) // recover attribute\n }\n\n // stop if element was spraed by internal directive\n if (memo.has(el)) return el[_dispose] && disposes.push(el[_dispose])\n\n // stop if element is skipped (detached) like in case of :if or :each\n if (el.parentNode !== parent) return\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child, el);\n };\n}\n\n\n// parse expression into evaluator fn\nconst evalMemo = {};\nexport const parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n // runtime errors\n return evalMemo[expr] = fn\n}\n\n// wrapped call\nexport const err = (e, dir, expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\nexport let compile\n\n// configure signals/compile\n// it's more compact than using sprae.signal = signal etc.\nsprae.use = s => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n}\n\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true),\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n setAttributeNode() { }\n }\n}\n", "import sprae, { directive, memo, frag } from \"../core.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling,\n holder = document.createTextNode(''),\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n memo.set(ifEl, null) // mark all el as fake-spraed, because we have to sprae for real on insert\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null)\n }\n\n return () => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements to avoid internal effects from triggering on value changes when element's not matched\n if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n memo.get(curEl) === null && memo.delete(curEl) // remove fake memo to sprae as new\n sprae(curEl, state)\n }\n }\n };\n};\n", "import sprae, { directive, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { untracked, computed } from '../signal.js';\n\n\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n // we need :if to be able to replace holder instead of tpl for :if :each case\n const holder = (document.createTextNode(\"\"));\n tpl.replaceWith(holder);\n\n // we re-create items any time new items are produced\n let cur, keys, prevl = 0\n\n // separate computed effect reduces number of needed updates for the effect\n const items = computed(() => {\n keys = null\n let items = evaluate(state)\n if (typeof items === \"number\") items = Array.from({ length: items }, (_, i) => i + 1)\n if (items?.constructor === Object) keys = Object.keys(items), items = Object.values(items)\n return items || []\n })\n\n const update = () => {\n // NOTE: untracked avoids rerendering full list whenever internal items or props change\n untracked(() => {\n let i = 0, newItems = items.value, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !(cur[_change])) {\n for (let s of cur[_signals] || []) { s[Symbol.dispose]() }\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) {\n cur.length = newl\n }\n // update, append, init\n else {\n // init\n if (!cur) {\n cur = newItems\n }\n // update\n else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i]\n }\n }\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, scope);\n\n // signal/holder disposal removes element\n ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n }\n\n let planned = 0\n return () => {\n // subscribe to items change (.length) - we do it every time (not just on init) since preact unsubscribes unused signals\n items.value[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned) {\n update()\n queueMicrotask(() => (planned && update(), planned = 0))\n } else planned++\n }\n}\n\n\n// redefine parser to exclude `[a in] b`\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n\n return [itemVar, idxVar, parse(itemsExpr)]\n}\n", "import { directive } from \"../core.js\";\nimport { _change, _signals } from \"../store.js\";\n\n// ref must be last within primaries, since that must be skipped by :each, but before secondaries\ndirective.ref = (el, expr, state) => {\n state[expr] = el\n}\n\ndirective.ref.parse = expr => expr\n", "import sprae, { directive } from \"../core.js\";\nimport store, { _signals } from '../store.js';\n\ndirective.with = (el, evaluate, rootState) => {\n let state\n return () => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState))\n }\n};\n", "import sprae, { directive } from \"../core.js\";\n\ndirective.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n\n if (!tpl) return\n\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n};\n", "import { directive, frag } from \"../core.js\";\n\n// set text content\ndirective.text = (el, evaluate, state) => {\n // <template :text=\"a\"/> or previously initialized template\n if (el.content) el.replaceWith(el = frag(el).childNodes[0])\n\n return () => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n };\n};\n", "import { directive } from \"../core.js\";\n\ndirective.class = (el, evaluate, state) => {\n let cur = new Set\n return () => {\n let v = evaluate(state);\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n };\n};\n", "import { directive } from \"../core.js\";\n\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n\n return () => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n };\n};\n", "import { directive, err } from \"../core.js\";\n\n// set generic property directive\ndirective.default = (target, evaluate, state, name) => {\n // simple prop\n if (!name.startsWith('on')) return () => {\n let value = evaluate(state);\n if (name) attr(target, name, value)\n else for (let key in value) attr(target, dashcase(key), value[key]);\n };\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n const ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // single event\n if (ctxs.length == 1) return () => addListener(evaluate(state), ctxs[0])\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n const nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return () => (\n startFn = evaluate(state),\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n )\n\n // add listener with the context\n function addListener(fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn)\n\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n};\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n\n throttle(ctx, limit) { ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108); },\n debounce(ctx, wait) { ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108); },\n\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char,\n};\n\n// key testers\nconst keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key),\n};\n\n// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { directive, parse } from \"../core.js\";\nimport { attr } from './default.js';\n\n// connect expr to element value\ndirective.value = (el, [getValue, setValue], state) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // select options must be initialized before calling an update\n if (el.type?.startsWith('select')) sprae(el, state)\n\n // bind ui back to value\n const handleChange = el.type === 'checkbox' ? e => setValue(state, el.checked) : el.type === 'select-multiple' ? e => setValue(state, [...el.selectedOptions].map(o => o.value)) : e => setValue(state, el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually - it saves 5 loc\n\n return () => update(getValue(state));\n};\n\ndirective.value.parse = expr => {\n let evaluate = [parse(expr)]\n // catch wrong assigns like `123 = arguments[1]`, `foo?.bar = arguments[1]`\n try {\n const set = parse(`${expr}=__;`);\n // FIXME: if there's a simpler way to set value in justin?\n evaluate.push((state, value) => {\n state.__ = value\n let result = set(state, value)\n delete state.__\n return result\n })\n }\n catch (e) { }\n return evaluate\n}\n", "import { directive } from \"../core.js\";\n\ndirective.fx = (el, evaluate, state) => {\n return () => evaluate(state);\n};\n", "import sprae from './core.js'\n\n// default directives\nimport './directive/if.js'\nimport './directive/each.js'\nimport './directive/ref.js'\nimport './directive/with.js'\nimport './directive/html.js'\nimport './directive/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\n\n// default compiler (indirect new Function to avoid detector)\nsprae.use({ compile: expr => sprae.constructor(`with (arguments[0]) { return ${expr} };`) })\n\nexport default sprae\n", "import { directive } from \"../core.js\";\n\ndirective['data'] = (el, evaluate, state) => {\n return () => {\n let value = evaluate(state)\n for (let key in value) el.dataset[key] = value[key];\n }\n}\n", "import { directive } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndirective['aria'] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '');\n }\n return () => update(evaluate(state))\n}\n", "// autonomous standalone sprae version - expected to run via CDN, CJS or AMD\n\nconst { default: sprae } = require(\"./sprae.js\");\n\n// include everything\nrequire('./directive/data.js');\nrequire('./directive/aria.js');\nrequire('./directive/html.js');\n\n// expose global\nmodule.exports = sprae\n\n// autoinit if wanted\nconst init = document.currentScript?.getAttribute('init') || null\nif (init) sprae(document.documentElement, JSON.parse(init));\n"],
5
+ "mappings": "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",
6
6
  "names": ["del", "init", "el", "attr", "keys", "items", "v", "target", "set", "sprae"]
7
7
  }
@@ -1,5 +1,5 @@
1
- (function(C,g){typeof exports=="object"&&typeof module=="object"?module.exports=g():typeof define=="function"&&define.amd?define("sprae",[],g):typeof exports=="object"?exports.sprae=g():C.sprae=g()})(typeof self<"u"?self:typeof globalThis<"u"?globalThis:void 0,()=>{var C={},g={exports:C},B=Object.defineProperty,fe=Object.getOwnPropertyDescriptor,V=Object.getOwnPropertyNames,de=Object.prototype.hasOwnProperty,p=(e,r)=>function(){return e&&(r=(0,e[V(e)[0]])(e=0)),r},pe=(e,r)=>{for(var t in r)B(e,t,{get:r[t],enumerable:!0})},ye=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of V(r))!de.call(e,s)&&s!==t&&B(e,s,{get:()=>r[s],enumerable:!(i=fe(r,s))||i.enumerable});return e},he=e=>ye(B({},"__esModule",{value:!0}),e);function me(e){P=e.signal,h=e.effect,I=e.computed,J=e.batch||(r=>r()),R=e.untracked||J}var A,E,P,h,I,J,R,b=p({"signal.js"(){P=(e,r,t=new Set)=>(r={get value(){return A?.deps.push(t.add(A)),e},set value(i){if(i!==e){e=i;for(let s of t)E?E.add(s):s()}},peek(){return e}},r.toJSON=r.then=r.toString=r.valueOf=()=>r.value,r),h=(e,r,t,i)=>(t=s=>{r?.call?.(),s=A,A=t;try{r=e()}finally{A=s}},i=t.deps=[],t(),s=>{for(r?.call?.();s=i.pop();)s.delete(t)}),I=(e,r=P(),t,i)=>(t={get value(){return i||(i=h(()=>r.value=e())),r.value},peek:r.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),J=e=>{let r=E;r||(E=new Set);try{e()}finally{if(!r){r=E,E=null;for(const t of r)t()}}},R=(e,r,t)=>(r=A,A=null,t=e(),A=r,t)}});function T(e,r){if(!e||e[w])return e;if(Array.isArray(e))return be(e);if(e.constructor!==Object||e[Symbol.toStringTag])return e;let t={...r?.[w]},i=P(Object.values(e).length);const s=new Proxy(t,{get:(o,n)=>n===W?i:n===w?t:t[n]?.valueOf(),set:(o,n,a,u)=>(u=t[n],H(t,n,a),u??++i.value,1),deleteProperty:(o,n)=>(t[n]&&(Y(t,n),i.value--),1),ownKeys(){return i.value,Reflect.ownKeys(t)}});for(let o in e){const n=Object.getOwnPropertyDescriptor(e,o);n?.get?(t[o]=I(n.get.bind(s)))._set=n.set?.bind(s):(t[o]=void 0,H(t,o,e[o]))}return s}function be(e){let r;if(e[w])return e;let t=P(e.length),i=Array(e.length).fill();const s=new Proxy(i,{get(o,n){if(typeof n=="symbol")return n===W?t:n===w?i:i[n];if(n==="length")return ee[r]?t.peek():t.value;if(r=n,i[n])return i[n].valueOf();if(n<i.length)return(i[n]=P(T(e[n]))).value},set(o,n,a){if(n==="length"){for(let u=a,_=i.length;u<_;u++)delete s[u];return t.value=i.length=a,!0}return H(i,n,a),n>=t.peek()&&(t.value=i.length=Number(n)+1),!0},deleteProperty:(o,n)=>(i[n]&&Y(i,n),1)});return s}function H(e,r,t){let i=e[r];if(r[0]==="_")e[r]=t;else if(!i)e[r]=i=t?.peek?t:P(T(t));else if(t!==i.peek())if(i._set)i._set(t);else if(Array.isArray(t)&&Array.isArray(i.peek())){const s=i.peek();s[W]?R(()=>{J(()=>{let o=0,n=t.length;for(;o<n;o++)s[o]=t[o];s.length=n})}):i.value=t}else i.value=T(t)}function Y(e,r){const t=e[r],i=t[Symbol.dispose];i&&delete t[Symbol.dispose],delete e[r],i?.()}var w,W,ee,q=p({"store.js"(){b(),w=Symbol("signals"),W=Symbol("length"),ee={push:1,pop:1,shift:1,unshift:1,splice:1}}});function x(e,r){if(!e?.childNodes)return;if(v.has(e))return Object.assign(v.get(e),r);const t=T(r||{}),i=[];return s(e),v.has(e)||v.set(e,t),e[F]=()=>{for(;i.length;)i.pop()();v.delete(e)},t;function s(o,n=o.parentNode){if(o.childNodes){for(let a=0;a<o.attributes?.length;){let u=o.attributes[a];if(u.name[0]===":"){o.removeAttribute(u.name);let _=u.name.slice(1).split(":");for(let S of _){let f=d[S]||d.default,l=(f.parse||D)(u.value),j=f(o,l,t,S);j&&i.push(j)}if(v.has(o))return o[F]&&i.push(o[F]);if(o.parentNode!==n)return}else a++}for(let a of[...o.childNodes])s(a,o)}}}var F,d,v,X,D,Z,te,L,m=p({"core.js"(){b(),q(),F=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),d={},v=new WeakMap,X={},D=(e,r,t)=>{if(t=X[e=e.trim()])return t;try{t=te(e)}catch(i){Z(i,r,e)}return X[e]=t},Z=(e,r,t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
1
+ (function(W,b){typeof exports=="object"&&typeof module=="object"?module.exports=b():typeof define=="function"&&define.amd?define("sprae",[],b):typeof exports=="object"?exports.sprae=b():W.sprae=b()})(typeof self<"u"?self:typeof globalThis<"u"?globalThis:void 0,()=>{var W={},b={exports:W},F=Object.defineProperty,fe=Object.getOwnPropertyDescriptor,V=Object.getOwnPropertyNames,de=Object.prototype.hasOwnProperty,p=(e,r)=>function(){return e&&(r=(0,e[V(e)[0]])(e=0)),r},pe=(e,r)=>{for(var t in r)F(e,t,{get:r[t],enumerable:!0})},ye=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of V(r))!de.call(e,s)&&s!==t&&F(e,s,{get:()=>r[s],enumerable:!(i=fe(r,s))||i.enumerable});return e},he=e=>ye(F({},"__esModule",{value:!0}),e);function me(e){k=e.signal,M=e.effect,I=e.computed,J=e.batch||(r=>r()),R=e.untracked||J}var x,N,k,M,I,J,R,B=p({"signal.js"(){k=(e,r,t=new Set)=>(r={get value(){return x?.deps.push(t.add(x)),e},set value(i){if(i!==e){e=i;for(let s of t)N?N.add(s):s()}},peek(){return e}},r.toJSON=r.then=r.toString=r.valueOf=()=>r.value,r),M=(e,r,t,i)=>(t=s=>{r?.call?.(),s=x,x=t;try{r=e()}finally{x=s}},i=t.deps=[],t(),s=>{for(r?.call?.();s=i.pop();)s.delete(t)}),I=(e,r=k(),t,i)=>(t={get value(){return i||(i=M(()=>r.value=e())),r.value},peek:r.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),J=e=>{let r=N;r||(N=new Set);try{e()}finally{if(!r){r=N,N=null;for(const t of r)t()}}},R=(e,r,t)=>(r=x,x=null,t=e(),x=r,t)}});function P(e,r){if(!e||e[_])return e;if(Array.isArray(e))return be(e);if(e.constructor!==Object||e[Symbol.toStringTag])return e;let t={...r?.[_]},i=k(Object.values(e).length);const s=new Proxy(t,{get:(o,n)=>n===E?i:n===_?t:t[n]?.valueOf(),set:(o,n,a,l)=>(l=t[n],H(t,n,a),l??++i.value,1),deleteProperty:(o,n)=>(t[n]&&(Y(t,n),i.value--),1),ownKeys(){return i.value,Reflect.ownKeys(t)}});for(let o in e){const n=Object.getOwnPropertyDescriptor(e,o);n?.get?(t[o]=I(n.get.bind(s)))._set=n.set?.bind(s):(t[o]=void 0,H(t,o,e[o]))}return s}function be(e){let r;if(e[_])return e;let t=k(e.length),i=Array(e.length).fill();const s=new Proxy(i,{get(o,n){if(typeof n=="symbol")return n===E?t:n===_?i:i[n];if(n==="length")return ee[r]?t.peek():t.value;if(r=n,i[n])return i[n].valueOf();if(n<i.length)return(i[n]=k(P(e[n]))).value},set(o,n,a){if(n==="length"){for(let l=a,v=i.length;l<v;l++)delete s[l];return t.value=i.length=a,!0}return H(i,n,a),n>=t.peek()&&(t.value=i.length=Number(n)+1),!0},deleteProperty:(o,n)=>(i[n]&&Y(i,n),1)});return s}function H(e,r,t){let i=e[r];if(r[0]==="_")e[r]=t;else if(!i)e[r]=i=t?.peek?t:k(P(t));else if(t!==i.peek())if(i._set)i._set(t);else if(Array.isArray(t)&&Array.isArray(i.peek())){const s=i.peek();s[E]?R(()=>{J(()=>{let o=0,n=t.length;for(;o<n;o++)s[o]=t[o];s.length=n})}):i.value=t}else i.value=P(t)}function Y(e,r){const t=e[r],i=t[Symbol.dispose];i&&delete t[Symbol.dispose],delete e[r],i?.()}var _,E,ee,q=p({"store.js"(){B(),_=Symbol("signals"),E=Symbol("length"),ee={push:1,pop:1,shift:1,unshift:1,splice:1}}});function j(e,r){if(!e?.childNodes)return;if(m.has(e))return Object.assign(m.get(e),r);const t=P(r||{}),i=[];return s(e),m.has(e)||m.set(e,t),e[$]=()=>{for(;i.length;)i.pop()();m.delete(e),e[$]=null},t;function s(o,n=o.parentNode){if(o.childNodes){for(let a=0;a<o.attributes?.length;){let l=o.attributes[a];if(l.name[0]===":"){o.removeAttribute(l.name);let v=l.name.slice(1).split(":");for(let A of v){let f=d[A]||d.default,u=(f.parse||C)(l.value),g=f(o,u,t,A);g&&i.push(M(g)),i.push(()=>o.setAttributeNode(l))}if(m.has(o))return o[$]&&i.push(o[$]);if(o.parentNode!==n)return}else a++}for(let a of[...o.childNodes])s(a,o)}}}var $,d,m,X,C,Z,te,D,h=p({"core.js"(){B(),q(),$=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),d={},m=new WeakMap,X={},C=(e,r,t)=>{if(t=X[e=e.trim()])return t;try{t=te(e)}catch(i){Z(i,r,e)}return X[e]=t},Z=(e,r,t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
2
2
 
3
3
  ${r}${t?`="${t}"
4
4
 
5
- `:""}`,expr:t})},x.use=e=>{e.signal&&me(e),e.compile&&(te=e.compile)},L=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],i=document.createTextNode(""),s=(r.append(i),[...r.childNodes]);return{childNodes:s,content:r,remove:()=>r.append(...s),replaceWith(o){o!==i&&(i.before(o),r.append(...s))},attributes:t,removeAttribute(o){t.splice(t.findIndex(n=>n.name===o),1)}}}}}),z,ve=p({"directive/if.js"(){m(),b(),z=Symbol("if"),d.if=(e,r,t)=>{let i=e.nextElementSibling,s=document.createTextNode(""),o,n,a;return e.replaceWith(s),n=e.content?L(e):e,v.set(n,null),i?.hasAttribute(":else")&&(i.removeAttribute(":else"),i.hasAttribute(":if")||(i.remove(),a=i.content?L(i):i,v.set(a,null))),h(()=>{const u=r(t)?n:e[z]?null:a;i&&(i[z]=u===n),o!=u&&(o?.remove(),(o=u)&&(s.before(o.content||o),v.get(o)===null&&v.delete(o),x(o,t)))})}}}),ge=p({"directive/each.js"(){m(),q(),b(),d.each=(e,[r,t,i],s)=>{const o=document.createTextNode("");e.replaceWith(o);let n,a,u=0;const _=I(()=>{a=null;let l=i(s);return typeof l=="number"&&(l=Array.from({length:l},(j,y)=>y+1)),l?.constructor===Object&&(a=Object.keys(l),l=Object.values(l)),l||[]}),S=()=>{R(()=>{var l,j;let y=0,O=_.value,$=O.length;if(n&&!n[W]){for(let k of n[w]||[])k[Symbol.dispose]();n=null,u=0}if($<u)n.length=$;else{if(!n)n=O;else for(;y<u;y++)n[y]=O[y];for(;y<$;y++){n[y]=O[y];let k=y,U=T({[r]:n[w]?.[k]||n[k],[t]:a?a[k]:k},s),N=e.content?L(e):e.cloneNode(!0);o.before(N.content||N),x(N,U),((j=n[l=w]||(n[l]=[]))[y]||(j[y]={}))[Symbol.dispose]=()=>{N[Symbol.dispose](),N.remove()}}}u=$})};let f=0;return h(()=>{_.value[W]?.value,f?f++:(S(),queueMicrotask(()=>(f&&S(),f=0)))})},d.each.parse=e=>{let[r,t]=e.split(/\s+in\s+/),[i,s="$"]=r.split(/\s*,\s*/);return[i,s,D(t)]}}}),_e=p({"directive/ref.js"(){m(),q(),d.ref=(e,r,t)=>{t[r]=e},d.ref.parse=e=>e}}),je=p({"directive/with.js"(){m(),q(),b(),d.with=(e,r,t)=>{let i;return h(()=>{let s=r(t);x(e,i?s:i=T(s,t))})}}}),We={},re=p({"directive/html.js"(){m(),d.html=(e,r,t)=>{let i=r(t);if(!i)return;let s=(i.content||i).cloneNode(!0);e.replaceChildren(s),x(e,t)}}}),we=p({"directive/text.js"(){m(),b(),d.text=(e,r,t)=>(e.content&&e.replaceWith(e=L(e).childNodes[0]),h(()=>{let i=r(t);e.textContent=i??""}))}}),xe=p({"directive/class.js"(){m(),b(),d.class=(e,r,t)=>{let i=new Set;return h(()=>{let s=r(t),o=new Set;s&&(typeof s=="string"?s.split(" ").map(n=>o.add(n)):Array.isArray(s)?s.map(n=>n&&o.add(n)):Object.entries(s).map(([n,a])=>a&&o.add(n)));for(let n of i)o.has(n)?o.delete(n):e.classList.remove(n);for(let n of i=o)e.classList.add(n)})}}}),Oe=p({"directive/style.js"(){m(),b(),d.style=(e,r,t)=>{let i=e.getAttribute("style");return h(()=>{let s=r(t);if(typeof s=="string")e.setAttribute("style",i+(i.endsWith(";")?"":"; ")+s);else{i&&e.setAttribute("style",i);for(let o in s)o[0]=="-"?e.style.setProperty(o,s[o]):e.style[o]=s[o]}})}}}),ie,c,K,ne,se,G,Q=p({"directive/default.js"(){m(),b(),d.default=(e,r,t,i)=>{if(!i.startsWith("on"))return h(()=>{let f=r(t);if(i)K(e,i,f);else for(let l in f)K(e,G(l),f[l])});const s=i.split("..").map(f=>{let l={evt:"",target:e,test:()=>!0};return l.evt=(f.startsWith("on")?f.slice(2):f).replace(/\.(\w+)?-?([-\w]+)?/g,(j,y,O="")=>(l.test=ie[y]?.(l,...O.split("-"))||l.test,"")),l});if(s.length==1)return h(()=>S(r(t),s[0]));let o,n,a,u=0;const _=f=>{a=S(l=>(a(),n=f?.(l),(u=++u%s.length)?_(n):o&&_(o)),s[u])};return h(()=>(o=r(t),!a&&_(o),()=>o=null));function S(f,{evt:l,target:j,test:y,defer:O,stop:$,prevent:k,immediate:U,...N}){O&&(f=O(f));const ce=M=>{try{y(M)&&($&&(U?M.stopImmediatePropagation():M.stopPropagation()),k&&M.preventDefault(),f?.(M))}catch(Te){Z(Te,`:on${l}`,f)}};return j.addEventListener(l,ce,N),()=>j.removeEventListener(l,ce,N)}},ie={prevent(e){e.prevent=!0},stop(e){e.stop=!0},immediate(e){e.immediate=!0},once(e){e.once=!0},passive(e){e.passive=!0},capture(e){e.capture=!0},window(e){e.target=window},document(e){e.target=document},throttle(e,r){e.defer=t=>ne(t,r?Number(r)||0:108)},debounce(e,r){e.defer=t=>se(t,r?Number(r)||0:108)},outside:e=>r=>{let t=e.target;return!(t.contains(r.target)||r.target.isConnected===!1||t.offsetWidth<1&&t.offsetHeight<1)},self:e=>r=>r.target===e.target,ctrl:(e,...r)=>t=>c.ctrl(t)&&r.every(i=>c[i]?c[i](t):t.key===i),shift:(e,...r)=>t=>c.shift(t)&&r.every(i=>c[i]?c[i](t):t.key===i),alt:(e,...r)=>t=>c.alt(t)&&r.every(i=>c[i]?c[i](t):t.key===i),meta:(e,...r)=>t=>c.meta(t)&&r.every(i=>c[i]?c[i](t):t.key===i),arrow:()=>c.arrow,enter:()=>c.enter,esc:()=>c.esc,tab:()=>c.tab,space:()=>c.space,delete:()=>c.delete,digit:()=>c.digit,letter:()=>c.letter,char:()=>c.char},c={ctrl:e=>e.ctrlKey||e.key==="Control"||e.key==="Ctrl",shift:e=>e.shiftKey||e.key==="Shift",alt:e=>e.altKey||e.key==="Alt",meta:e=>e.metaKey||e.key==="Meta"||e.key==="Command",arrow:e=>e.key.startsWith("Arrow"),enter:e=>e.key==="Enter",esc:e=>e.key.startsWith("Esc"),tab:e=>e.key==="Tab",space:e=>e.key==="\xA0"||e.key==="Space"||e.key===" ",delete:e=>e.key==="Delete"||e.key==="Backspace",digit:e=>/^\d$/.test(e.key),letter:e=>/^\p{L}$/gu.test(e.key),char:e=>/^\S$/.test(e.key)},K=(e,r,t)=>{t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},ne=(e,r)=>{let t,i,s=o=>{t=!0,setTimeout(()=>{if(t=!1,i)return i=!1,s(o),e(o)},r)};return o=>t?i=!0:(s(o),e(o))},se=(e,r)=>{let t;return i=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(i)},r)}},G=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase())}}),Ae=p({"directive/value.js"(){m(),m(),Q(),b(),d.value=(e,[r,t],i)=>{const s=e.type==="text"||e.type===""?n=>e.setAttribute("value",e.value=n??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(n,a,u)=>(a=e.selectionStart,u=e.selectionEnd,e.setAttribute("value",e.value=n??""),a&&e.setSelectionRange(a,u)):e.type==="checkbox"?n=>(e.checked=n,K(e,"checked",n)):e.type==="select-one"?n=>{for(let a of e.options)a.value==n?a.setAttribute("selected",""):a.removeAttribute("selected");e.value=n}:e.type==="select-multiple"?n=>{for(let a of e.options)a.removeAttribute("selected");for(let a of n)e.querySelector(`[value="${a}"]`).setAttribute("selected","")}:n=>e.value=n;e.type?.startsWith("select")&&x(e,i);const o=e.type==="checkbox"?n=>t(i,e.checked):e.type==="select-multiple"?n=>t(i,[...e.selectedOptions].map(a=>a.value)):n=>t(i,e.value);return e.oninput=e.onchange=o,h(()=>s(r(i)))},d.value.parse=e=>{let r=[D(e)];try{const t=D(`${e}=__;`);r.push((i,s)=>{i.__=s;let o=t(i,s);return delete i.__,o})}catch{}return r}}}),Se=p({"directive/fx.js"(){m(),b(),d.fx=(e,r,t)=>h(()=>r(t))}}),oe={};pe(oe,{default:()=>ae});var ae,ke=p({"sprae.js"(){m(),ve(),ge(),_e(),je(),re(),we(),xe(),Oe(),Ae(),Se(),Q(),x.use({compile:e=>x.constructor(`with (arguments[0]) { return ${e} };`)}),ae=x}}),$e={},Ne=p({"directive/data.js"(){m(),b(),d.data=(e,r,t)=>h(()=>{let i=r(t);for(let s in i)e.dataset[s]=i[s]})}}),Ce={},Pe=p({"directive/aria.js"(){m(),Q(),b(),d.aria=(e,r,t)=>{const i=s=>{for(let o in s)K(e,"aria-"+G(o),s[o]==null?null:s[o]+"")};return h(()=>i(r(t)))}}}),{default:le}=(ke(),he(oe));Ne(),Pe(),re(),g.exports=le;var ue=document.currentScript?.getAttribute("init")||null;if(ue&&le(document.documentElement,JSON.parse(ue)),typeof g.exports=="object"&&typeof C=="object"){var Ee=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Object.getOwnPropertyNames(r))!Object.prototype.hasOwnProperty.call(e,s)&&s!==t&&Object.defineProperty(e,s,{get:()=>r[s],enumerable:!(i=Object.getOwnPropertyDescriptor(r,s))||i.enumerable});return e};g.exports=Ee(g.exports,C)}return g.exports});
5
+ `:""}`,expr:t})},j.use=e=>{e.signal&&me(e),e.compile&&(te=e.compile)},D=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],i=document.createTextNode(""),s=(r.append(i),[...r.childNodes]);return{childNodes:s,content:r,remove:()=>r.append(...s),replaceWith(o){o!==i&&(i.before(o),r.append(...s))},attributes:t,removeAttribute(o){t.splice(t.findIndex(n=>n.name===o),1)},setAttributeNode(){}}}}}),z,ve=p({"directive/if.js"(){h(),z=Symbol("if"),d.if=(e,r,t)=>{let i=e.nextElementSibling,s=document.createTextNode(""),o,n,a;return e.replaceWith(s),n=e.content?D(e):e,m.set(n,null),i?.hasAttribute(":else")&&(i.removeAttribute(":else"),i.hasAttribute(":if")||(i.remove(),a=i.content?D(i):i,m.set(a,null))),()=>{const l=r(t)?n:e[z]?null:a;i&&(i[z]=l===n),o!=l&&(o&&(o.remove(),o[Symbol.dispose]?.()),(o=l)&&(s.before(o.content||o),m.get(o)===null&&m.delete(o),j(o,t)))}}}}),ge=p({"directive/each.js"(){h(),q(),B(),d.each=(e,[r,t,i],s)=>{const o=document.createTextNode("");e.replaceWith(o);let n,a,l=0;const v=I(()=>{a=null;let u=i(s);return typeof u=="number"&&(u=Array.from({length:u},(g,y)=>y+1)),u?.constructor===Object&&(a=Object.keys(u),u=Object.values(u)),u||[]}),A=()=>{R(()=>{var u,g;let y=0,w=v.value,T=w.length;if(n&&!n[E]){for(let O of n[_]||[])O[Symbol.dispose]();n=null,l=0}if(T<l)n.length=T;else{if(!n)n=w;else for(;y<l;y++)n[y]=w[y];for(;y<T;y++){n[y]=w[y];let O=y,U=P({[r]:n[_]?.[O]||n[O],[t]:a?a[O]:O},s),S=e.content?D(e):e.cloneNode(!0);o.before(S.content||S),j(S,U),((g=n[u=_]||(n[u]=[]))[y]||(g[y]={}))[Symbol.dispose]=()=>{S[Symbol.dispose]?.(),S.remove()}}}l=T})};let f=0;return()=>{v.value[E]?.value,f?f++:(A(),queueMicrotask(()=>(f&&A(),f=0)))}},d.each.parse=e=>{let[r,t]=e.split(/\s+in\s+/),[i,s="$"]=r.split(/\s*,\s*/);return[i,s,C(t)]}}}),_e=p({"directive/ref.js"(){h(),q(),d.ref=(e,r,t)=>{t[r]=e},d.ref.parse=e=>e}}),je=p({"directive/with.js"(){h(),q(),d.with=(e,r,t)=>{let i;return()=>{let s=r(t);j(e,i?s:i=P(s,t))}}}}),We={},re=p({"directive/html.js"(){h(),d.html=(e,r,t)=>{let i=r(t);if(!i)return;let s=(i.content||i).cloneNode(!0);e.replaceChildren(s),j(e,t)}}}),we=p({"directive/text.js"(){h(),d.text=(e,r,t)=>(e.content&&e.replaceWith(e=D(e).childNodes[0]),()=>{let i=r(t);e.textContent=i??""})}}),xe=p({"directive/class.js"(){h(),d.class=(e,r,t)=>{let i=new Set;return()=>{let s=r(t),o=new Set;s&&(typeof s=="string"?s.split(" ").map(n=>o.add(n)):Array.isArray(s)?s.map(n=>n&&o.add(n)):Object.entries(s).map(([n,a])=>a&&o.add(n)));for(let n of i)o.has(n)?o.delete(n):e.classList.remove(n);for(let n of i=o)e.classList.add(n)}}}}),Ae=p({"directive/style.js"(){h(),d.style=(e,r,t)=>{let i=e.getAttribute("style");return()=>{let s=r(t);if(typeof s=="string")e.setAttribute("style",i+(i.endsWith(";")?"":"; ")+s);else{i&&e.setAttribute("style",i);for(let o in s)o[0]=="-"?e.style.setProperty(o,s[o]):e.style[o]=s[o]}}}}}),ie,c,L,ne,se,G,Q=p({"directive/default.js"(){h(),d.default=(e,r,t,i)=>{if(!i.startsWith("on"))return()=>{let f=r(t);if(i)L(e,i,f);else for(let u in f)L(e,G(u),f[u])};const s=i.split("..").map(f=>{let u={evt:"",target:e,test:()=>!0};return u.evt=(f.startsWith("on")?f.slice(2):f).replace(/\.(\w+)?-?([-\w]+)?/g,(g,y,w="")=>(u.test=ie[y]?.(u,...w.split("-"))||u.test,"")),u});if(s.length==1)return()=>A(r(t),s[0]);let o,n,a,l=0;const v=f=>{a=A(u=>(a(),n=f?.(u),(l=++l%s.length)?v(n):o&&v(o)),s[l])};return()=>(o=r(t),!a&&v(o),()=>o=null);function A(f,{evt:u,target:g,test:y,defer:w,stop:T,prevent:O,immediate:U,...S}){w&&(f=w(f));const ce=K=>{try{y(K)&&(T&&(U?K.stopImmediatePropagation():K.stopPropagation()),O&&K.preventDefault(),f?.(K))}catch(Te){Z(Te,`:on${u}`,f)}};return g.addEventListener(u,ce,S),()=>g.removeEventListener(u,ce,S)}},ie={prevent(e){e.prevent=!0},stop(e){e.stop=!0},immediate(e){e.immediate=!0},once(e){e.once=!0},passive(e){e.passive=!0},capture(e){e.capture=!0},window(e){e.target=window},document(e){e.target=document},throttle(e,r){e.defer=t=>ne(t,r?Number(r)||0:108)},debounce(e,r){e.defer=t=>se(t,r?Number(r)||0:108)},outside:e=>r=>{let t=e.target;return!(t.contains(r.target)||r.target.isConnected===!1||t.offsetWidth<1&&t.offsetHeight<1)},self:e=>r=>r.target===e.target,ctrl:(e,...r)=>t=>c.ctrl(t)&&r.every(i=>c[i]?c[i](t):t.key===i),shift:(e,...r)=>t=>c.shift(t)&&r.every(i=>c[i]?c[i](t):t.key===i),alt:(e,...r)=>t=>c.alt(t)&&r.every(i=>c[i]?c[i](t):t.key===i),meta:(e,...r)=>t=>c.meta(t)&&r.every(i=>c[i]?c[i](t):t.key===i),arrow:()=>c.arrow,enter:()=>c.enter,esc:()=>c.esc,tab:()=>c.tab,space:()=>c.space,delete:()=>c.delete,digit:()=>c.digit,letter:()=>c.letter,char:()=>c.char},c={ctrl:e=>e.ctrlKey||e.key==="Control"||e.key==="Ctrl",shift:e=>e.shiftKey||e.key==="Shift",alt:e=>e.altKey||e.key==="Alt",meta:e=>e.metaKey||e.key==="Meta"||e.key==="Command",arrow:e=>e.key.startsWith("Arrow"),enter:e=>e.key==="Enter",esc:e=>e.key.startsWith("Esc"),tab:e=>e.key==="Tab",space:e=>e.key==="\xA0"||e.key==="Space"||e.key===" ",delete:e=>e.key==="Delete"||e.key==="Backspace",digit:e=>/^\d$/.test(e.key),letter:e=>/^\p{L}$/gu.test(e.key),char:e=>/^\S$/.test(e.key)},L=(e,r,t)=>{t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},ne=(e,r)=>{let t,i,s=o=>{t=!0,setTimeout(()=>{if(t=!1,i)return i=!1,s(o),e(o)},r)};return o=>t?i=!0:(s(o),e(o))},se=(e,r)=>{let t;return i=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(i)},r)}},G=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase())}}),Oe=p({"directive/value.js"(){h(),h(),Q(),d.value=(e,[r,t],i)=>{const s=e.type==="text"||e.type===""?n=>e.setAttribute("value",e.value=n??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(n,a,l)=>(a=e.selectionStart,l=e.selectionEnd,e.setAttribute("value",e.value=n??""),a&&e.setSelectionRange(a,l)):e.type==="checkbox"?n=>(e.checked=n,L(e,"checked",n)):e.type==="select-one"?n=>{for(let a of e.options)a.value==n?a.setAttribute("selected",""):a.removeAttribute("selected");e.value=n}:e.type==="select-multiple"?n=>{for(let a of e.options)a.removeAttribute("selected");for(let a of n)e.querySelector(`[value="${a}"]`).setAttribute("selected","")}:n=>e.value=n;e.type?.startsWith("select")&&j(e,i);const o=e.type==="checkbox"?n=>t(i,e.checked):e.type==="select-multiple"?n=>t(i,[...e.selectedOptions].map(a=>a.value)):n=>t(i,e.value);return e.oninput=e.onchange=o,()=>s(r(i))},d.value.parse=e=>{let r=[C(e)];try{const t=C(`${e}=__;`);r.push((i,s)=>{i.__=s;let o=t(i,s);return delete i.__,o})}catch{}return r}}}),Se=p({"directive/fx.js"(){h(),d.fx=(e,r,t)=>()=>r(t)}}),oe={};pe(oe,{default:()=>ae});var ae,ke=p({"sprae.js"(){h(),ve(),ge(),_e(),je(),re(),we(),xe(),Ae(),Oe(),Se(),Q(),j.use({compile:e=>j.constructor(`with (arguments[0]) { return ${e} };`)}),ae=j}}),$e={},Ne=p({"directive/data.js"(){h(),d.data=(e,r,t)=>()=>{let i=r(t);for(let s in i)e.dataset[s]=i[s]}}}),Ce={},Pe=p({"directive/aria.js"(){h(),Q(),d.aria=(e,r,t)=>{const i=s=>{for(let o in s)L(e,"aria-"+G(o),s[o]==null?null:s[o]+"")};return()=>i(r(t))}}}),{default:le}=(ke(),he(oe));Ne(),Pe(),re(),b.exports=le;var ue=document.currentScript?.getAttribute("init")||null;if(ue&&le(document.documentElement,JSON.parse(ue)),typeof b.exports=="object"&&typeof W=="object"){var Ee=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Object.getOwnPropertyNames(r))!Object.prototype.hasOwnProperty.call(e,s)&&s!==t&&Object.defineProperty(e,s,{get:()=>r[s],enumerable:!(i=Object.getOwnPropertyDescriptor(r,s))||i.enumerable});return e};b.exports=Ee(b.exports,W)}return b.exports});