sprae 11.2.0 → 11.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core.js CHANGED
@@ -29,29 +29,24 @@ export const dir = (name, create, p = parse) => directive[name] = (el, expr, sta
29
29
  * @returns {Object} The reactive state object associated with the element.
30
30
  */
31
31
  export default function sprae(el, values) {
32
- // text nodes, comments etc
33
- if (!el?.childNodes) return
34
-
35
32
  // repeated call can be caused by eg. :each with new objects with old keys
36
33
  if (el[_state]) return Object.assign(el[_state], values)
37
34
 
38
35
  // take over existing state instead of creating a clone
39
36
  const state = store(values || {}), offs = [], fx = []
40
37
 
41
- const init = el => {
42
- // ignore text nodes, comments etc
43
- if (!el.childNodes) return
44
-
45
- for (let i = 0; i < el.attributes?.length;) {
46
- let {name, value} = el.attributes[i], update, pfx = name[0] === ':' ? 1 : (name[0]==='s'&&name[1]==='-') ? 2 : 0
38
+ const init = (el, attrs=el.attributes) => {
39
+ // we iterate live collection (subsprae can init args)
40
+ if (attrs) for (let i = 0; i < attrs.length;) {
41
+ let {name, value} = attrs[i], pfx, update, dir
47
42
 
48
43
  // if we have parts meaning there's attr needs to be spraed
49
44
  // :id:name -> [,id,name]; s-text:id -> [,text,id]; ab-cd -> [ab-cd]
50
- if (pfx) {
45
+ if (pfx = name[0] === ':' ? 1 : (name[0]==='s' && name[1]==='-') ? 2 : 0) {
51
46
  el.removeAttribute(name);
52
47
 
53
48
  // multiple attributes like :id:for=""
54
- for (let dir of name.slice(pfx).split(':')) {
49
+ for (dir of name.slice(pfx).split(':')) {
55
50
  update = (directive[dir] || directive.default)(el, value, state, dir)
56
51
 
57
52
  // save & start effect
@@ -60,10 +55,11 @@ export default function sprae(el, values) {
60
55
  // stop after :each, :if, :with etc.
61
56
  if (el[_state]===null) return
62
57
  }
63
- } else i++;
58
+ } else i++
64
59
  }
65
60
 
66
- for (let child of [...el.childNodes]) init(child);
61
+ // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists
62
+ for (let child of el.childNodes) child.nodeType==1 && init(child)
67
63
  };
68
64
 
69
65
  init(el);
package/dist/sprae.js CHANGED
@@ -122,23 +122,21 @@ var _off = Symbol("off");
122
122
  var directive = {};
123
123
  var dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (evaluate = p(expr), update = create(el, state, expr, name2, evaluate), () => update(evaluate(state)));
124
124
  function sprae(el, values) {
125
- if (!el?.childNodes) return;
126
125
  if (el[_state]) return Object.assign(el[_state], values);
127
126
  const state = store(values || {}), offs = [], fx = [];
128
- const init = (el2) => {
129
- if (!el2.childNodes) return;
130
- for (let i = 0; i < el2.attributes?.length; ) {
131
- let { name, value } = el2.attributes[i], update, pfx = name[0] === ":" ? 1 : name[0] === "s" && name[1] === "-" ? 2 : 0;
132
- if (pfx) {
127
+ const init = (el2, attrs = el2.attributes) => {
128
+ if (attrs) for (let i = 0; i < attrs.length; ) {
129
+ let { name, value } = attrs[i], pfx, update, dir2;
130
+ if (pfx = name[0] === ":" ? 1 : name[0] === "s" && name[1] === "-" ? 2 : 0) {
133
131
  el2.removeAttribute(name);
134
- for (let dir2 of name.slice(pfx).split(":")) {
132
+ for (dir2 of name.slice(pfx).split(":")) {
135
133
  update = (directive[dir2] || directive.default)(el2, value, state, dir2);
136
134
  fx.push(update), offs.push(effect(update));
137
135
  if (el2[_state] === null) return;
138
136
  }
139
137
  } else i++;
140
138
  }
141
- for (let child of [...el2.childNodes]) init(child);
139
+ for (let child of el2.childNodes) child.nodeType == 1 && init(child);
142
140
  };
143
141
  init(el);
144
142
  if (!(_state in el)) {
package/dist/sprae.js.map CHANGED
@@ -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/default.js", "../directive/value.js", "../directive/ref.js", "../directive/with.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/fx.js", "../directive/aria.js", "../directive/data.js", "../sprae.js"],
4
- "sourcesContent": ["// ulive copy, stable minimal implementation\nlet current;\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) 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 => fn(),\n untracked = batch\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 || batch\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, batch } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('change');\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] && (signals[key][Symbol.dispose]?.(), delete signals[key], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals)),\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] = null\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = ['push', 'pop', 'shift', 'unshift', 'splice']\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 // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut.includes(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 // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; 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 = +key + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key]?.[Symbol.dispose]?.(), delete signals[key], 1),\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. preserve signal value as is\n else if (!s) signals[key] = s = v?.peek ? v : signal(store(v))\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]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i]\n cur.length = v.length // forces deleting tail signals\n })\n else s.value = v\n }\n // .x = y\n else s.value = store(v)\n}\n", "import { use, effect } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\nexport const _state = Symbol(\"state\"), _on = Symbol('on'), _off = Symbol('off')\n\n// registered directives\nconst directive = {}\n\n/**\n * Register a directive with a parsed expression and evaluator.\n * @param {string} name - The name of the directive.\n * @param {(el: Element, state: Object, attrValue: string, attrName: string) => (value: any) => void} create - A function to create the directive.\n * @param {(expr: string) => (state: Object) => any} [p=parse] - Create evaluator from expression string.\n */\nexport const dir = (name, create, p = parse) => directive[name] = (el, expr, state, name, update, evaluate) => (\n evaluate = p(expr),\n update = create(el, state, expr, name, evaluate),\n () => update(evaluate(state))\n)\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} el - The target HTML element to apply directives to.\n * @param {Object} [values] - Initial values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], values)\n\n // take over existing state instead of creating a clone\n const state = store(values || {}), offs = [], fx = []\n\n const init = el => {\n // ignore text nodes, comments etc\n if (!el.childNodes) return\n\n for (let i = 0; i < el.attributes?.length;) {\n let {name, value} = el.attributes[i], update, pfx = name[0] === ':' ? 1 : (name[0]==='s'&&name[1]==='-') ? 2 : 0\n\n // if we have parts meaning there's attr needs to be spraed\n // :id:name -> [,id,name]; s-text:id -> [,text,id]; ab-cd -> [ab-cd]\n if (pfx) {\n el.removeAttribute(name);\n\n // multiple attributes like :id:for=\"\"\n for (let dir of name.slice(pfx).split(':')) {\n update = (directive[dir] || directive.default)(el, value, state, dir)\n\n // save & start effect\n fx.push(update), offs.push(effect(update))\n\n // stop after :each, :if, :with etc.\n if (el[_state]===null) return\n }\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child);\n };\n\n init(el);\n\n // if element was spraed by inline :with instruction (meaning it has extended state) - skip, otherwise save _state\n if (!(_state in el)) {\n el[_state] = state\n\n // on/off all effects\n el[_off] = () => { while (offs.length) offs.pop()() }\n el[_on] = () => offs.push(...fx.map(f => effect(f)))\n\n // destroy\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null)\n }\n\n return state;\n}\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @param {string} dir - The directive associated with the expression (used for error reporting).\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr, dir, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n return memo[expr] = fn\n}\nconst memo = {};\n\n/**\n * Branded sprae error with context about the directive and expression\n *\n * @param {Error} e - The original error object to enhance.\n * @param {string} dir - The directive where the error occurred.\n * @param {string} [expr=''] - The expression associated with the error, if any.\n * @throws {Error} The enhanced error object with a formatted message.\n */\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\n/**\n * Compiles an expression into an evaluator function.\n *\n * @type {(expr: string) => Function}\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 // get parentNode() { return childNodes[0].parentNode },\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, { dir, _state, _on, _off, 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\");\n\ndir('if', (el, state) => {\n const holder = document.createTextNode('')\n\n let next = el.nextElementSibling,\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n ifEl[_state] = null // mark el as fake-spraed to holdon init, since we sprae rest when branch matches\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, elseEl[_state] = null\n }\n\n return (value) => {\n const newEl = value ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements when element is not matched\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n // remove fake memo to sprae as new\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state))\n // enable effects if branch is matched\n : curEl[_on]()\n }\n }\n };\n})\n", "import sprae, { _state, dir, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect } from '../signal.js';\n\n\ndir('each', (tpl, state, expr) => {\n const [itemVar, idxVar = \"$\"] = expr.split(/\\s+in\\s+/)[0].split(/\\s*,\\s*/);\n\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 tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n const update = () => {\n let i = 0, newItems = items, 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) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\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 return value => {\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n })\n }\n },\n\n // redefine evaluator to take second part of expression\n expr => parse(expr.split(/\\s+in\\s+/)[1])\n)\n", "// generic property directive\nimport { dir, err } from \"../core.js\";\n\ndir('default', (target, state, expr, name) => {\n // simple prop\n if (!name.startsWith('on'))\n return name ?\n value => attr(target, name, value) :\n value => { for (let key in value) attr(target, dashcase(key), value[key]) };\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 (_, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // add listener with the context\n const 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?.call(state, 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 // single event\n if (ctxs.length == 1) return v => addListener(v, 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 value => (\n startFn = value,\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\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 parent(ctx) { ctx.target = ctx.target.parentNode; },\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// 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\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\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 { dir, parse } from \"../core.js\";\nimport { attr } from './default.js';\n\n\ndir('value', (el, state, expr) => {\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 // make sure value exists in state\n ensure(state, expr)\n\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n } catch {}\n\n return update\n})\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, set = parse(`${expr}=__`)) => (\n // FIXME: if there's a simpler way to set value in justin?\n (state, value) => (\n state.__ = value,\n set(state, value),\n delete state.__\n )\n)\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\nexport const ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => name && (state[name[0]] ??= null)\n", "import { dir, parse } from \"../core.js\";\nimport { setter, ensure } from \"./value.js\";\n\ndir('ref', (el, state, expr, _, ev) => (\n ensure(state, expr),\n ev(state) == null ?\n (setter(expr)(state, el), _ => _) :\n v => v.call(null, el)\n))\n", "import sprae, { dir } from \"../core.js\";\nimport store, { _signals } from '../store.js';\n\ndir('with', (el, rootState, state) => (state=null, values => sprae(el, state ? values : state = store(values, rootState))))\n", "import { dir, frag } from \"../core.js\";\n\ndir('text', el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n value => el.textContent = value == null ? \"\" : value\n))\n", "import { dir } from \"../core.js\";\n\ndir('class', (el, cur) => (\n cur = new Set,\n v => {\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 { dir } from \"../core.js\";\n\ndir('style', (el, initStyle) => (\n initStyle = el.getAttribute(\"style\"),\n v => {\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 { dir } from \"../core.js\";\n\ndir('fx', _ => _ => _)\n", "import { dir } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndir('aria', (el) => value => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '')\n})\n", "import { dir } from \"../core.js\";\n\ndir('data', el => value => {for (let key in value) el.dataset[key] = value[key];})\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/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\nimport './directive/aria.js'\nimport './directive/data.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"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// ulive copy, stable minimal implementation\nlet current;\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) 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 => fn(),\n untracked = batch\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 || batch\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, batch } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('change');\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] && (signals[key][Symbol.dispose]?.(), delete signals[key], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals)),\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] = null\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = ['push', 'pop', 'shift', 'unshift', 'splice']\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 // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut.includes(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 // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; 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 = +key + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key]?.[Symbol.dispose]?.(), delete signals[key], 1),\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. preserve signal value as is\n else if (!s) signals[key] = s = v?.peek ? v : signal(store(v))\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]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i]\n cur.length = v.length // forces deleting tail signals\n })\n else s.value = v\n }\n // .x = y\n else s.value = store(v)\n}\n", "import { use, effect } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\nexport const _state = Symbol(\"state\"), _on = Symbol('on'), _off = Symbol('off')\n\n// registered directives\nconst directive = {}\n\n/**\n * Register a directive with a parsed expression and evaluator.\n * @param {string} name - The name of the directive.\n * @param {(el: Element, state: Object, attrValue: string, attrName: string) => (value: any) => void} create - A function to create the directive.\n * @param {(expr: string) => (state: Object) => any} [p=parse] - Create evaluator from expression string.\n */\nexport const dir = (name, create, p = parse) => directive[name] = (el, expr, state, name, update, evaluate) => (\n evaluate = p(expr),\n update = create(el, state, expr, name, evaluate),\n () => update(evaluate(state))\n)\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} el - The target HTML element to apply directives to.\n * @param {Object} [values] - Initial values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nexport default function sprae(el, values) {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], values)\n\n // take over existing state instead of creating a clone\n const state = store(values || {}), offs = [], fx = []\n\n const init = (el, attrs=el.attributes) => {\n // we iterate live collection (subsprae can init args)\n if (attrs) for (let i = 0; i < attrs.length;) {\n let {name, value} = attrs[i], pfx, update, dir\n\n // if we have parts meaning there's attr needs to be spraed\n // :id:name -> [,id,name]; s-text:id -> [,text,id]; ab-cd -> [ab-cd]\n if (pfx = name[0] === ':' ? 1 : (name[0]==='s' && name[1]==='-') ? 2 : 0) {\n el.removeAttribute(name);\n\n // multiple attributes like :id:for=\"\"\n for (dir of name.slice(pfx).split(':')) {\n update = (directive[dir] || directive.default)(el, value, state, dir)\n\n // save & start effect\n fx.push(update), offs.push(effect(update))\n\n // stop after :each, :if, :with etc.\n if (el[_state]===null) return\n }\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n for (let child of el.childNodes) child.nodeType==1 && init(child)\n };\n\n init(el);\n\n // if element was spraed by inline :with instruction (meaning it has extended state) - skip, otherwise save _state\n if (!(_state in el)) {\n el[_state] = state\n\n // on/off all effects\n el[_off] = () => { while (offs.length) offs.pop()() }\n el[_on] = () => offs.push(...fx.map(f => effect(f)))\n\n // destroy\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null)\n }\n\n return state;\n}\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @param {string} dir - The directive associated with the expression (used for error reporting).\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr, dir, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n return memo[expr] = fn\n}\nconst memo = {};\n\n/**\n * Branded sprae error with context about the directive and expression\n *\n * @param {Error} e - The original error object to enhance.\n * @param {string} dir - The directive where the error occurred.\n * @param {string} [expr=''] - The expression associated with the error, if any.\n * @throws {Error} The enhanced error object with a formatted message.\n */\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\n/**\n * Compiles an expression into an evaluator function.\n *\n * @type {(expr: string) => Function}\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 // get parentNode() { return childNodes[0].parentNode },\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, { dir, _state, _on, _off, 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\");\n\ndir('if', (el, state) => {\n const holder = document.createTextNode('')\n\n let next = el.nextElementSibling,\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n ifEl[_state] = null // mark el as fake-spraed to holdon init, since we sprae rest when branch matches\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, elseEl[_state] = null\n }\n\n return (value) => {\n const newEl = value ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements when element is not matched\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n // remove fake memo to sprae as new\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state))\n // enable effects if branch is matched\n : curEl[_on]()\n }\n }\n };\n})\n", "import sprae, { _state, dir, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect } from '../signal.js';\n\n\ndir('each', (tpl, state, expr) => {\n const [itemVar, idxVar = \"$\"] = expr.split(/\\s+in\\s+/)[0].split(/\\s*,\\s*/);\n\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 tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n const update = () => {\n let i = 0, newItems = items, 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) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\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 return value => {\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n })\n }\n },\n\n // redefine evaluator to take second part of expression\n expr => parse(expr.split(/\\s+in\\s+/)[1])\n)\n", "// generic property directive\nimport { dir, err } from \"../core.js\";\n\ndir('default', (target, state, expr, name) => {\n // simple prop\n if (!name.startsWith('on'))\n return name ?\n value => attr(target, name, value) :\n value => { for (let key in value) attr(target, dashcase(key), value[key]) };\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 (_, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // add listener with the context\n const 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?.call(state, 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 // single event\n if (ctxs.length == 1) return v => addListener(v, 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 value => (\n startFn = value,\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\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 parent(ctx) { ctx.target = ctx.target.parentNode; },\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// 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\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\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 { dir, parse } from \"../core.js\";\nimport { attr } from './default.js';\n\n\ndir('value', (el, state, expr) => {\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 // make sure value exists in state\n ensure(state, expr)\n\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n } catch {}\n\n return update\n})\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, set = parse(`${expr}=__`)) => (\n // FIXME: if there's a simpler way to set value in justin?\n (state, value) => (\n state.__ = value,\n set(state, value),\n delete state.__\n )\n)\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\nexport const ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => name && (state[name[0]] ??= null)\n", "import { dir, parse } from \"../core.js\";\nimport { setter, ensure } from \"./value.js\";\n\ndir('ref', (el, state, expr, _, ev) => (\n ensure(state, expr),\n ev(state) == null ?\n (setter(expr)(state, el), _ => _) :\n v => v.call(null, el)\n))\n", "import sprae, { dir } from \"../core.js\";\nimport store, { _signals } from '../store.js';\n\ndir('with', (el, rootState, state) => (state=null, values => sprae(el, state ? values : state = store(values, rootState))))\n", "import { dir, frag } from \"../core.js\";\n\ndir('text', el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n value => el.textContent = value == null ? \"\" : value\n))\n", "import { dir } from \"../core.js\";\n\ndir('class', (el, cur) => (\n cur = new Set,\n v => {\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 { dir } from \"../core.js\";\n\ndir('style', (el, initStyle) => (\n initStyle = el.getAttribute(\"style\"),\n v => {\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 { dir } from \"../core.js\";\n\ndir('fx', _ => _ => _)\n", "import { dir } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndir('aria', (el) => value => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '')\n})\n", "import { dir } from \"../core.js\";\n\ndir('data', el => value => {for (let key in value) el.dataset[key] = value[key];})\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/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\nimport './directive/aria.js'\nimport './directive/data.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"],
5
+ "mappings": "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",
6
6
  "names": ["name", "el", "dir", "keys", "target", "set", "_", "v", "_"]
7
7
  }
package/dist/sprae.min.js CHANGED
@@ -1,5 +1,5 @@
1
- var N,w=(e,n,t=new Set)=>(n={get value(){return N?.deps.push(t.add(N)),e},set value(r){if(r!==e){e=r;for(let s of t)s()}},peek(){return e}},n.toJSON=n.then=n.toString=n.valueOf=()=>n.value,n),x=(e,n,t,r)=>(t=s=>{n?.call?.(),s=N,N=t;try{n=e()}finally{N=s}},r=t.deps=[],t(),s=>{for(n?.call?.();s=r.pop();)s.delete(t)}),R=(e,n=w(),t,r)=>(t={get value(){return r||(r=x(()=>n.value=e())),n.value},peek:n.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),E=e=>e(),G=E;function Q(e){w=e.signal,x=e.effect,R=e.computed,E=e.batch||E,G=e.untracked||E}var A=Symbol("signals"),$=Symbol("change");function S(e,n){if(!e||e[A])return e;if(Array.isArray(e))return Y(e);if(e.constructor!==Object||e[Symbol.toStringTag])return e;let t={...n?.[A]},r=w(Object.values(e).length);const s=new Proxy(t,{get:(o,i)=>i===$?r:i===A?t:t[i]?.valueOf(),set:(o,i,u,a)=>(a=t[i],P(t,i,u),a??++r.value,1),deleteProperty:(o,i)=>(t[i]&&(t[i][Symbol.dispose]?.(),delete t[i],r.value--),1),ownKeys:()=>(r.value,Reflect.ownKeys(t))});for(let o in e){const i=Object.getOwnPropertyDescriptor(e,o);i?.get?(t[o]=R(i.get.bind(s)))._set=i.set?.bind(s):(t[o]=null,P(t,o,e[o]))}return s}var U=["push","pop","shift","unshift","splice"];function Y(e){let n;if(e[A])return e;let t=w(e.length),r=Array(e.length).fill();const s=new Proxy(r,{get(o,i){if(typeof i=="symbol")return i===$?t:i===A?r:r[i];if(i==="length")return U.includes(n)?t.peek():t.value;if(n=i,r[i])return r[i].valueOf();if(i<r.length)return(r[i]=w(S(e[i]))).value},set(o,i,u){if(i==="length"){for(let a=u;a<r.length;a++)delete s[a];return t.value=r.length=u,!0}return P(r,i,u),i>=t.peek()&&(t.value=r.length=+i+1),!0},deleteProperty:(o,i)=>(r[i]?.[Symbol.dispose]?.(),delete r[i],1)});return s}function P(e,n,t){let r=e[n];if(n[0]==="_")e[n]=t;else if(!r)e[n]=r=t?.peek?t:w(S(t));else if(t!==r.peek())if(r._set)r._set(t);else if(Array.isArray(t)&&Array.isArray(r.peek())){const s=r.peek();s[$]?E(()=>{for(let o=0;o<t.length;o++)s[o]=t[o];s.length=t.length}):r.value=t}else r.value=S(t)}var q=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),h=Symbol("state"),C=Symbol("on"),T=Symbol("off"),D={},p=(e,n,t=K)=>D[e]=(r,s,o,i,u,a)=>(a=t(s),u=n(r,o,s,i,a),()=>u(a(o)));function v(e,n){if(!e?.childNodes)return;if(e[h])return Object.assign(e[h],n);const t=S(n||{}),r=[],s=[],o=i=>{if(i.childNodes){for(let u=0;u<i.attributes?.length;){let{name:a,value:m}=i.attributes[u],y,l=a[0]===":"?1:a[0]==="s"&&a[1]==="-"?2:0;if(l){i.removeAttribute(a);for(let c of a.slice(l).split(":"))if(y=(D[c]||D.default)(i,m,t,c),s.push(y),r.push(x(y)),i[h]===null)return}else u++}for(let u of[...i.childNodes])o(u)}};return o(e),h in e||(e[h]=t,e[T]=()=>{for(;r.length;)r.pop()()},e[C]=()=>r.push(...s.map(i=>x(i))),e[q]=()=>(e[T](),e[T]=e[C]=e[q]=e[h]=null)),t}var K=(e,n,t)=>{if(t=F[e=e.trim()])return t;try{t=V(e)}catch(r){J(r,n,e)}return F[e]=t},F={},J=(e,n="",t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
1
+ var x,w=(e,n,t=new Set)=>(n={get value(){return x?.deps.push(t.add(x)),e},set value(r){if(r!==e){e=r;for(let s of t)s()}},peek(){return e}},n.toJSON=n.then=n.toString=n.valueOf=()=>n.value,n),N=(e,n,t,r)=>(t=s=>{n?.call?.(),s=x,x=t;try{n=e()}finally{x=s}},r=t.deps=[],t(),s=>{for(n?.call?.();s=r.pop();)s.delete(t)}),R=(e,n=w(),t,r)=>(t={get value(){return r||(r=N(()=>n.value=e())),n.value},peek:n.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),E=e=>e(),G=E;function Q(e){w=e.signal,N=e.effect,R=e.computed,E=e.batch||E,G=e.untracked||E}var A=Symbol("signals"),$=Symbol("change");function S(e,n){if(!e||e[A])return e;if(Array.isArray(e))return Y(e);if(e.constructor!==Object||e[Symbol.toStringTag])return e;let t={...n?.[A]},r=w(Object.values(e).length);const s=new Proxy(t,{get:(o,i)=>i===$?r:i===A?t:t[i]?.valueOf(),set:(o,i,c,a)=>(a=t[i],P(t,i,c),a??++r.value,1),deleteProperty:(o,i)=>(t[i]&&(t[i][Symbol.dispose]?.(),delete t[i],r.value--),1),ownKeys:()=>(r.value,Reflect.ownKeys(t))});for(let o in e){const i=Object.getOwnPropertyDescriptor(e,o);i?.get?(t[o]=R(i.get.bind(s)))._set=i.set?.bind(s):(t[o]=null,P(t,o,e[o]))}return s}var U=["push","pop","shift","unshift","splice"];function Y(e){let n;if(e[A])return e;let t=w(e.length),r=Array(e.length).fill();const s=new Proxy(r,{get(o,i){if(typeof i=="symbol")return i===$?t:i===A?r:r[i];if(i==="length")return U.includes(n)?t.peek():t.value;if(n=i,r[i])return r[i].valueOf();if(i<r.length)return(r[i]=w(S(e[i]))).value},set(o,i,c){if(i==="length"){for(let a=c;a<r.length;a++)delete s[a];return t.value=r.length=c,!0}return P(r,i,c),i>=t.peek()&&(t.value=r.length=+i+1),!0},deleteProperty:(o,i)=>(r[i]?.[Symbol.dispose]?.(),delete r[i],1)});return s}function P(e,n,t){let r=e[n];if(n[0]==="_")e[n]=t;else if(!r)e[n]=r=t?.peek?t:w(S(t));else if(t!==r.peek())if(r._set)r._set(t);else if(Array.isArray(t)&&Array.isArray(r.peek())){const s=r.peek();s[$]?E(()=>{for(let o=0;o<t.length;o++)s[o]=t[o];s.length=t.length}):r.value=t}else r.value=S(t)}var q=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),m=Symbol("state"),C=Symbol("on"),T=Symbol("off"),D={},h=(e,n,t=K)=>D[e]=(r,s,o,i,c,a)=>(a=t(s),c=n(r,o,s,i,a),()=>c(a(o)));function v(e,n){if(e[m])return Object.assign(e[m],n);const t=S(n||{}),r=[],s=[],o=(i,c=i.attributes)=>{if(c)for(let a=0;a<c.length;){let{name:p,value:g}=c[a],l,u,d;if(l=p[0]===":"?1:p[0]==="s"&&p[1]==="-"?2:0){i.removeAttribute(p);for(d of p.slice(l).split(":"))if(u=(D[d]||D.default)(i,g,t,d),s.push(u),r.push(N(u)),i[m]===null)return}else a++}for(let a of i.childNodes)a.nodeType==1&&o(a)};return o(e),m in e||(e[m]=t,e[T]=()=>{for(;r.length;)r.pop()()},e[C]=()=>r.push(...s.map(i=>N(i))),e[q]=()=>(e[T](),e[T]=e[C]=e[q]=e[m]=null)),t}var K=(e,n,t)=>{if(t=F[e=e.trim()])return t;try{t=V(e)}catch(r){J(r,n,e)}return F[e]=t},F={},J=(e,n="",t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
2
2
 
3
3
  ${n}${t?`="${t}"
4
4
 
5
- `:""}`,expr:t})},V;v.use=e=>{e.signal&&Q(e),e.compile&&(V=e.compile)};var W=e=>{if(!e.nodeType)return e;let n=e.content.cloneNode(!0),t=[...e.attributes],r=document.createTextNode(""),s=(n.append(r),[...n.childNodes]);return{childNodes:s,content:n,remove:()=>n.append(...s),replaceWith(o){o!==r&&(r.before(o),n.append(...s))},attributes:t,removeAttribute(o){t.splice(t.findIndex(i=>i.name===o),1)}}},B=Symbol("if");p("if",(e,n)=>{const t=document.createTextNode("");let r=e.nextElementSibling,s,o,i;return e.replaceWith(t),o=e.content?W(e):e,o[h]=null,r?.hasAttribute(":else")&&(r.removeAttribute(":else"),r.hasAttribute(":if")||(r.remove(),i=r.content?W(r):r,i[h]=null)),u=>{const a=u?o:e[B]?null:i;r&&(r[B]=a===o),s!=a&&(s&&(s.remove(),s[T]?.()),(s=a)&&(t.before(s.content||s),s[h]===null?(delete s[h],v(s,n)):s[C]()))}}),p("each",(e,n,t)=>{const[r,s="$"]=t.split(/\s+in\s+/)[0].split(/\s*,\s*/),o=document.createTextNode("");e.replaceWith(o),e[h]=null;let i,u,a,m=0;const y=()=>{var l,c;let d=0,b=a,g=b.length;if(i&&!i[$]){for(let _ of i[A]||[])_[Symbol.dispose]();i=null,m=0}if(g<m)i.length=g;else{if(!i)i=b;else for(;d<m;)i[d]=b[d++];for(;d<g;d++){i[d]=b[d];let _=d,L=S({[r]:i[A]?.[_]||i[_],[s]:u?u[_]:_},n),k=e.content?W(e):e.cloneNode(!0);o.before(k.content||k),v(k,L),((c=i[l=A]||(i[l]=[]))[d]||(c[d]={}))[Symbol.dispose]=()=>{k[Symbol.dispose]?.(),k.remove()}}}m=g};return l=>{u=null,typeof l=="number"?a=Array.from({length:l},(d,b)=>b+1):l?.constructor===Object?(u=Object.keys(l),a=Object.values(l)):a=l||[];let c=0;return x(()=>{a[$]?.value,c++||(y(),queueMicrotask(()=>(c>1&&y(),c=0)))})}},e=>K(e.split(/\s+in\s+/)[1])),p("default",(e,n,t,r)=>{if(!r.startsWith("on"))return r?l=>j(e,r,l):l=>{for(let c in l)j(e,H(c),l[c])};const s=r.split("..").map(l=>{let c={evt:"",target:e,test:()=>!0};return c.evt=(l.startsWith("on")?l.slice(2):l).replace(/\.(\w+)?-?([-\w]+)?/g,(d,b,g="")=>(c.test=ee[b]?.(c,...g.split("-"))||c.test,"")),c}),o=(l,{evt:c,target:d,test:b,defer:g,stop:_,prevent:L,immediate:k,...I})=>{g&&(l=g(l));const M=O=>{try{b(O)&&(_&&(k?O.stopImmediatePropagation():O.stopPropagation()),L&&O.preventDefault(),l?.call(n,O))}catch(z){J(z,`:on${c}`,l)}};return d.addEventListener(c,M,I),()=>d.removeEventListener(c,M,I)};if(s.length==1)return l=>o(l,s[0]);let i,u,a,m=0;const y=l=>{a=o(c=>(a(),u=l?.(c),(m=++m%s.length)?y(u):i&&y(i)),s[m])};return l=>(i=l,!a&&y(i),()=>i=null)});var ee={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},parent(e){e.target=e.target.parentNode},throttle(e,n){e.defer=t=>te(t,n?Number(n)||0:108)},debounce(e,n){e.defer=t=>re(t,n?Number(n)||0:108)},outside:e=>n=>{let t=e.target;return!(t.contains(n.target)||n.target.isConnected===!1||t.offsetWidth<1&&t.offsetHeight<1)},self:e=>n=>n.target===e.target,ctrl:(e,...n)=>t=>f.ctrl(t)&&n.every(r=>f[r]?f[r](t):t.key===r),shift:(e,...n)=>t=>f.shift(t)&&n.every(r=>f[r]?f[r](t):t.key===r),alt:(e,...n)=>t=>f.alt(t)&&n.every(r=>f[r]?f[r](t):t.key===r),meta:(e,...n)=>t=>f.meta(t)&&n.every(r=>f[r]?f[r](t):t.key===r),arrow:()=>f.arrow,enter:()=>f.enter,esc:()=>f.esc,tab:()=>f.tab,space:()=>f.space,delete:()=>f.delete,digit:()=>f.digit,letter:()=>f.letter,char:()=>f.char},f={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)},te=(e,n)=>{let t,r,s=o=>{t=!0,setTimeout(()=>{if(t=!1,r)return r=!1,s(o),e(o)},n)};return o=>t?r=!0:(s(o),e(o))},re=(e,n)=>{let t;return r=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(r)},n)}},j=(e,n,t)=>{t==null||t===!1?e.removeAttribute(n):e.setAttribute(n,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},H=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(n,t)=>(t?"-":"")+n.toLowerCase());p("value",(e,n,t)=>{const r=e.type==="text"||e.type===""?s=>e.setAttribute("value",e.value=s??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(s,o,i)=>(o=e.selectionStart,i=e.selectionEnd,e.setAttribute("value",e.value=s??""),o&&e.setSelectionRange(o,i)):e.type==="checkbox"?s=>(e.checked=s,j(e,"checked",s)):e.type==="select-one"?s=>{for(let o of e.options)o.value==s?o.setAttribute("selected",""):o.removeAttribute("selected");e.value=s}:e.type==="select-multiple"?s=>{for(let o of e.options)o.removeAttribute("selected");for(let o of s)e.querySelector(`[value="${o}"]`).setAttribute("selected","")}:s=>e.value=s;Z(n,t);try{const s=X(t),o=e.type==="checkbox"?()=>s(n,e.checked):e.type==="select-multiple"?()=>s(n,[...e.selectedOptions].map(i=>i.value)):()=>s(n,e.selectedIndex<0?null:e.value);e.oninput=e.onchange=o,e.type?.startsWith("select")&&(new MutationObserver(o).observe(e,{childList:!0,subtree:!0,attributes:!0}),v(e,n))}catch{}return r});var X=(e,n=K(`${e}=__`))=>(t,r)=>(t.__=r,n(t,r),delete t.__),Z=(e,n,t=n.match(/^\w+(?=\s*(?:\.|\[|$))/))=>{var r;return t&&(e[r=t[0]]??(e[r]=null))};p("ref",(e,n,t,r,s)=>(Z(n,t),s(n)==null?(X(t)(n,e),o=>o):o=>o.call(null,e))),p("with",(e,n,t)=>(t=null,r=>v(e,t?r:t=S(r,n)))),p("text",e=>(e.content&&e.replaceWith(e=W(e).childNodes[0]),n=>e.textContent=n??"")),p("class",(e,n)=>(n=new Set,t=>{let r=new Set;t&&(typeof t=="string"?t.split(" ").map(s=>r.add(s)):Array.isArray(t)?t.map(s=>s&&r.add(s)):Object.entries(t).map(([s,o])=>o&&r.add(s)));for(let s of n)r.has(s)?r.delete(s):e.classList.remove(s);for(let s of n=r)e.classList.add(s)})),p("style",(e,n)=>(n=e.getAttribute("style"),t=>{if(typeof t=="string")e.setAttribute("style",n+(n.endsWith(";")?"":"; ")+t);else{n&&e.setAttribute("style",n);for(let r in t)r[0]=="-"?e.style.setProperty(r,t[r]):e.style[r]=t[r]}})),p("fx",e=>n=>n),p("aria",e=>n=>{for(let t in n)j(e,"aria-"+H(t),n[t]==null?null:n[t]+"")}),p("data",e=>n=>{for(let t in n)e.dataset[t]=n[t]}),v.use({compile:e=>v.constructor(`with (arguments[0]) { return ${e} };`)});var ne=v;export{ne as default};
5
+ `:""}`,expr:t})},V;v.use=e=>{e.signal&&Q(e),e.compile&&(V=e.compile)};var W=e=>{if(!e.nodeType)return e;let n=e.content.cloneNode(!0),t=[...e.attributes],r=document.createTextNode(""),s=(n.append(r),[...n.childNodes]);return{childNodes:s,content:n,remove:()=>n.append(...s),replaceWith(o){o!==r&&(r.before(o),n.append(...s))},attributes:t,removeAttribute(o){t.splice(t.findIndex(i=>i.name===o),1)}}},B=Symbol("if");h("if",(e,n)=>{const t=document.createTextNode("");let r=e.nextElementSibling,s,o,i;return e.replaceWith(t),o=e.content?W(e):e,o[m]=null,r?.hasAttribute(":else")&&(r.removeAttribute(":else"),r.hasAttribute(":if")||(r.remove(),i=r.content?W(r):r,i[m]=null)),c=>{const a=c?o:e[B]?null:i;r&&(r[B]=a===o),s!=a&&(s&&(s.remove(),s[T]?.()),(s=a)&&(t.before(s.content||s),s[m]===null?(delete s[m],v(s,n)):s[C]()))}}),h("each",(e,n,t)=>{const[r,s="$"]=t.split(/\s+in\s+/)[0].split(/\s*,\s*/),o=document.createTextNode("");e.replaceWith(o),e[m]=null;let i,c,a,p=0;const g=()=>{var l,u;let d=0,y=a,b=y.length;if(i&&!i[$]){for(let _ of i[A]||[])_[Symbol.dispose]();i=null,p=0}if(b<p)i.length=b;else{if(!i)i=y;else for(;d<p;)i[d]=y[d++];for(;d<b;d++){i[d]=y[d];let _=d,L=S({[r]:i[A]?.[_]||i[_],[s]:c?c[_]:_},n),k=e.content?W(e):e.cloneNode(!0);o.before(k.content||k),v(k,L),((u=i[l=A]||(i[l]=[]))[d]||(u[d]={}))[Symbol.dispose]=()=>{k[Symbol.dispose]?.(),k.remove()}}}p=b};return l=>{c=null,typeof l=="number"?a=Array.from({length:l},(d,y)=>y+1):l?.constructor===Object?(c=Object.keys(l),a=Object.values(l)):a=l||[];let u=0;return N(()=>{a[$]?.value,u++||(g(),queueMicrotask(()=>(u>1&&g(),u=0)))})}},e=>K(e.split(/\s+in\s+/)[1])),h("default",(e,n,t,r)=>{if(!r.startsWith("on"))return r?l=>j(e,r,l):l=>{for(let u in l)j(e,H(u),l[u])};const s=r.split("..").map(l=>{let u={evt:"",target:e,test:()=>!0};return u.evt=(l.startsWith("on")?l.slice(2):l).replace(/\.(\w+)?-?([-\w]+)?/g,(d,y,b="")=>(u.test=ee[y]?.(u,...b.split("-"))||u.test,"")),u}),o=(l,{evt:u,target:d,test:y,defer:b,stop:_,prevent:L,immediate:k,...I})=>{b&&(l=b(l));const M=O=>{try{y(O)&&(_&&(k?O.stopImmediatePropagation():O.stopPropagation()),L&&O.preventDefault(),l?.call(n,O))}catch(z){J(z,`:on${u}`,l)}};return d.addEventListener(u,M,I),()=>d.removeEventListener(u,M,I)};if(s.length==1)return l=>o(l,s[0]);let i,c,a,p=0;const g=l=>{a=o(u=>(a(),c=l?.(u),(p=++p%s.length)?g(c):i&&g(i)),s[p])};return l=>(i=l,!a&&g(i),()=>i=null)});var ee={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},parent(e){e.target=e.target.parentNode},throttle(e,n){e.defer=t=>te(t,n?Number(n)||0:108)},debounce(e,n){e.defer=t=>re(t,n?Number(n)||0:108)},outside:e=>n=>{let t=e.target;return!(t.contains(n.target)||n.target.isConnected===!1||t.offsetWidth<1&&t.offsetHeight<1)},self:e=>n=>n.target===e.target,ctrl:(e,...n)=>t=>f.ctrl(t)&&n.every(r=>f[r]?f[r](t):t.key===r),shift:(e,...n)=>t=>f.shift(t)&&n.every(r=>f[r]?f[r](t):t.key===r),alt:(e,...n)=>t=>f.alt(t)&&n.every(r=>f[r]?f[r](t):t.key===r),meta:(e,...n)=>t=>f.meta(t)&&n.every(r=>f[r]?f[r](t):t.key===r),arrow:()=>f.arrow,enter:()=>f.enter,esc:()=>f.esc,tab:()=>f.tab,space:()=>f.space,delete:()=>f.delete,digit:()=>f.digit,letter:()=>f.letter,char:()=>f.char},f={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)},te=(e,n)=>{let t,r,s=o=>{t=!0,setTimeout(()=>{if(t=!1,r)return r=!1,s(o),e(o)},n)};return o=>t?r=!0:(s(o),e(o))},re=(e,n)=>{let t;return r=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(r)},n)}},j=(e,n,t)=>{t==null||t===!1?e.removeAttribute(n):e.setAttribute(n,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},H=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(n,t)=>(t?"-":"")+n.toLowerCase());h("value",(e,n,t)=>{const r=e.type==="text"||e.type===""?s=>e.setAttribute("value",e.value=s??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(s,o,i)=>(o=e.selectionStart,i=e.selectionEnd,e.setAttribute("value",e.value=s??""),o&&e.setSelectionRange(o,i)):e.type==="checkbox"?s=>(e.checked=s,j(e,"checked",s)):e.type==="select-one"?s=>{for(let o of e.options)o.value==s?o.setAttribute("selected",""):o.removeAttribute("selected");e.value=s}:e.type==="select-multiple"?s=>{for(let o of e.options)o.removeAttribute("selected");for(let o of s)e.querySelector(`[value="${o}"]`).setAttribute("selected","")}:s=>e.value=s;Z(n,t);try{const s=X(t),o=e.type==="checkbox"?()=>s(n,e.checked):e.type==="select-multiple"?()=>s(n,[...e.selectedOptions].map(i=>i.value)):()=>s(n,e.selectedIndex<0?null:e.value);e.oninput=e.onchange=o,e.type?.startsWith("select")&&(new MutationObserver(o).observe(e,{childList:!0,subtree:!0,attributes:!0}),v(e,n))}catch{}return r});var X=(e,n=K(`${e}=__`))=>(t,r)=>(t.__=r,n(t,r),delete t.__),Z=(e,n,t=n.match(/^\w+(?=\s*(?:\.|\[|$))/))=>{var r;return t&&(e[r=t[0]]??(e[r]=null))};h("ref",(e,n,t,r,s)=>(Z(n,t),s(n)==null?(X(t)(n,e),o=>o):o=>o.call(null,e))),h("with",(e,n,t)=>(t=null,r=>v(e,t?r:t=S(r,n)))),h("text",e=>(e.content&&e.replaceWith(e=W(e).childNodes[0]),n=>e.textContent=n??"")),h("class",(e,n)=>(n=new Set,t=>{let r=new Set;t&&(typeof t=="string"?t.split(" ").map(s=>r.add(s)):Array.isArray(t)?t.map(s=>s&&r.add(s)):Object.entries(t).map(([s,o])=>o&&r.add(s)));for(let s of n)r.has(s)?r.delete(s):e.classList.remove(s);for(let s of n=r)e.classList.add(s)})),h("style",(e,n)=>(n=e.getAttribute("style"),t=>{if(typeof t=="string")e.setAttribute("style",n+(n.endsWith(";")?"":"; ")+t);else{n&&e.setAttribute("style",n);for(let r in t)r[0]=="-"?e.style.setProperty(r,t[r]):e.style[r]=t[r]}})),h("fx",e=>n=>n),h("aria",e=>n=>{for(let t in n)j(e,"aria-"+H(t),n[t]==null?null:n[t]+"")}),h("data",e=>n=>{for(let t in n)e.dataset[t]=n[t]}),v.use({compile:e=>v.constructor(`with (arguments[0]) { return ${e} };`)});var ne=v;export{ne as default};
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["sprae.js"],
4
- "sourcesContent": ["// signal.js\nvar current;\nvar signal = (v, s, obs = /* @__PURE__ */ new Set()) => (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) sub();\n },\n peek() {\n return v;\n }\n}, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);\nvar effect = (fn, teardown, fx, deps) => (fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try {\n teardown = fn();\n } finally {\n current = prev;\n }\n}, deps = fx.deps = [], fx(), (dep) => {\n teardown?.call?.();\n while (dep = deps.pop()) dep.delete(fx);\n});\nvar computed = (fn, s = signal(), c, e) => (c = {\n get value() {\n e || (e = effect(() => s.value = fn()));\n return s.value;\n },\n peek: s.peek\n}, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);\nvar batch = (fn) => fn();\nvar untracked = batch;\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || batch;\n untracked = s.untracked || batch;\n}\n\n// store.js\nvar _signals = Symbol(\"signals\");\nvar _change = Symbol(\"change\");\nfunction store(values, parent) {\n if (!values) return values;\n if (values[_signals]) return values;\n if (Array.isArray(values)) return list(values);\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);\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),\n // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (signals[key][Symbol.dispose]?.(), delete signals[key], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals))\n });\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key);\n if (desc?.get) {\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n } else {\n signals[key] = null;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nvar mut = [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"];\nfunction list(values) {\n let lastProp;\n if (values[_signals]) return values;\n let _len = signal(values.length), signals = Array(values.length).fill();\n const state = new Proxy(signals, {\n get(_, key) {\n if (typeof key === \"symbol\") return key === _change ? _len : key === _signals ? signals : signals[key];\n if (key === \"length\") return mut.includes(lastProp) ? _len.peek() : _len.value;\n lastProp = key;\n if (signals[key]) return signals[key].valueOf();\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value;\n },\n set(_, key, v) {\n if (key === \"length\") {\n for (let i = v; i < signals.length; i++) delete state[i];\n _len.value = signals.length = v;\n return true;\n }\n set(signals, key, v);\n if (key >= _len.peek()) _len.value = signals.length = +key + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key]?.[Symbol.dispose]?.(), delete signals[key], 1)\n });\n return state;\n}\nfunction set(signals, key, v) {\n let s = signals[key];\n if (key[0] === \"_\") signals[key] = v;\n else if (!s) signals[key] = s = v?.peek ? v : signal(store(v));\n else if (v === s.peek()) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek();\n if (cur[_change]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i];\n cur.length = v.length;\n });\n else s.value = v;\n } else s.value = store(v);\n}\n\n// core.js\nvar _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\nvar _state = Symbol(\"state\");\nvar _on = Symbol(\"on\");\nvar _off = Symbol(\"off\");\nvar directive = {};\nvar dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (evaluate = p(expr), update = create(el, state, expr, name2, evaluate), () => update(evaluate(state)));\nfunction sprae(el, values) {\n if (!el?.childNodes) return;\n if (el[_state]) return Object.assign(el[_state], values);\n const state = store(values || {}), offs = [], fx = [];\n const init = (el2) => {\n if (!el2.childNodes) return;\n for (let i = 0; i < el2.attributes?.length; ) {\n let { name, value } = el2.attributes[i], update, pfx = name[0] === \":\" ? 1 : name[0] === \"s\" && name[1] === \"-\" ? 2 : 0;\n if (pfx) {\n el2.removeAttribute(name);\n for (let dir2 of name.slice(pfx).split(\":\")) {\n update = (directive[dir2] || directive.default)(el2, value, state, dir2);\n fx.push(update), offs.push(effect(update));\n if (el2[_state] === null) return;\n }\n } else i++;\n }\n for (let child of [...el2.childNodes]) init(child);\n };\n init(el);\n if (!(_state in el)) {\n el[_state] = state;\n el[_off] = () => {\n while (offs.length) offs.pop()();\n };\n el[_on] = () => offs.push(...fx.map((f) => effect(f)));\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null);\n }\n return state;\n}\nvar parse = (expr, dir2, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir2, expr);\n }\n return memo[expr] = fn;\n};\nvar memo = {};\nvar err = (e, dir2 = \"\", expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir2}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n};\nvar compile;\nsprae.use = (s) => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n};\nvar frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n // get parentNode() { return childNodes[0].parentNode },\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) {\n attributes.splice(attributes.findIndex((a) => a.name === name), 1);\n }\n // setAttributeNode() { }\n };\n};\n\n// directive/if.js\nvar _prevIf = Symbol(\"if\");\ndir(\"if\", (el, state) => {\n const holder = document.createTextNode(\"\");\n let next = el.nextElementSibling, curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n ifEl[_state] = null;\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null;\n }\n return (value) => {\n const newEl = value ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state)) : curEl[_on]();\n }\n }\n };\n});\n\n// directive/each.js\ndir(\n \"each\",\n (tpl, state, expr) => {\n const [itemVar, idxVar = \"$\"] = expr.split(/\\s+in\\s+/)[0].split(/\\s*,\\s*/);\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n tpl[_state] = null;\n let cur, keys2, items, prevl = 0;\n const update = () => {\n var _a, _b;\n let i = 0, newItems = items, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]();\n cur = null, prevl = 0;\n }\n if (newl < prevl) cur.length = newl;\n else {\n if (!cur) cur = newItems;\n else while (i < prevl) cur[i] = newItems[i++];\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys2 ? keys2[idx] : idx\n }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n holder.before(el.content || el);\n sprae(el, scope);\n ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove();\n };\n }\n }\n prevl = newl;\n };\n return (value) => {\n keys2 = null;\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1);\n else if (value?.constructor === Object) keys2 = Object.keys(value), items = Object.values(value);\n else items = value || [];\n let planned = 0;\n return effect(() => {\n items[_change]?.value;\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n });\n };\n },\n // redefine evaluator to take second part of expression\n (expr) => parse(expr.split(/\\s+in\\s+/)[1])\n);\n\n// directive/default.js\ndir(\"default\", (target, state, expr, name) => {\n if (!name.startsWith(\"on\"))\n return name ? (value) => attr(target, name, value) : (value) => {\n for (let key in value) attr(target, dashcase(key), value[key]);\n };\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(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (_, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n const addListener = (fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) => {\n if (defer) fn = defer(fn);\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n };\n if (ctxs.length == 1) return (v) => addListener(v, ctxs[0]);\n let startFn, nextFn, off, idx = 0;\n const nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return (value) => (startFn = value, !off && nextListener(startFn), () => startFn = null);\n});\nvar mods = {\n // actions\n prevent(ctx) {\n ctx.prevent = true;\n },\n stop(ctx) {\n ctx.stop = true;\n },\n immediate(ctx) {\n ctx.immediate = true;\n },\n // options\n once(ctx) {\n ctx.once = true;\n },\n passive(ctx) {\n ctx.passive = true;\n },\n capture(ctx) {\n ctx.capture = true;\n },\n // target\n window(ctx) {\n ctx.target = window;\n },\n document(ctx) {\n ctx.target = document;\n },\n parent(ctx) {\n ctx.target = ctx.target.parentNode;\n },\n throttle(ctx, limit) {\n ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);\n },\n debounce(ctx, wait) {\n 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 // 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};\nvar 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 === \"\\xA0\" || 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};\nvar throttle = (fn, limit) => {\n let pause, planned, block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\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};\nvar 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};\nvar 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};\nvar dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n};\n\n// directive/value.js\ndir(\"value\", (el, state, expr) => {\n 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) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\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 } : (value) => el.value = value;\n ensure(state, expr);\n try {\n const set2 = setter(expr);\n const handleChange = el.type === \"checkbox\" ? () => set2(state, el.checked) : el.type === \"select-multiple\" ? () => set2(state, [...el.selectedOptions].map((o) => o.value)) : () => set2(state, el.selectedIndex < 0 ? null : el.value);\n el.oninput = el.onchange = handleChange;\n if (el.type?.startsWith(\"select\")) {\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n sprae(el, state);\n }\n } catch {\n }\n return update;\n});\nvar setter = (expr, set2 = parse(`${expr}=__`)) => (\n // FIXME: if there's a simpler way to set value in justin?\n (state, value) => (state.__ = value, set2(state, value), delete state.__)\n);\nvar ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => {\n var _a;\n return name && (state[_a = name[0]] ?? (state[_a] = null));\n};\n\n// directive/ref.js\ndir(\"ref\", (el, state, expr, _, ev) => (ensure(state, expr), ev(state) == null ? (setter(expr)(state, el), (_2) => _2) : (v) => v.call(null, el)));\n\n// directive/with.js\ndir(\"with\", (el, rootState, state) => (state = null, (values) => sprae(el, state ? values : state = store(values, rootState))));\n\n// directive/text.js\ndir(\"text\", (el) => (\n // <template :text=\"a\"/> or previously initialized template\n (el.content && el.replaceWith(el = frag(el).childNodes[0]), (value) => el.textContent = value == null ? \"\" : value)\n));\n\n// directive/class.js\ndir(\n \"class\",\n (el, cur) => (cur = /* @__PURE__ */ new Set(), (v) => {\n let clsx = /* @__PURE__ */ 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((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n })\n);\n\n// directive/style.js\ndir(\n \"style\",\n (el, initStyle) => (initStyle = el.getAttribute(\"style\"), (v) => {\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\n// directive/fx.js\ndir(\"fx\", (_) => (_2) => _2);\n\n// directive/aria.js\ndir(\"aria\", (el) => (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n});\n\n// directive/data.js\ndir(\"data\", (el) => (value) => {\n for (let key in value) el.dataset[key] = value[key];\n});\n\n// sprae.js\nsprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });\nvar sprae_default = sprae;\nexport {\n sprae_default as default\n};\n"],
5
- "mappings": "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",
6
- "names": ["current", "signal", "v", "s", "obs", "val", "sub", "effect", "fn", "teardown", "fx", "deps", "prev", "dep", "computed", "c", "e", "batch", "untracked", "use", "_signals", "_change", "store", "values", "parent", "list", "signals", "_len", "state", "_", "key", "set", "desc", "mut", "lastProp", "i", "cur", "_dispose", "_state", "_on", "_off", "directive", "dir", "name", "create", "p", "parse", "el", "expr", "name2", "update", "evaluate", "sprae", "offs", "init", "el2", "value", "pfx", "dir2", "child", "f", "memo", "compile", "err", "frag", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "holder", "next", "curEl", "ifEl", "elseEl", "newEl", "itemVar", "idxVar", "keys2", "items", "prevl", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "target", "attr", "dashcase", "ctxs", "ctx", "mod", "param", "mods", "addListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "startFn", "nextFn", "off", "nextListener", "limit", "throttle", "wait", "debounce", "keys", "pause", "block", "timeout", "str", "match", "from", "to", "ensure", "set2", "setter", "handleChange", "o", "ev", "_2", "rootState", "clsx", "cls", "v2", "k", "initStyle", "sprae_default"]
4
+ "sourcesContent": ["// signal.js\nvar current;\nvar signal = (v, s, obs = /* @__PURE__ */ new Set()) => (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) sub();\n },\n peek() {\n return v;\n }\n}, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);\nvar effect = (fn, teardown, fx, deps) => (fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try {\n teardown = fn();\n } finally {\n current = prev;\n }\n}, deps = fx.deps = [], fx(), (dep) => {\n teardown?.call?.();\n while (dep = deps.pop()) dep.delete(fx);\n});\nvar computed = (fn, s = signal(), c, e) => (c = {\n get value() {\n e || (e = effect(() => s.value = fn()));\n return s.value;\n },\n peek: s.peek\n}, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);\nvar batch = (fn) => fn();\nvar untracked = batch;\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || batch;\n untracked = s.untracked || batch;\n}\n\n// store.js\nvar _signals = Symbol(\"signals\");\nvar _change = Symbol(\"change\");\nfunction store(values, parent) {\n if (!values) return values;\n if (values[_signals]) return values;\n if (Array.isArray(values)) return list(values);\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);\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),\n // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (signals[key][Symbol.dispose]?.(), delete signals[key], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals))\n });\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key);\n if (desc?.get) {\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n } else {\n signals[key] = null;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nvar mut = [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"];\nfunction list(values) {\n let lastProp;\n if (values[_signals]) return values;\n let _len = signal(values.length), signals = Array(values.length).fill();\n const state = new Proxy(signals, {\n get(_, key) {\n if (typeof key === \"symbol\") return key === _change ? _len : key === _signals ? signals : signals[key];\n if (key === \"length\") return mut.includes(lastProp) ? _len.peek() : _len.value;\n lastProp = key;\n if (signals[key]) return signals[key].valueOf();\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value;\n },\n set(_, key, v) {\n if (key === \"length\") {\n for (let i = v; i < signals.length; i++) delete state[i];\n _len.value = signals.length = v;\n return true;\n }\n set(signals, key, v);\n if (key >= _len.peek()) _len.value = signals.length = +key + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key]?.[Symbol.dispose]?.(), delete signals[key], 1)\n });\n return state;\n}\nfunction set(signals, key, v) {\n let s = signals[key];\n if (key[0] === \"_\") signals[key] = v;\n else if (!s) signals[key] = s = v?.peek ? v : signal(store(v));\n else if (v === s.peek()) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek();\n if (cur[_change]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i];\n cur.length = v.length;\n });\n else s.value = v;\n } else s.value = store(v);\n}\n\n// core.js\nvar _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\nvar _state = Symbol(\"state\");\nvar _on = Symbol(\"on\");\nvar _off = Symbol(\"off\");\nvar directive = {};\nvar dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (evaluate = p(expr), update = create(el, state, expr, name2, evaluate), () => update(evaluate(state)));\nfunction sprae(el, values) {\n if (el[_state]) return Object.assign(el[_state], values);\n const state = store(values || {}), offs = [], fx = [];\n const init = (el2, attrs = el2.attributes) => {\n if (attrs) for (let i = 0; i < attrs.length; ) {\n let { name, value } = attrs[i], pfx, update, dir2;\n if (pfx = name[0] === \":\" ? 1 : name[0] === \"s\" && name[1] === \"-\" ? 2 : 0) {\n el2.removeAttribute(name);\n for (dir2 of name.slice(pfx).split(\":\")) {\n update = (directive[dir2] || directive.default)(el2, value, state, dir2);\n fx.push(update), offs.push(effect(update));\n if (el2[_state] === null) return;\n }\n } else i++;\n }\n for (let child of el2.childNodes) child.nodeType == 1 && init(child);\n };\n init(el);\n if (!(_state in el)) {\n el[_state] = state;\n el[_off] = () => {\n while (offs.length) offs.pop()();\n };\n el[_on] = () => offs.push(...fx.map((f) => effect(f)));\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null);\n }\n return state;\n}\nvar parse = (expr, dir2, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir2, expr);\n }\n return memo[expr] = fn;\n};\nvar memo = {};\nvar err = (e, dir2 = \"\", expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir2}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n};\nvar compile;\nsprae.use = (s) => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n};\nvar frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n // get parentNode() { return childNodes[0].parentNode },\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) {\n attributes.splice(attributes.findIndex((a) => a.name === name), 1);\n }\n // setAttributeNode() { }\n };\n};\n\n// directive/if.js\nvar _prevIf = Symbol(\"if\");\ndir(\"if\", (el, state) => {\n const holder = document.createTextNode(\"\");\n let next = el.nextElementSibling, curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n ifEl[_state] = null;\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null;\n }\n return (value) => {\n const newEl = value ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state)) : curEl[_on]();\n }\n }\n };\n});\n\n// directive/each.js\ndir(\n \"each\",\n (tpl, state, expr) => {\n const [itemVar, idxVar = \"$\"] = expr.split(/\\s+in\\s+/)[0].split(/\\s*,\\s*/);\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n tpl[_state] = null;\n let cur, keys2, items, prevl = 0;\n const update = () => {\n var _a, _b;\n let i = 0, newItems = items, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]();\n cur = null, prevl = 0;\n }\n if (newl < prevl) cur.length = newl;\n else {\n if (!cur) cur = newItems;\n else while (i < prevl) cur[i] = newItems[i++];\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys2 ? keys2[idx] : idx\n }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n holder.before(el.content || el);\n sprae(el, scope);\n ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove();\n };\n }\n }\n prevl = newl;\n };\n return (value) => {\n keys2 = null;\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1);\n else if (value?.constructor === Object) keys2 = Object.keys(value), items = Object.values(value);\n else items = value || [];\n let planned = 0;\n return effect(() => {\n items[_change]?.value;\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n });\n };\n },\n // redefine evaluator to take second part of expression\n (expr) => parse(expr.split(/\\s+in\\s+/)[1])\n);\n\n// directive/default.js\ndir(\"default\", (target, state, expr, name) => {\n if (!name.startsWith(\"on\"))\n return name ? (value) => attr(target, name, value) : (value) => {\n for (let key in value) attr(target, dashcase(key), value[key]);\n };\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(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (_, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n const addListener = (fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) => {\n if (defer) fn = defer(fn);\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n };\n if (ctxs.length == 1) return (v) => addListener(v, ctxs[0]);\n let startFn, nextFn, off, idx = 0;\n const nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return (value) => (startFn = value, !off && nextListener(startFn), () => startFn = null);\n});\nvar mods = {\n // actions\n prevent(ctx) {\n ctx.prevent = true;\n },\n stop(ctx) {\n ctx.stop = true;\n },\n immediate(ctx) {\n ctx.immediate = true;\n },\n // options\n once(ctx) {\n ctx.once = true;\n },\n passive(ctx) {\n ctx.passive = true;\n },\n capture(ctx) {\n ctx.capture = true;\n },\n // target\n window(ctx) {\n ctx.target = window;\n },\n document(ctx) {\n ctx.target = document;\n },\n parent(ctx) {\n ctx.target = ctx.target.parentNode;\n },\n throttle(ctx, limit) {\n ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);\n },\n debounce(ctx, wait) {\n 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 // 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};\nvar 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 === \"\\xA0\" || 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};\nvar throttle = (fn, limit) => {\n let pause, planned, block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\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};\nvar 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};\nvar 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};\nvar dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n};\n\n// directive/value.js\ndir(\"value\", (el, state, expr) => {\n 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) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\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 } : (value) => el.value = value;\n ensure(state, expr);\n try {\n const set2 = setter(expr);\n const handleChange = el.type === \"checkbox\" ? () => set2(state, el.checked) : el.type === \"select-multiple\" ? () => set2(state, [...el.selectedOptions].map((o) => o.value)) : () => set2(state, el.selectedIndex < 0 ? null : el.value);\n el.oninput = el.onchange = handleChange;\n if (el.type?.startsWith(\"select\")) {\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n sprae(el, state);\n }\n } catch {\n }\n return update;\n});\nvar setter = (expr, set2 = parse(`${expr}=__`)) => (\n // FIXME: if there's a simpler way to set value in justin?\n (state, value) => (state.__ = value, set2(state, value), delete state.__)\n);\nvar ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => {\n var _a;\n return name && (state[_a = name[0]] ?? (state[_a] = null));\n};\n\n// directive/ref.js\ndir(\"ref\", (el, state, expr, _, ev) => (ensure(state, expr), ev(state) == null ? (setter(expr)(state, el), (_2) => _2) : (v) => v.call(null, el)));\n\n// directive/with.js\ndir(\"with\", (el, rootState, state) => (state = null, (values) => sprae(el, state ? values : state = store(values, rootState))));\n\n// directive/text.js\ndir(\"text\", (el) => (\n // <template :text=\"a\"/> or previously initialized template\n (el.content && el.replaceWith(el = frag(el).childNodes[0]), (value) => el.textContent = value == null ? \"\" : value)\n));\n\n// directive/class.js\ndir(\n \"class\",\n (el, cur) => (cur = /* @__PURE__ */ new Set(), (v) => {\n let clsx = /* @__PURE__ */ 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((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n })\n);\n\n// directive/style.js\ndir(\n \"style\",\n (el, initStyle) => (initStyle = el.getAttribute(\"style\"), (v) => {\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\n// directive/fx.js\ndir(\"fx\", (_) => (_2) => _2);\n\n// directive/aria.js\ndir(\"aria\", (el) => (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n});\n\n// directive/data.js\ndir(\"data\", (el) => (value) => {\n for (let key in value) el.dataset[key] = value[key];\n});\n\n// sprae.js\nsprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });\nvar sprae_default = sprae;\nexport {\n sprae_default as default\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["current", "signal", "v", "s", "obs", "val", "sub", "effect", "fn", "teardown", "fx", "deps", "prev", "dep", "computed", "c", "e", "batch", "untracked", "use", "_signals", "_change", "store", "values", "parent", "list", "signals", "_len", "state", "_", "key", "set", "desc", "mut", "lastProp", "i", "cur", "_dispose", "_state", "_on", "_off", "directive", "dir", "name", "create", "p", "parse", "el", "expr", "name2", "update", "evaluate", "sprae", "offs", "init", "el2", "attrs", "value", "pfx", "dir2", "child", "f", "memo", "compile", "err", "frag", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "holder", "next", "curEl", "ifEl", "elseEl", "newEl", "itemVar", "idxVar", "keys2", "items", "prevl", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "target", "attr", "dashcase", "ctxs", "ctx", "mod", "param", "mods", "addListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "startFn", "nextFn", "off", "nextListener", "limit", "throttle", "wait", "debounce", "keys", "pause", "block", "timeout", "str", "match", "from", "to", "ensure", "set2", "setter", "handleChange", "o", "ev", "_2", "rootState", "clsx", "cls", "v2", "k", "initStyle", "sprae_default"]
7
7
  }
package/dist/sprae.umd.js CHANGED
@@ -148,23 +148,21 @@ var init_store = __esm({
148
148
 
149
149
  // core.js
150
150
  function sprae(el, values) {
151
- if (!el?.childNodes) return;
152
151
  if (el[_state]) return Object.assign(el[_state], values);
153
152
  const state = store(values || {}), offs = [], fx = [];
154
- const init = (el2) => {
155
- if (!el2.childNodes) return;
156
- for (let i = 0; i < el2.attributes?.length; ) {
157
- let { name, value } = el2.attributes[i], update, pfx = name[0] === ":" ? 1 : name[0] === "s" && name[1] === "-" ? 2 : 0;
158
- if (pfx) {
153
+ const init = (el2, attrs = el2.attributes) => {
154
+ if (attrs) for (let i = 0; i < attrs.length; ) {
155
+ let { name, value } = attrs[i], pfx, update, dir2;
156
+ if (pfx = name[0] === ":" ? 1 : name[0] === "s" && name[1] === "-" ? 2 : 0) {
159
157
  el2.removeAttribute(name);
160
- for (let dir2 of name.slice(pfx).split(":")) {
158
+ for (dir2 of name.slice(pfx).split(":")) {
161
159
  update = (directive[dir2] || directive.default)(el2, value, state, dir2);
162
160
  fx.push(update), offs.push(effect(update));
163
161
  if (el2[_state] === null) return;
164
162
  }
165
163
  } else i++;
166
164
  }
167
- for (let child of [...el2.childNodes]) init(child);
165
+ for (let child of el2.childNodes) child.nodeType == 1 && init(child);
168
166
  };
169
167
  init(el);
170
168
  if (!(_state in el)) {
@@ -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/default.js", "../directive/value.js", "../directive/ref.js", "../directive/with.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/fx.js", "../directive/aria.js", "../directive/data.js", "../sprae.js", "../sprae.umd.cjs"],
4
- "sourcesContent": ["// ulive copy, stable minimal implementation\nlet current;\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) 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 => fn(),\n untracked = batch\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 || batch\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, batch } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('change');\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] && (signals[key][Symbol.dispose]?.(), delete signals[key], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals)),\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] = null\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = ['push', 'pop', 'shift', 'unshift', 'splice']\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 // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut.includes(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 // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; 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 = +key + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key]?.[Symbol.dispose]?.(), delete signals[key], 1),\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. preserve signal value as is\n else if (!s) signals[key] = s = v?.peek ? v : signal(store(v))\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]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i]\n cur.length = v.length // forces deleting tail signals\n })\n else s.value = v\n }\n // .x = y\n else s.value = store(v)\n}\n", "import { use, effect } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\nexport const _state = Symbol(\"state\"), _on = Symbol('on'), _off = Symbol('off')\n\n// registered directives\nconst directive = {}\n\n/**\n * Register a directive with a parsed expression and evaluator.\n * @param {string} name - The name of the directive.\n * @param {(el: Element, state: Object, attrValue: string, attrName: string) => (value: any) => void} create - A function to create the directive.\n * @param {(expr: string) => (state: Object) => any} [p=parse] - Create evaluator from expression string.\n */\nexport const dir = (name, create, p = parse) => directive[name] = (el, expr, state, name, update, evaluate) => (\n evaluate = p(expr),\n update = create(el, state, expr, name, evaluate),\n () => update(evaluate(state))\n)\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} el - The target HTML element to apply directives to.\n * @param {Object} [values] - Initial values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], values)\n\n // take over existing state instead of creating a clone\n const state = store(values || {}), offs = [], fx = []\n\n const init = el => {\n // ignore text nodes, comments etc\n if (!el.childNodes) return\n\n for (let i = 0; i < el.attributes?.length;) {\n let {name, value} = el.attributes[i], update, pfx = name[0] === ':' ? 1 : (name[0]==='s'&&name[1]==='-') ? 2 : 0\n\n // if we have parts meaning there's attr needs to be spraed\n // :id:name -> [,id,name]; s-text:id -> [,text,id]; ab-cd -> [ab-cd]\n if (pfx) {\n el.removeAttribute(name);\n\n // multiple attributes like :id:for=\"\"\n for (let dir of name.slice(pfx).split(':')) {\n update = (directive[dir] || directive.default)(el, value, state, dir)\n\n // save & start effect\n fx.push(update), offs.push(effect(update))\n\n // stop after :each, :if, :with etc.\n if (el[_state]===null) return\n }\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child);\n };\n\n init(el);\n\n // if element was spraed by inline :with instruction (meaning it has extended state) - skip, otherwise save _state\n if (!(_state in el)) {\n el[_state] = state\n\n // on/off all effects\n el[_off] = () => { while (offs.length) offs.pop()() }\n el[_on] = () => offs.push(...fx.map(f => effect(f)))\n\n // destroy\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null)\n }\n\n return state;\n}\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @param {string} dir - The directive associated with the expression (used for error reporting).\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr, dir, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n return memo[expr] = fn\n}\nconst memo = {};\n\n/**\n * Branded sprae error with context about the directive and expression\n *\n * @param {Error} e - The original error object to enhance.\n * @param {string} dir - The directive where the error occurred.\n * @param {string} [expr=''] - The expression associated with the error, if any.\n * @throws {Error} The enhanced error object with a formatted message.\n */\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\n/**\n * Compiles an expression into an evaluator function.\n *\n * @type {(expr: string) => Function}\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 // get parentNode() { return childNodes[0].parentNode },\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, { dir, _state, _on, _off, 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\");\n\ndir('if', (el, state) => {\n const holder = document.createTextNode('')\n\n let next = el.nextElementSibling,\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n ifEl[_state] = null // mark el as fake-spraed to holdon init, since we sprae rest when branch matches\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, elseEl[_state] = null\n }\n\n return (value) => {\n const newEl = value ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements when element is not matched\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n // remove fake memo to sprae as new\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state))\n // enable effects if branch is matched\n : curEl[_on]()\n }\n }\n };\n})\n", "import sprae, { _state, dir, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect } from '../signal.js';\n\n\ndir('each', (tpl, state, expr) => {\n const [itemVar, idxVar = \"$\"] = expr.split(/\\s+in\\s+/)[0].split(/\\s*,\\s*/);\n\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 tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n const update = () => {\n let i = 0, newItems = items, 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) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\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 return value => {\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n })\n }\n },\n\n // redefine evaluator to take second part of expression\n expr => parse(expr.split(/\\s+in\\s+/)[1])\n)\n", "// generic property directive\nimport { dir, err } from \"../core.js\";\n\ndir('default', (target, state, expr, name) => {\n // simple prop\n if (!name.startsWith('on'))\n return name ?\n value => attr(target, name, value) :\n value => { for (let key in value) attr(target, dashcase(key), value[key]) };\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 (_, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // add listener with the context\n const 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?.call(state, 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 // single event\n if (ctxs.length == 1) return v => addListener(v, 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 value => (\n startFn = value,\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\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 parent(ctx) { ctx.target = ctx.target.parentNode; },\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// 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\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\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 { dir, parse } from \"../core.js\";\nimport { attr } from './default.js';\n\n\ndir('value', (el, state, expr) => {\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 // make sure value exists in state\n ensure(state, expr)\n\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n } catch {}\n\n return update\n})\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, set = parse(`${expr}=__`)) => (\n // FIXME: if there's a simpler way to set value in justin?\n (state, value) => (\n state.__ = value,\n set(state, value),\n delete state.__\n )\n)\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\nexport const ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => name && (state[name[0]] ??= null)\n", "import { dir, parse } from \"../core.js\";\nimport { setter, ensure } from \"./value.js\";\n\ndir('ref', (el, state, expr, _, ev) => (\n ensure(state, expr),\n ev(state) == null ?\n (setter(expr)(state, el), _ => _) :\n v => v.call(null, el)\n))\n", "import sprae, { dir } from \"../core.js\";\nimport store, { _signals } from '../store.js';\n\ndir('with', (el, rootState, state) => (state=null, values => sprae(el, state ? values : state = store(values, rootState))))\n", "import { dir, frag } from \"../core.js\";\n\ndir('text', el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n value => el.textContent = value == null ? \"\" : value\n))\n", "import { dir } from \"../core.js\";\n\ndir('class', (el, cur) => (\n cur = new Set,\n v => {\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 { dir } from \"../core.js\";\n\ndir('style', (el, initStyle) => (\n initStyle = el.getAttribute(\"style\"),\n v => {\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 { dir } from \"../core.js\";\n\ndir('fx', _ => _ => _)\n", "import { dir } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndir('aria', (el) => value => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '')\n})\n", "import { dir } from \"../core.js\";\n\ndir('data', el => value => {for (let key in value) el.dataset[key] = value[key];})\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/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\nimport './directive/aria.js'\nimport './directive/data.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", "// autonomous standalone sprae version - expected to run via CDN, CJS or AMD\n\nconst { default: sprae } = require(\"./sprae.js\");\n\n// expose global\nmodule.exports = sprae\n\n// autoinit if wanted\nif (document.currentScript?.hasAttribute('init')) {\n const props = JSON.parse(document.currentScript?.getAttribute('init') || '{}')\n const init = () => { sprae(document.documentElement, props) };\n\n if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n else init();\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// ulive copy, stable minimal implementation\nlet current;\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) 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 => fn(),\n untracked = batch\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 || batch\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, batch } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('change');\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] && (signals[key][Symbol.dispose]?.(), delete signals[key], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals)),\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] = null\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = ['push', 'pop', 'shift', 'unshift', 'splice']\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 // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut.includes(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 // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; 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 = +key + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key]?.[Symbol.dispose]?.(), delete signals[key], 1),\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. preserve signal value as is\n else if (!s) signals[key] = s = v?.peek ? v : signal(store(v))\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]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i]\n cur.length = v.length // forces deleting tail signals\n })\n else s.value = v\n }\n // .x = y\n else s.value = store(v)\n}\n", "import { use, effect } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\nexport const _state = Symbol(\"state\"), _on = Symbol('on'), _off = Symbol('off')\n\n// registered directives\nconst directive = {}\n\n/**\n * Register a directive with a parsed expression and evaluator.\n * @param {string} name - The name of the directive.\n * @param {(el: Element, state: Object, attrValue: string, attrName: string) => (value: any) => void} create - A function to create the directive.\n * @param {(expr: string) => (state: Object) => any} [p=parse] - Create evaluator from expression string.\n */\nexport const dir = (name, create, p = parse) => directive[name] = (el, expr, state, name, update, evaluate) => (\n evaluate = p(expr),\n update = create(el, state, expr, name, evaluate),\n () => update(evaluate(state))\n)\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} el - The target HTML element to apply directives to.\n * @param {Object} [values] - Initial values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nexport default function sprae(el, values) {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], values)\n\n // take over existing state instead of creating a clone\n const state = store(values || {}), offs = [], fx = []\n\n const init = (el, attrs=el.attributes) => {\n // we iterate live collection (subsprae can init args)\n if (attrs) for (let i = 0; i < attrs.length;) {\n let {name, value} = attrs[i], pfx, update, dir\n\n // if we have parts meaning there's attr needs to be spraed\n // :id:name -> [,id,name]; s-text:id -> [,text,id]; ab-cd -> [ab-cd]\n if (pfx = name[0] === ':' ? 1 : (name[0]==='s' && name[1]==='-') ? 2 : 0) {\n el.removeAttribute(name);\n\n // multiple attributes like :id:for=\"\"\n for (dir of name.slice(pfx).split(':')) {\n update = (directive[dir] || directive.default)(el, value, state, dir)\n\n // save & start effect\n fx.push(update), offs.push(effect(update))\n\n // stop after :each, :if, :with etc.\n if (el[_state]===null) return\n }\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n for (let child of el.childNodes) child.nodeType==1 && init(child)\n };\n\n init(el);\n\n // if element was spraed by inline :with instruction (meaning it has extended state) - skip, otherwise save _state\n if (!(_state in el)) {\n el[_state] = state\n\n // on/off all effects\n el[_off] = () => { while (offs.length) offs.pop()() }\n el[_on] = () => offs.push(...fx.map(f => effect(f)))\n\n // destroy\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null)\n }\n\n return state;\n}\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @param {string} dir - The directive associated with the expression (used for error reporting).\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr, dir, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n return memo[expr] = fn\n}\nconst memo = {};\n\n/**\n * Branded sprae error with context about the directive and expression\n *\n * @param {Error} e - The original error object to enhance.\n * @param {string} dir - The directive where the error occurred.\n * @param {string} [expr=''] - The expression associated with the error, if any.\n * @throws {Error} The enhanced error object with a formatted message.\n */\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\n/**\n * Compiles an expression into an evaluator function.\n *\n * @type {(expr: string) => Function}\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 // get parentNode() { return childNodes[0].parentNode },\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, { dir, _state, _on, _off, 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\");\n\ndir('if', (el, state) => {\n const holder = document.createTextNode('')\n\n let next = el.nextElementSibling,\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n ifEl[_state] = null // mark el as fake-spraed to holdon init, since we sprae rest when branch matches\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, elseEl[_state] = null\n }\n\n return (value) => {\n const newEl = value ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements when element is not matched\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n // remove fake memo to sprae as new\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state))\n // enable effects if branch is matched\n : curEl[_on]()\n }\n }\n };\n})\n", "import sprae, { _state, dir, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect } from '../signal.js';\n\n\ndir('each', (tpl, state, expr) => {\n const [itemVar, idxVar = \"$\"] = expr.split(/\\s+in\\s+/)[0].split(/\\s*,\\s*/);\n\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 tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n const update = () => {\n let i = 0, newItems = items, 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) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\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 return value => {\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n })\n }\n },\n\n // redefine evaluator to take second part of expression\n expr => parse(expr.split(/\\s+in\\s+/)[1])\n)\n", "// generic property directive\nimport { dir, err } from \"../core.js\";\n\ndir('default', (target, state, expr, name) => {\n // simple prop\n if (!name.startsWith('on'))\n return name ?\n value => attr(target, name, value) :\n value => { for (let key in value) attr(target, dashcase(key), value[key]) };\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 (_, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // add listener with the context\n const 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?.call(state, 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 // single event\n if (ctxs.length == 1) return v => addListener(v, 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 value => (\n startFn = value,\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\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 parent(ctx) { ctx.target = ctx.target.parentNode; },\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// 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\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\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 { dir, parse } from \"../core.js\";\nimport { attr } from './default.js';\n\n\ndir('value', (el, state, expr) => {\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 // make sure value exists in state\n ensure(state, expr)\n\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n } catch {}\n\n return update\n})\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, set = parse(`${expr}=__`)) => (\n // FIXME: if there's a simpler way to set value in justin?\n (state, value) => (\n state.__ = value,\n set(state, value),\n delete state.__\n )\n)\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\nexport const ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => name && (state[name[0]] ??= null)\n", "import { dir, parse } from \"../core.js\";\nimport { setter, ensure } from \"./value.js\";\n\ndir('ref', (el, state, expr, _, ev) => (\n ensure(state, expr),\n ev(state) == null ?\n (setter(expr)(state, el), _ => _) :\n v => v.call(null, el)\n))\n", "import sprae, { dir } from \"../core.js\";\nimport store, { _signals } from '../store.js';\n\ndir('with', (el, rootState, state) => (state=null, values => sprae(el, state ? values : state = store(values, rootState))))\n", "import { dir, frag } from \"../core.js\";\n\ndir('text', el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n value => el.textContent = value == null ? \"\" : value\n))\n", "import { dir } from \"../core.js\";\n\ndir('class', (el, cur) => (\n cur = new Set,\n v => {\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 { dir } from \"../core.js\";\n\ndir('style', (el, initStyle) => (\n initStyle = el.getAttribute(\"style\"),\n v => {\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 { dir } from \"../core.js\";\n\ndir('fx', _ => _ => _)\n", "import { dir } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndir('aria', (el) => value => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '')\n})\n", "import { dir } from \"../core.js\";\n\ndir('data', el => value => {for (let key in value) el.dataset[key] = value[key];})\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/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\nimport './directive/aria.js'\nimport './directive/data.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", "// autonomous standalone sprae version - expected to run via CDN, CJS or AMD\n\nconst { default: sprae } = require(\"./sprae.js\");\n\n// expose global\nmodule.exports = sprae\n\n// autoinit if wanted\nif (document.currentScript?.hasAttribute('init')) {\n const props = JSON.parse(document.currentScript?.getAttribute('init') || '{}')\n const init = () => { sprae(document.documentElement, props) };\n\n if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n else init();\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AA8CO,SAAS,IAAI,GAAG;AACrB,WAAS,EAAE;AACX,WAAS,EAAE;AACX,aAAW,EAAE;AACb,UAAQ,EAAE,SAAS;AACnB,cAAY,EAAE,aAAa;AAC7B;AApDA,IACI,SAEO,QAgBT,QAWA,UAWA,OACA;AA1CF;AAAA;AAGO,IAAI,SAAS,CAAC,GAAG,GAAG,MAAM,oBAAI,WACnC,IAAI;AAAA,MACF,IAAI,QAAQ;AACV,iBAAS,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC;AACnC,eAAO;AAAA,MACT;AAAA,MACA,IAAI,MAAM,KAAK;AACb,YAAI,QAAQ,EAAG;AACf,YAAI;AACJ,iBAAS,OAAO,IAAK,KAAI;AAAA,MAC3B;AAAA,MACA,OAAO;AAAE,eAAO;AAAA,MAAE;AAAA,IACpB,GACA,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,MAAM,EAAE,OACrD;AAdK,IAgBL,SAAS,CAAC,IAAI,UAAU,IAAI,UAC1B,KAAK,CAAC,SAAS;AACb,gBAAU,OAAO;AACjB,aAAO,SAAS,UAAU;AAC1B,UAAI;AAAE,mBAAW,GAAG;AAAA,MAAG,UAAE;AAAU,kBAAU;AAAA,MAAM;AAAA,IACrD,GACA,OAAO,GAAG,OAAO,CAAC,GAElB,GAAG,GACH,CAAC,QAAQ;AAAE,gBAAU,OAAO;AAAG,aAAO,MAAM,KAAK,IAAI,EAAG,KAAI,OAAO,EAAE;AAAA,IAAG;AAzBrE,IA2BL,WAAW,CAAC,IAAI,IAAI,OAAO,GAAG,GAAG,OAC/B,IAAI;AAAA,MACF,IAAI,QAAQ;AACV,kBAAM,OAAO,MAAM,EAAE,QAAQ,GAAG,CAAC;AACjC,eAAO,EAAE;AAAA,MACX;AAAA,MACA,MAAM,EAAE;AAAA,IACV,GACA,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,MAAM,EAAE,OACrD;AApCG,IAsCL,QAAQ,QAAM,GAAG;AAtCZ,IAuCL,YAAY;AAAA;AAAA;;;ACpCC,SAAR,MAAuB,QAAQ,QAAQ;AAC5C,MAAI,CAAC,OAAQ,QAAO;AAGpB,MAAI,OAAO,QAAQ,EAAG,QAAO;AAG7B,MAAI,MAAM,QAAQ,MAAM,EAAG,QAAO,KAAK,MAAM;AAG7C,MAAI,OAAO,gBAAgB,UAAU,OAAO,OAAO,WAAW,EAAG,QAAO;AAGxE,MAAI,UAAU,EAAE,GAAG,SAAS,QAAQ,EAAE,GAAG,OAAO,OAAO,OAAO,OAAO,MAAM,EAAE,MAAM;AAGnF,QAAM,QAAQ,IAAI,MAAM,SAAS;AAAA,IAC/B,KAAK,CAAC,GAAG,QAAQ,QAAQ,UAAU,OAAO,QAAQ,WAAW,UAAU,QAAQ,GAAG,GAAG,QAAQ;AAAA,IAC7F,KAAK,CAAC,GAAG,KAAK,GAAG,OAAO,IAAI,QAAQ,GAAG,GAAG,IAAI,SAAS,KAAK,CAAC,GAAG,KAAM,EAAE,KAAK,OAAQ;AAAA;AAAA,IACrF,gBAAgB,CAAC,GAAG,SAAS,QAAQ,GAAG,MAAM,QAAQ,GAAG,EAAE,OAAO,OAAO,IAAI,GAAG,OAAO,QAAQ,GAAG,GAAG,KAAK,UAAU;AAAA;AAAA,IAEpH,SAAS,OAAO,KAAK,OAAO,QAAQ,QAAQ,OAAO;AAAA,EACrD,CAAC;AAGD,WAAS,OAAO,QAAQ;AACtB,UAAM,OAAO,OAAO,yBAAyB,QAAQ,GAAG;AAGxD,QAAI,MAAM,KAAK;AAEb,OAAC,QAAQ,GAAG,IAAI,SAAS,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,OAAO,KAAK,KAAK,KAAK,KAAK;AAAA,IAC7E,OACK;AAEH,cAAQ,GAAG,IAAI;AACf,UAAI,SAAS,KAAK,OAAO,GAAG,CAAC;AAAA,IAC/B;AAAA,EACF;AAEA,SAAO;AACT;AAMO,SAAS,KAAK,QAAQ;AAE3B,MAAI;AAGJ,MAAI,OAAO,QAAQ,EAAG,QAAO;AAG7B,MAAI,OAAO,OAAO,OAAO,MAAM,GAE7B,UAAU,MAAM,OAAO,MAAM,EAAE,KAAK;AAGtC,QAAM,QAAQ,IAAI,MAAM,SAAS;AAAA,IAC/B,IAAI,GAAG,KAAK;AAEV,UAAI,OAAO,QAAQ,SAAU,QAAO,QAAQ,UAAU,OAAO,QAAQ,WAAW,UAAU,QAAQ,GAAG;AAGrG,UAAI,QAAQ,SAAU,QAAO,IAAI,SAAS,QAAQ,IAAI,KAAK,KAAK,IAAI,KAAK;AAEzE,iBAAW;AAEX,UAAI,QAAQ,GAAG,EAAG,QAAO,QAAQ,GAAG,EAAE,QAAQ;AAG9C,UAAI,MAAM,QAAQ,OAAQ,SAAQ,QAAQ,GAAG,IAAI,OAAO,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG;AAAA,IAC/E;AAAA,IAEA,IAAI,GAAG,KAAK,GAAG;AAEb,UAAI,QAAQ,UAAU;AAEpB,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,IAAK,QAAO,MAAM,CAAC;AAEvD,aAAK,QAAQ,QAAQ,SAAS;AAC9B,eAAO;AAAA,MACT;AAEA,UAAI,SAAS,KAAK,CAAC;AAGnB,UAAI,OAAO,KAAK,KAAK,EAAG,MAAK,QAAQ,QAAQ,SAAS,CAAC,MAAM;AAE7D,aAAO;AAAA,IACT;AAAA,IAEA,gBAAgB,CAAC,GAAG,SAAS,QAAQ,GAAG,IAAI,OAAO,OAAO,IAAI,GAAG,OAAO,QAAQ,GAAG,GAAG;AAAA,EACxF,CAAC;AAED,SAAO;AACT;AAGA,SAAS,IAAI,SAAS,KAAK,GAAG;AAC5B,MAAI,IAAI,QAAQ,GAAG;AAGnB,MAAI,IAAI,CAAC,MAAM,IAAK,SAAQ,GAAG,IAAI;AAAA,WAE1B,CAAC,EAAG,SAAQ,GAAG,IAAI,IAAI,GAAG,OAAO,IAAI,OAAO,MAAM,CAAC,CAAC;AAAA,WAEpD,MAAM,EAAE,KAAK,EAAE;AAAA,WAEf,EAAE,KAAM,GAAE,KAAK,CAAC;AAAA,WAEhB,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,EAAE,KAAK,CAAC,GAAG;AACpD,UAAM,MAAM,EAAE,KAAK;AAEnB,QAAI,IAAI,OAAO,EAAG,OAAM,MAAM;AAC5B,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,CAAC,IAAI,EAAE,CAAC;AAC/C,UAAI,SAAS,EAAE;AAAA,IACjB,CAAC;AAAA,QACI,GAAE,QAAQ;AAAA,EACjB,MAEK,GAAE,QAAQ,MAAM,CAAC;AACxB;AAlIA,IAGa,UAA8B,SA+CrC;AAlDN;AAAA;AACA;AAEO,IAAM,WAAW,OAAO,SAAS;AAAjC,IAAoC,UAAU,OAAO,QAAQ;AA+CpE,IAAM,MAAM,CAAC,QAAQ,OAAO,SAAS,WAAW,QAAQ;AAAA;AAAA;;;ACpBzC,SAAR,MAAuB,IAAI,QAAQ;AAExC,MAAI,GAAG,MAAM,EAAG,QAAO,OAAO,OAAO,GAAG,MAAM,GAAG,MAAM;AAGvD,QAAM,QAAQ,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC;AAEpD,QAAM,OAAO,CAACA,KAAI,QAAMA,IAAG,eAAe;AAExC,QAAI,MAAO,UAAS,IAAI,GAAG,IAAI,MAAM,UAAS;AAC5C,UAAI,EAAC,MAAM,MAAK,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQC;AAI3C,UAAI,MAAM,KAAK,CAAC,MAAM,MAAM,IAAK,KAAK,CAAC,MAAI,OAAO,KAAK,CAAC,MAAI,MAAO,IAAI,GAAG;AACxE,QAAAD,IAAG,gBAAgB,IAAI;AAGvB,aAAKC,QAAO,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,GAAG;AACtC,oBAAU,UAAUA,IAAG,KAAK,UAAU,SAASD,KAAI,OAAO,OAAOC,IAAG;AAGpE,aAAG,KAAK,MAAM,GAAG,KAAK,KAAK,OAAO,MAAM,CAAC;AAGzC,cAAID,IAAG,MAAM,MAAI,KAAM;AAAA,QACzB;AAAA,MACF,MAAO;AAAA,IACT;AAGA,aAAS,SAASA,IAAG,WAAY,OAAM,YAAU,KAAK,KAAK,KAAK;AAAA,EAClE;AAEA,OAAK,EAAE;AAGP,MAAI,EAAE,UAAU,KAAK;AACnB,OAAG,MAAM,IAAI;AAGb,OAAG,IAAI,IAAI,MAAM;AAAE,aAAO,KAAK,OAAQ,MAAK,IAAI,EAAE;AAAA,IAAE;AACpD,OAAG,GAAG,IAAI,MAAM,KAAK,KAAK,GAAG,GAAG,IAAI,OAAK,OAAO,CAAC,CAAC,CAAC;AAGnD,OAAG,QAAQ,IAAI,OAAO,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,QAAQ,IAAI,GAAG,MAAM,IAAI;AAAA,EACrF;AAEA,SAAO;AACT;AA/EA,IAIM,UAEO,QAA0B,KAAoB,MAGrD,WAQO,KAuEA,OASP,MAUO,KASF,SAWE;AA/Hb;AAAA;AAAA;AACA;AAGA,IAAM,WAAY,OAAO,YAAP,OAAO,UAAY,OAAO,SAAS;AAE9C,IAAM,SAAS,OAAO,OAAO;AAA7B,IAAgC,MAAM,OAAO,IAAI;AAAjD,IAAoD,OAAO,OAAO,KAAK;AAG9E,IAAM,YAAY,CAAC;AAQZ,IAAM,MAAM,CAAC,MAAM,QAAQ,IAAI,UAAU,UAAU,IAAI,IAAI,CAAC,IAAI,MAAM,OAAOE,OAAM,QAAQ,cAChG,WAAW,EAAE,IAAI,GACjB,SAAS,OAAO,IAAI,OAAO,MAAMA,OAAM,QAAQ,GAC/C,MAAM,OAAO,SAAS,KAAK,CAAC;AAoEvB,IAAM,QAAQ,CAAC,MAAMD,MAAK,OAAO;AACtC,UAAI,KAAK,KAAK,OAAO,KAAK,KAAK,CAAC,EAAG,QAAO;AAG1C,UAAI;AAAE,aAAK,QAAQ,IAAI;AAAA,MAAE,SAClB,GAAG;AAAE,YAAI,GAAGA,MAAK,IAAI;AAAA,MAAE;AAE9B,aAAO,KAAK,IAAI,IAAI;AAAA,IACtB;AACA,IAAM,OAAO,CAAC;AAUP,IAAM,MAAM,CAAC,GAAGA,OAAI,IAAI,OAAK,OAAO;AACzC,YAAM,OAAO,OAAO,GAAG,EAAE,SAAS,UAAK,EAAE,OAAO;AAAA;AAAA,EAAOA,IAAG,GAAG,OAAO,KAAK,IAAI;AAAA;AAAA,IAAU,EAAE,IAAI,KAAK,CAAC;AAAA,IACrG;AAWA,UAAM,MAAM,OAAK;AACf,QAAE,UAAU,IAAI,CAAC;AACjB,QAAE,YAAY,UAAU,EAAE;AAAA,IAC5B;AAIO,IAAM,OAAO,CAAC,QAAQ;AAC3B,UAAI,CAAC,IAAI,SAAU,QAAO;AAE1B,UAAI,UAAU,IAAI,QAAQ,UAAU,IAAI,GACtC,aAAa,CAAC,GAAG,IAAI,UAAU,GAC/B,MAAM,SAAS,eAAe,EAAE,GAEhC,cAAc,QAAQ,OAAO,GAAG,GAAG,CAAC,GAAG,QAAQ,UAAU;AAE3D,aAAO;AAAA;AAAA,QAEL;AAAA,QACA;AAAA,QACA,QAAQ,MAAM,QAAQ,OAAO,GAAG,UAAU;AAAA,QAC1C,YAAY,IAAI;AACd,cAAI,OAAO,IAAK;AAChB,cAAI,OAAO,EAAE;AACb,kBAAQ,OAAO,GAAG,UAAU;AAAA,QAC9B;AAAA,QACA;AAAA,QACA,gBAAgB,MAAM;AAAE,qBAAW,OAAO,WAAW,UAAU,OAAK,EAAE,SAAS,IAAI,GAAG,CAAC;AAAA,QAAE;AAAA;AAAA,MAE3F;AAAA,IACF;AAAA;AAAA;;;ACtJA,IAKM;AALN;AAAA;AAAA;AAKA,IAAM,UAAU,OAAO,IAAI;AAE3B,QAAI,MAAM,CAAC,IAAI,UAAU;AACvB,YAAM,SAAS,SAAS,eAAe,EAAE;AAEzC,UAAI,OAAO,GAAG,oBACZ,OAAO,MAAM;AAEf,SAAG,YAAY,MAAM;AAErB,aAAO,GAAG,UAAU,KAAK,EAAE,IAAI;AAC/B,WAAK,MAAM,IAAI;AAEf,UAAI,MAAM,aAAa,OAAO,GAAG;AAC/B,aAAK,gBAAgB,OAAO;AAE5B,YAAI,CAAC,KAAK,aAAa,KAAK,EAAG,MAAK,OAAO,GAAG,SAAS,KAAK,UAAU,KAAK,IAAI,IAAI,MAAM,OAAO,MAAM,IAAI;AAAA,MAC5G;AAEA,aAAO,CAAC,UAAU;AAChB,cAAM,QAAQ,QAAQ,OAAO,GAAG,OAAO,IAAI,OAAO;AAClD,YAAI,KAAM,MAAK,OAAO,IAAI,UAAU;AACpC,YAAI,SAAS,OAAO;AAElB,cAAI,MAAO,OAAM,OAAO,GAAG,MAAM,IAAI,IAAI;AACzC,cAAI,QAAQ,OAAO;AACjB,mBAAO,OAAO,MAAM,WAAW,KAAK;AAEpC,kBAAM,MAAM,MAAM,QAAQ,OAAO,MAAM,MAAM,GAAG,MAAM,OAAO,KAAK,KAEhE,MAAM,GAAG,EAAE;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA;AAAA;;;ACvCD;AAAA;AAAA;AACA;AACA;AAGA;AAAA,MAAI;AAAA,MAAQ,CAAC,KAAK,OAAO,SAAS;AAC9B,cAAM,CAAC,SAAS,SAAS,GAAG,IAAI,KAAK,MAAM,UAAU,EAAE,CAAC,EAAE,MAAM,SAAS;AAGzE,cAAM,SAAS,SAAS,eAAe,EAAE;AACzC,YAAI,YAAY,MAAM;AACtB,YAAI,MAAM,IAAI;AAGd,YAAI,KAAKE,OAAM,OAAO,QAAQ;AAE9B,cAAM,SAAS,MAAM;AAhBzB;AAiBM,cAAI,IAAI,GAAG,WAAW,OAAO,OAAO,SAAS;AAG7C,cAAI,OAAO,CAAC,IAAI,OAAO,GAAG;AACxB,qBAAS,KAAK,IAAI,QAAQ,KAAK,CAAC,EAAG,GAAE,OAAO,OAAO,EAAE;AACrD,kBAAM,MAAM,QAAQ;AAAA,UACtB;AAGA,cAAI,OAAO,MAAO,KAAI,SAAS;AAAA,eAG1B;AAEH,gBAAI,CAAC,IAAK,OAAM;AAAA,gBAEX,QAAO,IAAI,MAAO,KAAI,CAAC,IAAI,SAAS,GAAG;AAG5C,mBAAO,IAAI,MAAM,KAAK;AACpB,kBAAI,CAAC,IAAI,SAAS,CAAC;AACnB,kBAAI,MAAM,GACR,QAAQ,MAAM;AAAA,gBACZ,CAAC,OAAO,GAAG,IAAI,QAAQ,IAAI,GAAG,KAAK,IAAI,GAAG;AAAA,gBAC1C,CAAC,MAAM,GAAGA,QAAOA,MAAK,GAAG,IAAI;AAAA,cAC/B,GAAG,KAAK,GACR,KAAK,IAAI,UAAU,KAAK,GAAG,IAAI,IAAI,UAAU,IAAI;AAEnD,qBAAO,OAAO,GAAG,WAAW,EAAE;AAC9B,oBAAM,IAAI,KAAK;AAGf,gBAAE,cAAI,cAAJ,UAAkB,CAAC,IAAnB,eAA6B,CAAC,IAAG,OAAO,OAAO,IAAI,MAAM;AACzD,mBAAG,OAAO,OAAO,IAAI,GAAG,GAAG,OAAO;AAAA,cACpC;AAAA,YACF;AAAA,UACF;AAEA,kBAAQ;AAAA,QACV;AAEA,eAAO,WAAS;AACd,UAAAA,QAAO;AACP,cAAI,OAAO,UAAU,SAAU,SAAQ,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,mBAC3E,OAAO,gBAAgB,OAAQ,CAAAA,QAAO,OAAO,KAAK,KAAK,GAAG,QAAQ,OAAO,OAAO,KAAK;AAAA,cACzF,SAAQ,SAAS,CAAC;AAGvB,cAAI,UAAU;AACd,iBAAO,OAAO,MAAM;AAElB,kBAAM,OAAO,GAAG;AAGhB,gBAAI,CAAC,UAAW,QAAO,GAAG,eAAe,OAAO,UAAU,KAAK,OAAO,GAAG,UAAU,EAAE;AAAA,UACvF,CAAC;AAAA,QACH;AAAA,MACF;AAAA;AAAA,MAGA,UAAQ,MAAM,KAAK,MAAM,UAAU,EAAE,CAAC,CAAC;AAAA,IACzC;AAAA;AAAA;;;AC9EA,IAsDM,MA+CA,MAiBA,UAiBA,UAYO,MAKA;AAxJb;AAAA;AACA;AAEA,QAAI,WAAW,CAAC,QAAQ,OAAO,MAAM,SAAS;AAE5C,UAAI,CAAC,KAAK,WAAW,IAAI;AACvB,eAAO,OACL,WAAS,KAAK,QAAQ,MAAM,KAAK,IACjC,WAAS;AAAE,mBAAS,OAAO,MAAO,MAAK,QAAQ,SAAS,GAAG,GAAG,MAAM,GAAG,CAAC;AAAA,QAAE;AAK9E,YAAM,OAAO,KAAK,MAAM,IAAI,EAAE,IAAI,OAAK;AACrC,YAAI,MAAM,EAAE,KAAK,IAAI,QAAQ,MAAM,MAAM,KAAK;AAC9C,YAAI,OAAO,EAAE,WAAW,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG;AAAA,UAAQ;AAAA,UACtD,CAAC,GAAG,KAAK,QAAQ,QAAQ,IAAI,OAAO,KAAK,GAAG,IAAI,KAAK,GAAG,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,MAAM;AAAA,QACzF;AACA,eAAO;AAAA,MACT,CAAC;AAGD,YAAM,cAAc,CAAC,IAAI,EAAE,KAAK,QAAAC,SAAQ,MAAM,OAAO,MAAM,SAAS,WAAW,GAAG,KAAK,MAAM;AAC3F,YAAI,MAAO,MAAK,MAAM,EAAE;AAExB,cAAM,KAAK,CAAC,MAAM;AAChB,cAAI;AACF,iBAAK,CAAC,MAAM,SAAS,YAAY,EAAE,yBAAyB,IAAI,EAAE,gBAAgB,IAAI,WAAW,EAAE,eAAe,GAAG,IAAI,KAAK,OAAO,CAAC;AAAA,UACxI,SAAS,OAAO;AAAE,gBAAI,OAAO,MAAM,GAAG,IAAI,EAAE;AAAA,UAAE;AAAA,QAChD;AAEA,QAAAA,QAAO,iBAAiB,KAAK,IAAI,IAAI;AACrC,eAAO,MAAMA,QAAO,oBAAoB,KAAK,IAAI,IAAI;AAAA,MACvD;AAGA,UAAI,KAAK,UAAU,EAAG,QAAO,OAAK,YAAY,GAAG,KAAK,CAAC,CAAC;AAGxD,UAAI,SAAS,QAAQ,KAAK,MAAM;AAChC,YAAM,eAAe,CAAC,OAAO;AAC3B,cAAM,YAAY,CAAC,OACjB,IAAI,GAAG,SAAS,KAAK,CAAC,IAAI,MAAM,EAAE,MAAM,KAAK,UAAU,aAAa,MAAM,IAAK,WAAW,aAAa,OAAO,IAC7G,KAAK,GAAG,CAAC;AAAA,MACd;AAEA,aAAO,YACL,UAAU,OACV,CAAC,OAAO,aAAa,OAAO,GAC5B,MAAM,UAAU;AAAA,IAEpB,CAAC;AAGD,IAAM,OAAO;AAAA;AAAA,MAEX,QAAQ,KAAK;AAAE,YAAI,UAAU;AAAA,MAAM;AAAA,MACnC,KAAK,KAAK;AAAE,YAAI,OAAO;AAAA,MAAM;AAAA,MAC7B,UAAU,KAAK;AAAE,YAAI,YAAY;AAAA,MAAM;AAAA;AAAA,MAGvC,KAAK,KAAK;AAAE,YAAI,OAAO;AAAA,MAAM;AAAA,MAC7B,QAAQ,KAAK;AAAE,YAAI,UAAU;AAAA,MAAM;AAAA,MACnC,QAAQ,KAAK;AAAE,YAAI,UAAU;AAAA,MAAM;AAAA;AAAA,MAGnC,OAAO,KAAK;AAAE,YAAI,SAAS;AAAA,MAAQ;AAAA,MACnC,SAAS,KAAK;AAAE,YAAI,SAAS;AAAA,MAAU;AAAA,MACvC,OAAO,KAAK;AAAE,YAAI,SAAS,IAAI,OAAO;AAAA,MAAY;AAAA,MAElD,SAAS,KAAK,OAAO;AAAE,YAAI,QAAQ,CAAC,OAAO,SAAS,IAAI,QAAQ,OAAO,KAAK,KAAK,IAAI,GAAG;AAAA,MAAG;AAAA,MAC3F,SAAS,KAAK,MAAM;AAAE,YAAI,QAAQ,CAAC,OAAO,SAAS,IAAI,OAAO,OAAO,IAAI,KAAK,IAAI,GAAG;AAAA,MAAG;AAAA;AAAA,MAGxF,SAAS,CAAC,QAAQ,CAAC,MAAM;AACvB,YAAI,SAAS,IAAI;AACjB,YAAI,OAAO,SAAS,EAAE,MAAM,EAAG,QAAO;AACtC,YAAI,EAAE,OAAO,gBAAgB,MAAO,QAAO;AAC3C,YAAI,OAAO,cAAc,KAAK,OAAO,eAAe,EAAG,QAAO;AAC9D,eAAO;AAAA,MACT;AAAA,MACA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,IAAI;AAAA;AAAA,MAGvC,MAAM,CAAC,MAAM,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,MAAM,MAAM,CAAC,MAAO,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAE;AAAA,MACrG,OAAO,CAAC,MAAM,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,MAAO,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAE;AAAA,MACvG,KAAK,CAAC,MAAM,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,MAAM,MAAM,CAAC,MAAO,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAE;AAAA,MACnG,MAAM,CAAC,MAAM,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,MAAM,MAAM,CAAC,MAAO,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAE;AAAA;AAAA,MAErG,OAAO,MAAM,KAAK;AAAA,MAClB,OAAO,MAAM,KAAK;AAAA,MAClB,KAAK,MAAM,KAAK;AAAA,MAChB,KAAK,MAAM,KAAK;AAAA,MAChB,OAAO,MAAM,KAAK;AAAA,MAClB,QAAQ,MAAM,KAAK;AAAA,MACnB,OAAO,MAAM,KAAK;AAAA,MAClB,QAAQ,MAAM,KAAK;AAAA,MACnB,MAAM,MAAM,KAAK;AAAA,IACnB;AAGA,IAAM,OAAO;AAAA,MACX,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,aAAa,EAAE,QAAQ;AAAA,MAC3D,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ;AAAA,MACtC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ;AAAA,MAClC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,UAAU,EAAE,QAAQ;AAAA,MACxD,OAAO,CAAC,MAAM,EAAE,IAAI,WAAW,OAAO;AAAA,MACtC,OAAO,CAAC,MAAM,EAAE,QAAQ;AAAA,MACxB,KAAK,CAAC,MAAM,EAAE,IAAI,WAAW,KAAK;AAAA,MAClC,KAAK,CAAC,MAAM,EAAE,QAAQ;AAAA,MACtB,OAAO,CAAC,MAAM,EAAE,QAAQ,UAAO,EAAE,QAAQ,WAAW,EAAE,QAAQ;AAAA,MAC9D,QAAQ,CAAC,MAAM,EAAE,QAAQ,YAAY,EAAE,QAAQ;AAAA,MAC/C,OAAO,CAAC,MAAM,OAAO,KAAK,EAAE,GAAG;AAAA,MAC/B,QAAQ,CAAC,MAAM,YAAY,KAAK,EAAE,GAAG;AAAA,MACrC,MAAM,CAAC,MAAM,OAAO,KAAK,EAAE,GAAG;AAAA,IAChC;AAGA,IAAM,WAAW,CAAC,IAAI,UAAU;AAC9B,UAAI,OAAO,SACT,QAAQ,CAAC,MAAM;AACb,gBAAQ;AACR,mBAAW,MAAM;AACf,kBAAQ;AAER,cAAI,QAAS,QAAQ,UAAU,OAAQ,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,QACvD,GAAG,KAAK;AAAA,MACV;AACF,aAAO,CAAC,MAAM;AACZ,YAAI,MAAO,QAAQ,UAAU;AAC7B,cAAM,CAAC;AACP,eAAO,GAAG,CAAC;AAAA,MACb;AAAA,IACF;AAEA,IAAM,WAAW,CAAC,IAAI,SAAS;AAC7B,UAAI;AACJ,aAAO,CAAC,MAAM;AACZ,qBAAa,OAAO;AACpB,kBAAU,WAAW,MAAM;AACzB,oBAAU;AACV,aAAG,CAAC;AAAA,QACN,GAAG,IAAI;AAAA,MACT;AAAA,IACF;AAGO,IAAM,OAAO,CAAC,IAAI,MAAM,MAAM;AACnC,UAAI,KAAK,QAAQ,MAAM,MAAO,IAAG,gBAAgB,IAAI;AAAA,UAChD,IAAG,aAAa,MAAM,MAAM,OAAO,KAAK,OAAO,MAAM,YAAY,OAAO,MAAM,WAAW,IAAI,EAAE;AAAA,IACtG;AAEO,IAAM,WAAW,CAAC,QAAQ;AAC/B,aAAO,IAAI,QAAQ,oCAAoC,CAAC,OAAO,OAAO,IAAI,MAAM,MAAM,MAAM,YAAY,CAAC;AAAA,IAC3G;AAAA;AAAA;;;AC1JA,IAwDa,QAUA;AAlEb;AAAA;AAAA;AACA;AACA;AAGA,QAAI,SAAS,CAAC,IAAI,OAAO,SAAS;AAChC,YAAM,SACH,GAAG,SAAS,UAAU,GAAG,SAAS,KACjC,CAAC,UAAU,GAAG,aAAa,SAAU,GAAG,QAAQ,SAAS,OAAO,KAAK,KAAM,IAC1E,GAAG,YAAY,cAAc,GAAG,SAAS,UAAU,GAAG,SAAS,KAC9D,CAAC,OAAO,MAAM;AAAA;AAAA,SAEX,OAAO,GAAG,gBACV,KAAK,GAAG,cACT,GAAG,aAAa,SAAU,GAAG,QAAQ,SAAS,OAAO,KAAK,KAAM,GAChE,QAAQ,GAAG,kBAAkB,MAAM,EAAE;AAAA,UAEtC,GAAG,SAAS,aACX,CAAC,WAAW,GAAG,UAAU,OAAO,KAAK,IAAI,WAAW,KAAK,KACxD,GAAG,SAAS,eACX,CAAC,UAAU;AACT,iBAAS,KAAK,GAAG;AACf,YAAE,SAAS,QAAQ,EAAE,aAAa,YAAY,EAAE,IAAI,EAAE,gBAAgB,UAAU;AAClF,WAAG,QAAQ;AAAA,MACb,IACC,GAAG,SAAS,oBAAqB,CAAC,UAAU;AAC3C,iBAAS,KAAK,GAAG,QAAS,GAAE,gBAAgB,UAAU;AACtD,iBAAS,KAAK,MAAO,IAAG,cAAc,WAAW,CAAC,IAAI,EAAE,aAAa,YAAY,EAAE;AAAA,MACrF,IACE,CAAC,UAAW,GAAG,QAAQ;AAGnC,aAAO,OAAO,IAAI;AAGlB,UAAI;AACF,cAAMC,OAAM,OAAO,IAAI;AACvB,cAAM,eAAe,GAAG,SAAS,aAAa,MAAMA,KAAI,OAAO,GAAG,OAAO,IACvE,GAAG,SAAS,oBAAoB,MAAMA,KAAI,OAAO,CAAC,GAAG,GAAG,eAAe,EAAE,IAAI,OAAK,EAAE,KAAK,CAAC,IACxF,MAAMA,KAAI,OAAO,GAAG,gBAAgB,IAAI,OAAO,GAAG,KAAK;AAE3D,WAAG,UAAU,GAAG,WAAW;AAE3B,YAAI,GAAG,MAAM,WAAW,QAAQ,GAAG;AAEjC,cAAI,iBAAiB,YAAY,EAAE,QAAQ,IAAI,EAAE,WAAW,MAAM,SAAS,MAAM,YAAY,KAAK,CAAC;AAGnG,gBAAM,IAAI,KAAK;AAAA,QACjB;AAAA,MACF,QAAQ;AAAA,MAAC;AAET,aAAO;AAAA,IACT,CAAC;AAGM,IAAM,SAAS,CAAC,MAAMA,OAAM,MAAM,GAAG,IAAI,KAAK;AAAA;AAAA,MAEnD,CAAC,OAAO,WACN,MAAM,KAAK,OACXA,KAAI,OAAO,KAAK,GAChB,OAAO,MAAM;AAAA;AAKV,IAAM,SAAS,CAAC,OAAO,MAAM,OAAO,KAAK,MAAM,wBAAwB,MAAG;AAlEjF;AAkEoF,sBAAS,WAAM,KAAK,CAAC,OAAZ,YAAmB;AAAA;AAAA;AAAA;;;AClEhH;AAAA;AAAA;AACA;AAEA,QAAI,OAAO,CAAC,IAAI,OAAO,MAAM,GAAG,QAC9B,OAAO,OAAO,IAAI,GAClB,GAAG,KAAK,KAAK,QACV,OAAO,IAAI,EAAE,OAAO,EAAE,GAAG,CAAAC,OAAKA,MAC/B,OAAK,EAAE,KAAK,MAAM,EAAE,EACvB;AAAA;AAAA;;;ACRD;AAAA;AAAA;AACA;AAEA,QAAI,QAAQ,CAAC,IAAI,WAAW,WAAW,QAAM,MAAM,YAAU,MAAM,IAAI,QAAQ,SAAS,QAAQ,MAAM,QAAQ,SAAS,CAAC,EAAE;AAAA;AAAA;;;ACH1H;AAAA;AAAA;AAEA,QAAI,QAAQ;AAAA;AAAA,OAEV,GAAG,WAAW,GAAG,YAAY,KAAK,KAAK,EAAE,EAAE,WAAW,CAAC,CAAC,GACxD,WAAS,GAAG,cAAc,SAAS,OAAO,KAAK;AAAA,KAChD;AAAA;AAAA;;;ACND;AAAA;AAAA;AAEA;AAAA,MAAI;AAAA,MAAS,CAAC,IAAI,SAChB,MAAM,oBAAI,OACV,OAAK;AACH,YAAI,OAAO,oBAAI;AACf,YAAI,GAAG;AACL,cAAI,OAAO,MAAM,SAAU,GAAE,MAAM,GAAG,EAAE,IAAI,SAAO,KAAK,IAAI,GAAG,CAAC;AAAA,mBACvD,MAAM,QAAQ,CAAC,EAAG,GAAE,IAAI,CAAAC,OAAKA,MAAK,KAAK,IAAIA,EAAC,CAAC;AAAA,cACjD,QAAO,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,GAAGA,EAAC,MAAMA,MAAK,KAAK,IAAI,CAAC,CAAC;AAAA,QACzD;AACA,iBAAS,OAAO,IAAK,KAAI,KAAK,IAAI,GAAG,EAAG,MAAK,OAAO,GAAG;AAAA,YAAQ,IAAG,UAAU,OAAO,GAAG;AACtF,iBAAS,OAAO,MAAM,KAAM,IAAG,UAAU,IAAI,GAAG;AAAA,MAClD;AAAA,IACF;AAAA;AAAA;;;ACdA;AAAA;AAAA;AAEA;AAAA,MAAI;AAAA,MAAS,CAAC,IAAI,eAChB,YAAY,GAAG,aAAa,OAAO,GACnC,OAAK;AACH,YAAI,OAAO,MAAM,SAAU,IAAG,aAAa,SAAS,aAAa,UAAU,SAAS,GAAG,IAAI,KAAK,QAAQ,CAAC;AAAA,aACpG;AACH,cAAI,UAAW,IAAG,aAAa,SAAS,SAAS;AACjD,mBAAS,KAAK,EAAG,GAAE,CAAC,KAAK,MAAO,GAAG,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,IAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;AAAA,QACpF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACXA;AAAA;AAAA;AAEA,QAAI,MAAM,OAAK,CAAAC,OAAKA,EAAC;AAAA;AAAA;;;ACFrB;AAAA;AAAA;AACA;AAEA,QAAI,QAAQ,CAAC,OAAO,WAAS;AAC3B,eAAS,OAAO,MAAO,MAAK,IAAI,UAAU,SAAS,GAAG,GAAG,MAAM,GAAG,KAAK,OAAO,OAAO,MAAM,GAAG,IAAI,EAAE;AAAA,IACtG,CAAC;AAAA;AAAA;;;ACLD;AAAA;AAAA;AAEA,QAAI,QAAQ,QAAM,WAAS;AAAC,eAAS,OAAO,MAAO,IAAG,QAAQ,GAAG,IAAI,MAAM,GAAG;AAAA,IAAE,CAAC;AAAA;AAAA;;;ACFjF;AAAA;AAAA;AAAA;AAAA,IAmBO;AAnBP;AAAA;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,UAAM,IAAI,EAAE,SAAS,UAAQ,MAAM,YAAY,gCAAgC,IAAI,KAAK,EAAE,CAAC;AAE3F,IAAO,gBAAQ;AAAA;AAAA;;;ACjBf,IAAM,EAAE,SAASC,OAAM,IAAI;AAG3B,OAAO,UAAUA;AAGjB,IAAI,SAAS,eAAe,aAAa,MAAM,GAAG;AAChD,QAAM,QAAQ,KAAK,MAAM,SAAS,eAAe,aAAa,MAAM,KAAK,IAAI;AAC7E,QAAM,OAAO,MAAM;AAAE,IAAAA,OAAM,SAAS,iBAAiB,KAAK;AAAA,EAAE;AAE5D,MAAI,SAAS,eAAe,UAAW,UAAS,iBAAiB,oBAAoB,IAAI;AAAA,MACpF,MAAK;AACZ;",
6
6
  "names": ["el", "dir", "name", "keys", "target", "set", "_", "v", "_", "sprae"]
7
7
  }
@@ -1,5 +1,5 @@
1
- (function(T,m){typeof exports=="object"&&typeof module=="object"?module.exports=m():typeof define=="function"&&define.amd?define("sprae",[],m):typeof exports=="object"?exports.sprae=m():T.sprae=m()})(typeof self<"u"?self:typeof globalThis<"u"?globalThis:void 0,()=>{var T={},m={exports:T},J=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,ee=Object.getOwnPropertyNames,ye=Object.prototype.hasOwnProperty,d=(e,r)=>function(){return e&&(r=(0,e[ee(e)[0]])(e=0)),r},he=(e,r)=>{for(var t in r)J(e,t,{get:r[t],enumerable:!0})},be=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of ee(r))!ye.call(e,n)&&n!==t&&J(e,n,{get:()=>r[n],enumerable:!(i=pe(r,n))||i.enumerable});return e},me=e=>be(J({},"__esModule",{value:!0}),e);function ge(e){S=e.signal,k=e.effect,R=e.computed,P=e.batch||P,te=e.untracked||P}var $,S,k,R,P,te,q=d({"signal.js"(){S=(e,r,t=new Set)=>(r={get value(){return $?.deps.push(t.add($)),e},set value(i){if(i!==e){e=i;for(let n of t)n()}},peek(){return e}},r.toJSON=r.then=r.toString=r.valueOf=()=>r.value,r),k=(e,r,t,i)=>(t=n=>{r?.call?.(),n=$,$=t;try{r=e()}finally{$=n}},i=t.deps=[],t(),n=>{for(r?.call?.();n=i.pop();)n.delete(t)}),R=(e,r=S(),t,i)=>(t={get value(){return i||(i=k(()=>r.value=e())),r.value},peek:r.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),P=e=>e(),te=P}});function N(e,r){if(!e||e[j])return e;if(Array.isArray(e))return _e(e);if(e.constructor!==Object||e[Symbol.toStringTag])return e;let t={...r?.[j]},i=S(Object.values(e).length);const n=new Proxy(t,{get:(o,s)=>s===E?i:s===j?t:t[s]?.valueOf(),set:(o,s,c,l)=>(l=t[s],F(t,s,c),l??++i.value,1),deleteProperty:(o,s)=>(t[s]&&(t[s][Symbol.dispose]?.(),delete t[s],i.value--),1),ownKeys:()=>(i.value,Reflect.ownKeys(t))});for(let o in e){const s=Object.getOwnPropertyDescriptor(e,o);s?.get?(t[o]=R(s.get.bind(n)))._set=s.set?.bind(n):(t[o]=null,F(t,o,e[o]))}return n}function _e(e){let r;if(e[j])return e;let t=S(e.length),i=Array(e.length).fill();const n=new Proxy(i,{get(o,s){if(typeof s=="symbol")return s===E?t:s===j?i:i[s];if(s==="length")return re.includes(r)?t.peek():t.value;if(r=s,i[s])return i[s].valueOf();if(s<i.length)return(i[s]=S(N(e[s]))).value},set(o,s,c){if(s==="length"){for(let l=c;l<i.length;l++)delete n[l];return t.value=i.length=c,!0}return F(i,s,c),s>=t.peek()&&(t.value=i.length=+s+1),!0},deleteProperty:(o,s)=>(i[s]?.[Symbol.dispose]?.(),delete i[s],1)});return n}function F(e,r,t){let i=e[r];if(r[0]==="_")e[r]=t;else if(!i)e[r]=i=t?.peek?t:S(N(t));else if(t!==i.peek())if(i._set)i._set(t);else if(Array.isArray(t)&&Array.isArray(i.peek())){const n=i.peek();n[E]?P(()=>{for(let o=0;o<t.length;o++)n[o]=t[o];n.length=t.length}):i.value=t}else i.value=N(t)}var j,E,re,V=d({"store.js"(){q(),j=Symbol("signals"),E=Symbol("change"),re=["push","pop","shift","unshift","splice"]}});function O(e,r){if(!e?.childNodes)return;if(e[b])return Object.assign(e[b],r);const t=N(r||{}),i=[],n=[],o=s=>{if(s.childNodes){for(let c=0;c<s.attributes?.length;){let{name:l,value:g}=s.attributes[c],_,a=l[0]===":"?1:l[0]==="s"&&l[1]==="-"?2:0;if(a){s.removeAttribute(l);for(let u of l.slice(a).split(":"))if(_=(I[u]||I.default)(s,g,t,u),n.push(_),i.push(k(_)),s[b]===null)return}else c++}for(let c of[...s.childNodes])o(c)}};return o(e),b in e||(e[b]=t,e[L]=()=>{for(;i.length;)i.pop()()},e[K]=()=>i.push(...n.map(s=>k(s))),e[B]=()=>(e[L](),e[L]=e[K]=e[B]=e[b]=null)),t}var B,b,K,L,I,h,M,H,X,ie,W,y=d({"core.js"(){q(),V(),B=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),b=Symbol("state"),K=Symbol("on"),L=Symbol("off"),I={},h=(e,r,t=M)=>I[e]=(i,n,o,s,c,l)=>(l=t(n),c=r(i,o,n,s,l),()=>c(l(o))),M=(e,r,t)=>{if(t=H[e=e.trim()])return t;try{t=ie(e)}catch(i){X(i,r,e)}return H[e]=t},H={},X=(e,r="",t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
1
+ (function(T,g){typeof exports=="object"&&typeof module=="object"?module.exports=g():typeof define=="function"&&define.amd?define("sprae",[],g):typeof exports=="object"?exports.sprae=g():T.sprae=g()})(typeof self<"u"?self:typeof globalThis<"u"?globalThis:void 0,()=>{var T={},g={exports:T},J=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,ee=Object.getOwnPropertyNames,ye=Object.prototype.hasOwnProperty,p=(e,r)=>function(){return e&&(r=(0,e[ee(e)[0]])(e=0)),r},he=(e,r)=>{for(var t in r)J(e,t,{get:r[t],enumerable:!0})},be=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of ee(r))!ye.call(e,n)&&n!==t&&J(e,n,{get:()=>r[n],enumerable:!(i=pe(r,n))||i.enumerable});return e},me=e=>be(J({},"__esModule",{value:!0}),e);function ge(e){S=e.signal,k=e.effect,R=e.computed,P=e.batch||P,te=e.untracked||P}var $,S,k,R,P,te,q=p({"signal.js"(){S=(e,r,t=new Set)=>(r={get value(){return $?.deps.push(t.add($)),e},set value(i){if(i!==e){e=i;for(let n of t)n()}},peek(){return e}},r.toJSON=r.then=r.toString=r.valueOf=()=>r.value,r),k=(e,r,t,i)=>(t=n=>{r?.call?.(),n=$,$=t;try{r=e()}finally{$=n}},i=t.deps=[],t(),n=>{for(r?.call?.();n=i.pop();)n.delete(t)}),R=(e,r=S(),t,i)=>(t={get value(){return i||(i=k(()=>r.value=e())),r.value},peek:r.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),P=e=>e(),te=P}});function N(e,r){if(!e||e[v])return e;if(Array.isArray(e))return _e(e);if(e.constructor!==Object||e[Symbol.toStringTag])return e;let t={...r?.[v]},i=S(Object.values(e).length);const n=new Proxy(t,{get:(o,s)=>s===E?i:s===v?t:t[s]?.valueOf(),set:(o,s,f,l)=>(l=t[s],F(t,s,f),l??++i.value,1),deleteProperty:(o,s)=>(t[s]&&(t[s][Symbol.dispose]?.(),delete t[s],i.value--),1),ownKeys:()=>(i.value,Reflect.ownKeys(t))});for(let o in e){const s=Object.getOwnPropertyDescriptor(e,o);s?.get?(t[o]=R(s.get.bind(n)))._set=s.set?.bind(n):(t[o]=null,F(t,o,e[o]))}return n}function _e(e){let r;if(e[v])return e;let t=S(e.length),i=Array(e.length).fill();const n=new Proxy(i,{get(o,s){if(typeof s=="symbol")return s===E?t:s===v?i:i[s];if(s==="length")return re.includes(r)?t.peek():t.value;if(r=s,i[s])return i[s].valueOf();if(s<i.length)return(i[s]=S(N(e[s]))).value},set(o,s,f){if(s==="length"){for(let l=f;l<i.length;l++)delete n[l];return t.value=i.length=f,!0}return F(i,s,f),s>=t.peek()&&(t.value=i.length=+s+1),!0},deleteProperty:(o,s)=>(i[s]?.[Symbol.dispose]?.(),delete i[s],1)});return n}function F(e,r,t){let i=e[r];if(r[0]==="_")e[r]=t;else if(!i)e[r]=i=t?.peek?t:S(N(t));else if(t!==i.peek())if(i._set)i._set(t);else if(Array.isArray(t)&&Array.isArray(i.peek())){const n=i.peek();n[E]?P(()=>{for(let o=0;o<t.length;o++)n[o]=t[o];n.length=t.length}):i.value=t}else i.value=N(t)}var v,E,re,V=p({"store.js"(){q(),v=Symbol("signals"),E=Symbol("change"),re=["push","pop","shift","unshift","splice"]}});function w(e,r){if(e[m])return Object.assign(e[m],r);const t=N(r||{}),i=[],n=[],o=(s,f=s.attributes)=>{if(f)for(let l=0;l<f.length;){let{name:h,value:O}=f[l],a,c,d;if(a=h[0]===":"?1:h[0]==="s"&&h[1]==="-"?2:0){s.removeAttribute(h);for(d of h.slice(a).split(":"))if(c=(I[d]||I.default)(s,O,t,d),n.push(c),i.push(k(c)),s[m]===null)return}else l++}for(let l of s.childNodes)l.nodeType==1&&o(l)};return o(e),m in e||(e[m]=t,e[L]=()=>{for(;i.length;)i.pop()()},e[K]=()=>i.push(...n.map(s=>k(s))),e[B]=()=>(e[L](),e[L]=e[K]=e[B]=e[m]=null)),t}var B,m,K,L,I,b,M,H,X,ie,W,y=p({"core.js"(){q(),V(),B=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),m=Symbol("state"),K=Symbol("on"),L=Symbol("off"),I={},b=(e,r,t=M)=>I[e]=(i,n,o,s,f,l)=>(l=t(n),f=r(i,o,n,s,l),()=>f(l(o))),M=(e,r,t)=>{if(t=H[e=e.trim()])return t;try{t=ie(e)}catch(i){X(i,r,e)}return H[e]=t},H={},X=(e,r="",t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
2
2
 
3
3
  ${r}${t?`="${t}"
4
4
 
5
- `:""}`,expr:t})},O.use=e=>{e.signal&&ge(e),e.compile&&(ie=e.compile)},W=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],i=document.createTextNode(""),n=(r.append(i),[...r.childNodes]);return{childNodes:n,content:r,remove:()=>r.append(...n),replaceWith(o){o!==i&&(i.before(o),r.append(...n))},attributes:t,removeAttribute(o){t.splice(t.findIndex(s=>s.name===o),1)}}}}}),Z,ve=d({"directive/if.js"(){y(),Z=Symbol("if"),h("if",(e,r)=>{const t=document.createTextNode("");let i=e.nextElementSibling,n,o,s;return e.replaceWith(t),o=e.content?W(e):e,o[b]=null,i?.hasAttribute(":else")&&(i.removeAttribute(":else"),i.hasAttribute(":if")||(i.remove(),s=i.content?W(i):i,s[b]=null)),c=>{const l=c?o:e[Z]?null:s;i&&(i[Z]=l===o),n!=l&&(n&&(n.remove(),n[L]?.()),(n=l)&&(t.before(n.content||n),n[b]===null?(delete n[b],O(n,r)):n[K]()))}})}}),je=d({"directive/each.js"(){y(),V(),q(),h("each",(e,r,t)=>{const[i,n="$"]=t.split(/\s+in\s+/)[0].split(/\s*,\s*/),o=document.createTextNode("");e.replaceWith(o),e[b]=null;let s,c,l,g=0;const _=()=>{var a,u;let p=0,v=l,w=v.length;if(s&&!s[E]){for(let A of s[j]||[])A[Symbol.dispose]();s=null,g=0}if(w<g)s.length=w;else{if(!s)s=v;else for(;p<g;)s[p]=v[p++];for(;p<w;p++){s[p]=v[p];let A=p,Y=N({[i]:s[j]?.[A]||s[A],[n]:c?c[A]:A},r),x=e.content?W(e):e.cloneNode(!0);o.before(x.content||x),O(x,Y),((u=s[a=j]||(s[a]=[]))[p]||(u[p]={}))[Symbol.dispose]=()=>{x[Symbol.dispose]?.(),x.remove()}}}g=w};return a=>{c=null,typeof a=="number"?l=Array.from({length:a},(p,v)=>v+1):a?.constructor===Object?(c=Object.keys(a),l=Object.values(a)):l=a||[];let u=0;return k(()=>{l[E]?.value,u++||(_(),queueMicrotask(()=>(u>1&&_(),u=0)))})}},e=>M(e.split(/\s+in\s+/)[1]))}}),ne,f,se,oe,C,z,G=d({"directive/default.js"(){y(),h("default",(e,r,t,i)=>{if(!i.startsWith("on"))return i?a=>C(e,i,a):a=>{for(let u in a)C(e,z(u),a[u])};const n=i.split("..").map(a=>{let u={evt:"",target:e,test:()=>!0};return u.evt=(a.startsWith("on")?a.slice(2):a).replace(/\.(\w+)?-?([-\w]+)?/g,(p,v,w="")=>(u.test=ne[v]?.(u,...w.split("-"))||u.test,"")),u}),o=(a,{evt:u,target:p,test:v,defer:w,stop:A,prevent:Y,immediate:x,...fe})=>{w&&(a=w(a));const de=D=>{try{v(D)&&(A&&(x?D.stopImmediatePropagation():D.stopPropagation()),Y&&D.preventDefault(),a?.call(r,D))}catch($e){X($e,`:on${u}`,a)}};return p.addEventListener(u,de,fe),()=>p.removeEventListener(u,de,fe)};if(n.length==1)return a=>o(a,n[0]);let s,c,l,g=0;const _=a=>{l=o(u=>(l(),c=a?.(u),(g=++g%n.length)?_(c):s&&_(s)),n[g])};return a=>(s=a,!l&&_(s),()=>s=null)}),ne={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},parent(e){e.target=e.target.parentNode},throttle(e,r){e.defer=t=>se(t,r?Number(r)||0:108)},debounce(e,r){e.defer=t=>oe(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=>f.ctrl(t)&&r.every(i=>f[i]?f[i](t):t.key===i),shift:(e,...r)=>t=>f.shift(t)&&r.every(i=>f[i]?f[i](t):t.key===i),alt:(e,...r)=>t=>f.alt(t)&&r.every(i=>f[i]?f[i](t):t.key===i),meta:(e,...r)=>t=>f.meta(t)&&r.every(i=>f[i]?f[i](t):t.key===i),arrow:()=>f.arrow,enter:()=>f.enter,esc:()=>f.esc,tab:()=>f.tab,space:()=>f.space,delete:()=>f.delete,digit:()=>f.digit,letter:()=>f.letter,char:()=>f.char},f={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)},se=(e,r)=>{let t,i,n=o=>{t=!0,setTimeout(()=>{if(t=!1,i)return i=!1,n(o),e(o)},r)};return o=>t?i=!0:(n(o),e(o))},oe=(e,r)=>{let t;return i=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(i)},r)}},C=(e,r,t)=>{t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},z=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase())}}),Q,U,ae=d({"directive/value.js"(){y(),y(),G(),h("value",(e,r,t)=>{const i=e.type==="text"||e.type===""?n=>e.setAttribute("value",e.value=n??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(n,o,s)=>(o=e.selectionStart,s=e.selectionEnd,e.setAttribute("value",e.value=n??""),o&&e.setSelectionRange(o,s)):e.type==="checkbox"?n=>(e.checked=n,C(e,"checked",n)):e.type==="select-one"?n=>{for(let o of e.options)o.value==n?o.setAttribute("selected",""):o.removeAttribute("selected");e.value=n}:e.type==="select-multiple"?n=>{for(let o of e.options)o.removeAttribute("selected");for(let o of n)e.querySelector(`[value="${o}"]`).setAttribute("selected","")}:n=>e.value=n;U(r,t);try{const n=Q(t),o=e.type==="checkbox"?()=>n(r,e.checked):e.type==="select-multiple"?()=>n(r,[...e.selectedOptions].map(s=>s.value)):()=>n(r,e.selectedIndex<0?null:e.value);e.oninput=e.onchange=o,e.type?.startsWith("select")&&(new MutationObserver(o).observe(e,{childList:!0,subtree:!0,attributes:!0}),O(e,r))}catch{}return i}),Q=(e,r=M(`${e}=__`))=>(t,i)=>(t.__=i,r(t,i),delete t.__),U=(e,r,t=r.match(/^\w+(?=\s*(?:\.|\[|$))/))=>{var i;return t&&(e[i=t[0]]??(e[i]=null))}}}),we=d({"directive/ref.js"(){y(),ae(),h("ref",(e,r,t,i,n)=>(U(r,t),n(r)==null?(Q(t)(r,e),o=>o):o=>o.call(null,e)))}}),Oe=d({"directive/with.js"(){y(),V(),h("with",(e,r,t)=>(t=null,i=>O(e,t?i:t=N(i,r))))}}),Ae=d({"directive/text.js"(){y(),h("text",e=>(e.content&&e.replaceWith(e=W(e).childNodes[0]),r=>e.textContent=r??""))}}),Se=d({"directive/class.js"(){y(),h("class",(e,r)=>(r=new Set,t=>{let i=new Set;t&&(typeof t=="string"?t.split(" ").map(n=>i.add(n)):Array.isArray(t)?t.map(n=>n&&i.add(n)):Object.entries(t).map(([n,o])=>o&&i.add(n)));for(let n of r)i.has(n)?i.delete(n):e.classList.remove(n);for(let n of r=i)e.classList.add(n)}))}}),xe=d({"directive/style.js"(){y(),h("style",(e,r)=>(r=e.getAttribute("style"),t=>{if(typeof t=="string")e.setAttribute("style",r+(r.endsWith(";")?"":"; ")+t);else{r&&e.setAttribute("style",r);for(let i in t)i[0]=="-"?e.style.setProperty(i,t[i]):e.style[i]=t[i]}}))}}),ke=d({"directive/fx.js"(){y(),h("fx",e=>r=>r)}}),Pe=d({"directive/aria.js"(){y(),G(),h("aria",e=>r=>{for(let t in r)C(e,"aria-"+z(t),r[t]==null?null:r[t]+"")})}}),Ne=d({"directive/data.js"(){y(),h("data",e=>r=>{for(let t in r)e.dataset[t]=r[t]})}}),le={};he(le,{default:()=>ce});var ce,Ee=d({"sprae.js"(){y(),ve(),je(),we(),Oe(),Ae(),Se(),xe(),ae(),ke(),G(),Pe(),Ne(),O.use({compile:e=>O.constructor(`with (arguments[0]) { return ${e} };`)}),ce=O}}),{default:ue}=(Ee(),me(le));if(m.exports=ue,document.currentScript?.hasAttribute("init")){const e=JSON.parse(document.currentScript?.getAttribute("init")||"{}"),r=()=>{ue(document.documentElement,e)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",r):r()}if(typeof m.exports=="object"&&typeof T=="object"){var Te=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Object.getOwnPropertyNames(r))!Object.prototype.hasOwnProperty.call(e,n)&&n!==t&&Object.defineProperty(e,n,{get:()=>r[n],enumerable:!(i=Object.getOwnPropertyDescriptor(r,n))||i.enumerable});return e};m.exports=Te(m.exports,T)}return m.exports});
5
+ `:""}`,expr:t})},w.use=e=>{e.signal&&ge(e),e.compile&&(ie=e.compile)},W=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],i=document.createTextNode(""),n=(r.append(i),[...r.childNodes]);return{childNodes:n,content:r,remove:()=>r.append(...n),replaceWith(o){o!==i&&(i.before(o),r.append(...n))},attributes:t,removeAttribute(o){t.splice(t.findIndex(s=>s.name===o),1)}}}}}),Z,ve=p({"directive/if.js"(){y(),Z=Symbol("if"),b("if",(e,r)=>{const t=document.createTextNode("");let i=e.nextElementSibling,n,o,s;return e.replaceWith(t),o=e.content?W(e):e,o[m]=null,i?.hasAttribute(":else")&&(i.removeAttribute(":else"),i.hasAttribute(":if")||(i.remove(),s=i.content?W(i):i,s[m]=null)),f=>{const l=f?o:e[Z]?null:s;i&&(i[Z]=l===o),n!=l&&(n&&(n.remove(),n[L]?.()),(n=l)&&(t.before(n.content||n),n[m]===null?(delete n[m],w(n,r)):n[K]()))}})}}),je=p({"directive/each.js"(){y(),V(),q(),b("each",(e,r,t)=>{const[i,n="$"]=t.split(/\s+in\s+/)[0].split(/\s*,\s*/),o=document.createTextNode("");e.replaceWith(o),e[m]=null;let s,f,l,h=0;const O=()=>{var a,c;let d=0,_=l,j=_.length;if(s&&!s[E]){for(let A of s[v]||[])A[Symbol.dispose]();s=null,h=0}if(j<h)s.length=j;else{if(!s)s=_;else for(;d<h;)s[d]=_[d++];for(;d<j;d++){s[d]=_[d];let A=d,Y=N({[i]:s[v]?.[A]||s[A],[n]:f?f[A]:A},r),x=e.content?W(e):e.cloneNode(!0);o.before(x.content||x),w(x,Y),((c=s[a=v]||(s[a]=[]))[d]||(c[d]={}))[Symbol.dispose]=()=>{x[Symbol.dispose]?.(),x.remove()}}}h=j};return a=>{f=null,typeof a=="number"?l=Array.from({length:a},(d,_)=>_+1):a?.constructor===Object?(f=Object.keys(a),l=Object.values(a)):l=a||[];let c=0;return k(()=>{l[E]?.value,c++||(O(),queueMicrotask(()=>(c>1&&O(),c=0)))})}},e=>M(e.split(/\s+in\s+/)[1]))}}),ne,u,se,oe,C,z,G=p({"directive/default.js"(){y(),b("default",(e,r,t,i)=>{if(!i.startsWith("on"))return i?a=>C(e,i,a):a=>{for(let c in a)C(e,z(c),a[c])};const n=i.split("..").map(a=>{let c={evt:"",target:e,test:()=>!0};return c.evt=(a.startsWith("on")?a.slice(2):a).replace(/\.(\w+)?-?([-\w]+)?/g,(d,_,j="")=>(c.test=ne[_]?.(c,...j.split("-"))||c.test,"")),c}),o=(a,{evt:c,target:d,test:_,defer:j,stop:A,prevent:Y,immediate:x,...fe})=>{j&&(a=j(a));const de=D=>{try{_(D)&&(A&&(x?D.stopImmediatePropagation():D.stopPropagation()),Y&&D.preventDefault(),a?.call(r,D))}catch($e){X($e,`:on${c}`,a)}};return d.addEventListener(c,de,fe),()=>d.removeEventListener(c,de,fe)};if(n.length==1)return a=>o(a,n[0]);let s,f,l,h=0;const O=a=>{l=o(c=>(l(),f=a?.(c),(h=++h%n.length)?O(f):s&&O(s)),n[h])};return a=>(s=a,!l&&O(s),()=>s=null)}),ne={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},parent(e){e.target=e.target.parentNode},throttle(e,r){e.defer=t=>se(t,r?Number(r)||0:108)},debounce(e,r){e.defer=t=>oe(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=>u.ctrl(t)&&r.every(i=>u[i]?u[i](t):t.key===i),shift:(e,...r)=>t=>u.shift(t)&&r.every(i=>u[i]?u[i](t):t.key===i),alt:(e,...r)=>t=>u.alt(t)&&r.every(i=>u[i]?u[i](t):t.key===i),meta:(e,...r)=>t=>u.meta(t)&&r.every(i=>u[i]?u[i](t):t.key===i),arrow:()=>u.arrow,enter:()=>u.enter,esc:()=>u.esc,tab:()=>u.tab,space:()=>u.space,delete:()=>u.delete,digit:()=>u.digit,letter:()=>u.letter,char:()=>u.char},u={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)},se=(e,r)=>{let t,i,n=o=>{t=!0,setTimeout(()=>{if(t=!1,i)return i=!1,n(o),e(o)},r)};return o=>t?i=!0:(n(o),e(o))},oe=(e,r)=>{let t;return i=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(i)},r)}},C=(e,r,t)=>{t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},z=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase())}}),Q,U,ae=p({"directive/value.js"(){y(),y(),G(),b("value",(e,r,t)=>{const i=e.type==="text"||e.type===""?n=>e.setAttribute("value",e.value=n??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(n,o,s)=>(o=e.selectionStart,s=e.selectionEnd,e.setAttribute("value",e.value=n??""),o&&e.setSelectionRange(o,s)):e.type==="checkbox"?n=>(e.checked=n,C(e,"checked",n)):e.type==="select-one"?n=>{for(let o of e.options)o.value==n?o.setAttribute("selected",""):o.removeAttribute("selected");e.value=n}:e.type==="select-multiple"?n=>{for(let o of e.options)o.removeAttribute("selected");for(let o of n)e.querySelector(`[value="${o}"]`).setAttribute("selected","")}:n=>e.value=n;U(r,t);try{const n=Q(t),o=e.type==="checkbox"?()=>n(r,e.checked):e.type==="select-multiple"?()=>n(r,[...e.selectedOptions].map(s=>s.value)):()=>n(r,e.selectedIndex<0?null:e.value);e.oninput=e.onchange=o,e.type?.startsWith("select")&&(new MutationObserver(o).observe(e,{childList:!0,subtree:!0,attributes:!0}),w(e,r))}catch{}return i}),Q=(e,r=M(`${e}=__`))=>(t,i)=>(t.__=i,r(t,i),delete t.__),U=(e,r,t=r.match(/^\w+(?=\s*(?:\.|\[|$))/))=>{var i;return t&&(e[i=t[0]]??(e[i]=null))}}}),we=p({"directive/ref.js"(){y(),ae(),b("ref",(e,r,t,i,n)=>(U(r,t),n(r)==null?(Q(t)(r,e),o=>o):o=>o.call(null,e)))}}),Oe=p({"directive/with.js"(){y(),V(),b("with",(e,r,t)=>(t=null,i=>w(e,t?i:t=N(i,r))))}}),Ae=p({"directive/text.js"(){y(),b("text",e=>(e.content&&e.replaceWith(e=W(e).childNodes[0]),r=>e.textContent=r??""))}}),Se=p({"directive/class.js"(){y(),b("class",(e,r)=>(r=new Set,t=>{let i=new Set;t&&(typeof t=="string"?t.split(" ").map(n=>i.add(n)):Array.isArray(t)?t.map(n=>n&&i.add(n)):Object.entries(t).map(([n,o])=>o&&i.add(n)));for(let n of r)i.has(n)?i.delete(n):e.classList.remove(n);for(let n of r=i)e.classList.add(n)}))}}),xe=p({"directive/style.js"(){y(),b("style",(e,r)=>(r=e.getAttribute("style"),t=>{if(typeof t=="string")e.setAttribute("style",r+(r.endsWith(";")?"":"; ")+t);else{r&&e.setAttribute("style",r);for(let i in t)i[0]=="-"?e.style.setProperty(i,t[i]):e.style[i]=t[i]}}))}}),ke=p({"directive/fx.js"(){y(),b("fx",e=>r=>r)}}),Pe=p({"directive/aria.js"(){y(),G(),b("aria",e=>r=>{for(let t in r)C(e,"aria-"+z(t),r[t]==null?null:r[t]+"")})}}),Ne=p({"directive/data.js"(){y(),b("data",e=>r=>{for(let t in r)e.dataset[t]=r[t]})}}),le={};he(le,{default:()=>ce});var ce,Ee=p({"sprae.js"(){y(),ve(),je(),we(),Oe(),Ae(),Se(),xe(),ae(),ke(),G(),Pe(),Ne(),w.use({compile:e=>w.constructor(`with (arguments[0]) { return ${e} };`)}),ce=w}}),{default:ue}=(Ee(),me(le));if(g.exports=ue,document.currentScript?.hasAttribute("init")){const e=JSON.parse(document.currentScript?.getAttribute("init")||"{}"),r=()=>{ue(document.documentElement,e)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",r):r()}if(typeof g.exports=="object"&&typeof T=="object"){var Te=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Object.getOwnPropertyNames(r))!Object.prototype.hasOwnProperty.call(e,n)&&n!==t&&Object.defineProperty(e,n,{get:()=>r[n],enumerable:!(i=Object.getOwnPropertyDescriptor(r,n))||i.enumerable});return e};g.exports=Te(g.exports,T)}return g.exports});
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["sprae.umd.js"],
4
- "sourcesContent": ["(function (g, f) {if (\"object\" == typeof exports && \"object\" == typeof module) {module.exports = f();} else if (\"function\" == typeof define && define.amd) {define(\"sprae\", [], f);} else if (\"object\" == typeof exports) {exports[\"sprae\"] = f();} else {g[\"sprae\"] = f();}}(typeof self !== 'undefined' ? self : typeof globalThis !== 'undefined' ? globalThis : this, () => {var exports = {};var module = { exports };\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// signal.js\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || batch;\n untracked = s.untracked || batch;\n}\nvar current, signal, effect, computed, batch, untracked;\nvar init_signal = __esm({\n \"signal.js\"() {\n signal = (v, s, obs = /* @__PURE__ */ new Set()) => (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) sub();\n },\n peek() {\n return v;\n }\n }, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);\n effect = (fn, teardown, fx, deps) => (fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try {\n teardown = fn();\n } finally {\n current = prev;\n }\n }, deps = fx.deps = [], fx(), (dep) => {\n teardown?.call?.();\n while (dep = deps.pop()) dep.delete(fx);\n });\n computed = (fn, s = signal(), c, e) => (c = {\n get value() {\n e || (e = effect(() => s.value = fn()));\n return s.value;\n },\n peek: s.peek\n }, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);\n batch = (fn) => fn();\n untracked = batch;\n }\n});\n\n// store.js\nfunction store(values, parent) {\n if (!values) return values;\n if (values[_signals]) return values;\n if (Array.isArray(values)) return list(values);\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);\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),\n // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (signals[key][Symbol.dispose]?.(), delete signals[key], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals))\n });\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key);\n if (desc?.get) {\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n } else {\n signals[key] = null;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nfunction list(values) {\n let lastProp;\n if (values[_signals]) return values;\n let _len = signal(values.length), signals = Array(values.length).fill();\n const state = new Proxy(signals, {\n get(_, key) {\n if (typeof key === \"symbol\") return key === _change ? _len : key === _signals ? signals : signals[key];\n if (key === \"length\") return mut.includes(lastProp) ? _len.peek() : _len.value;\n lastProp = key;\n if (signals[key]) return signals[key].valueOf();\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value;\n },\n set(_, key, v) {\n if (key === \"length\") {\n for (let i = v; i < signals.length; i++) delete state[i];\n _len.value = signals.length = v;\n return true;\n }\n set(signals, key, v);\n if (key >= _len.peek()) _len.value = signals.length = +key + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key]?.[Symbol.dispose]?.(), delete signals[key], 1)\n });\n return state;\n}\nfunction set(signals, key, v) {\n let s = signals[key];\n if (key[0] === \"_\") signals[key] = v;\n else if (!s) signals[key] = s = v?.peek ? v : signal(store(v));\n else if (v === s.peek()) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek();\n if (cur[_change]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i];\n cur.length = v.length;\n });\n else s.value = v;\n } else s.value = store(v);\n}\nvar _signals, _change, mut;\nvar init_store = __esm({\n \"store.js\"() {\n init_signal();\n _signals = Symbol(\"signals\");\n _change = Symbol(\"change\");\n mut = [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"];\n }\n});\n\n// core.js\nfunction sprae(el, values) {\n if (!el?.childNodes) return;\n if (el[_state]) return Object.assign(el[_state], values);\n const state = store(values || {}), offs = [], fx = [];\n const init = (el2) => {\n if (!el2.childNodes) return;\n for (let i = 0; i < el2.attributes?.length; ) {\n let { name, value } = el2.attributes[i], update, pfx = name[0] === \":\" ? 1 : name[0] === \"s\" && name[1] === \"-\" ? 2 : 0;\n if (pfx) {\n el2.removeAttribute(name);\n for (let dir2 of name.slice(pfx).split(\":\")) {\n update = (directive[dir2] || directive.default)(el2, value, state, dir2);\n fx.push(update), offs.push(effect(update));\n if (el2[_state] === null) return;\n }\n } else i++;\n }\n for (let child of [...el2.childNodes]) init(child);\n };\n init(el);\n if (!(_state in el)) {\n el[_state] = state;\n el[_off] = () => {\n while (offs.length) offs.pop()();\n };\n el[_on] = () => offs.push(...fx.map((f) => effect(f)));\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null);\n }\n return state;\n}\nvar _dispose, _state, _on, _off, directive, dir, parse, memo, err, compile, frag;\nvar init_core = __esm({\n \"core.js\"() {\n init_signal();\n init_store();\n _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\n _state = Symbol(\"state\");\n _on = Symbol(\"on\");\n _off = Symbol(\"off\");\n directive = {};\n dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (evaluate = p(expr), update = create(el, state, expr, name2, evaluate), () => update(evaluate(state)));\n parse = (expr, dir2, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir2, expr);\n }\n return memo[expr] = fn;\n };\n memo = {};\n err = (e, dir2 = \"\", expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir2}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n };\n sprae.use = (s) => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n };\n frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n // get parentNode() { return childNodes[0].parentNode },\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) {\n attributes.splice(attributes.findIndex((a) => a.name === name), 1);\n }\n // setAttributeNode() { }\n };\n };\n }\n});\n\n// directive/if.js\nvar _prevIf;\nvar init_if = __esm({\n \"directive/if.js\"() {\n init_core();\n _prevIf = Symbol(\"if\");\n dir(\"if\", (el, state) => {\n const holder = document.createTextNode(\"\");\n let next = el.nextElementSibling, curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n ifEl[_state] = null;\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null;\n }\n return (value) => {\n const newEl = value ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state)) : curEl[_on]();\n }\n }\n };\n });\n }\n});\n\n// directive/each.js\nvar init_each = __esm({\n \"directive/each.js\"() {\n init_core();\n init_store();\n init_signal();\n dir(\n \"each\",\n (tpl, state, expr) => {\n const [itemVar, idxVar = \"$\"] = expr.split(/\\s+in\\s+/)[0].split(/\\s*,\\s*/);\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n tpl[_state] = null;\n let cur, keys2, items, prevl = 0;\n const update = () => {\n var _a, _b;\n let i = 0, newItems = items, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]();\n cur = null, prevl = 0;\n }\n if (newl < prevl) cur.length = newl;\n else {\n if (!cur) cur = newItems;\n else while (i < prevl) cur[i] = newItems[i++];\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys2 ? keys2[idx] : idx\n }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n holder.before(el.content || el);\n sprae(el, scope);\n ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove();\n };\n }\n }\n prevl = newl;\n };\n return (value) => {\n keys2 = null;\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1);\n else if (value?.constructor === Object) keys2 = Object.keys(value), items = Object.values(value);\n else items = value || [];\n let planned = 0;\n return effect(() => {\n items[_change]?.value;\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n });\n };\n },\n // redefine evaluator to take second part of expression\n (expr) => parse(expr.split(/\\s+in\\s+/)[1])\n );\n }\n});\n\n// directive/default.js\nvar mods, keys, throttle, debounce, attr, dashcase;\nvar init_default = __esm({\n \"directive/default.js\"() {\n init_core();\n dir(\"default\", (target, state, expr, name) => {\n if (!name.startsWith(\"on\"))\n return name ? (value) => attr(target, name, value) : (value) => {\n for (let key in value) attr(target, dashcase(key), value[key]);\n };\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(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (_, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n const addListener = (fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) => {\n if (defer) fn = defer(fn);\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n };\n if (ctxs.length == 1) return (v) => addListener(v, ctxs[0]);\n let startFn, nextFn, off, idx = 0;\n const nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return (value) => (startFn = value, !off && nextListener(startFn), () => startFn = null);\n });\n mods = {\n // actions\n prevent(ctx) {\n ctx.prevent = true;\n },\n stop(ctx) {\n ctx.stop = true;\n },\n immediate(ctx) {\n ctx.immediate = true;\n },\n // options\n once(ctx) {\n ctx.once = true;\n },\n passive(ctx) {\n ctx.passive = true;\n },\n capture(ctx) {\n ctx.capture = true;\n },\n // target\n window(ctx) {\n ctx.target = window;\n },\n document(ctx) {\n ctx.target = document;\n },\n parent(ctx) {\n ctx.target = ctx.target.parentNode;\n },\n throttle(ctx, limit) {\n ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);\n },\n debounce(ctx, wait) {\n 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 // 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 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 === \"\\xA0\" || 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 throttle = (fn, limit) => {\n let pause, planned, block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\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 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 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 dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n };\n }\n});\n\n// directive/value.js\nvar setter, ensure;\nvar init_value = __esm({\n \"directive/value.js\"() {\n init_core();\n init_core();\n init_default();\n dir(\"value\", (el, state, expr) => {\n 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) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\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 } : (value) => el.value = value;\n ensure(state, expr);\n try {\n const set2 = setter(expr);\n const handleChange = el.type === \"checkbox\" ? () => set2(state, el.checked) : el.type === \"select-multiple\" ? () => set2(state, [...el.selectedOptions].map((o) => o.value)) : () => set2(state, el.selectedIndex < 0 ? null : el.value);\n el.oninput = el.onchange = handleChange;\n if (el.type?.startsWith(\"select\")) {\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n sprae(el, state);\n }\n } catch {\n }\n return update;\n });\n setter = (expr, set2 = parse(`${expr}=__`)) => (\n // FIXME: if there's a simpler way to set value in justin?\n (state, value) => (state.__ = value, set2(state, value), delete state.__)\n );\n ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => {\n var _a;\n return name && (state[_a = name[0]] ?? (state[_a] = null));\n };\n }\n});\n\n// directive/ref.js\nvar init_ref = __esm({\n \"directive/ref.js\"() {\n init_core();\n init_value();\n dir(\"ref\", (el, state, expr, _, ev) => (ensure(state, expr), ev(state) == null ? (setter(expr)(state, el), (_2) => _2) : (v) => v.call(null, el)));\n }\n});\n\n// directive/with.js\nvar init_with = __esm({\n \"directive/with.js\"() {\n init_core();\n init_store();\n dir(\"with\", (el, rootState, state) => (state = null, (values) => sprae(el, state ? values : state = store(values, rootState))));\n }\n});\n\n// directive/text.js\nvar init_text = __esm({\n \"directive/text.js\"() {\n init_core();\n dir(\"text\", (el) => (\n // <template :text=\"a\"/> or previously initialized template\n (el.content && el.replaceWith(el = frag(el).childNodes[0]), (value) => el.textContent = value == null ? \"\" : value)\n ));\n }\n});\n\n// directive/class.js\nvar init_class = __esm({\n \"directive/class.js\"() {\n init_core();\n dir(\n \"class\",\n (el, cur) => (cur = /* @__PURE__ */ new Set(), (v) => {\n let clsx = /* @__PURE__ */ 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((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n })\n );\n }\n});\n\n// directive/style.js\nvar init_style = __esm({\n \"directive/style.js\"() {\n init_core();\n dir(\n \"style\",\n (el, initStyle) => (initStyle = el.getAttribute(\"style\"), (v) => {\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 }\n});\n\n// directive/fx.js\nvar init_fx = __esm({\n \"directive/fx.js\"() {\n init_core();\n dir(\"fx\", (_) => (_2) => _2);\n }\n});\n\n// directive/aria.js\nvar init_aria = __esm({\n \"directive/aria.js\"() {\n init_core();\n init_default();\n dir(\"aria\", (el) => (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n });\n }\n});\n\n// directive/data.js\nvar init_data = __esm({\n \"directive/data.js\"() {\n init_core();\n dir(\"data\", (el) => (value) => {\n for (let key in value) el.dataset[key] = value[key];\n });\n }\n});\n\n// sprae.js\nvar sprae_exports = {};\n__export(sprae_exports, {\n default: () => sprae_default\n});\nvar sprae_default;\nvar init_sprae = __esm({\n \"sprae.js\"() {\n init_core();\n init_if();\n init_each();\n init_ref();\n init_with();\n init_text();\n init_class();\n init_style();\n init_value();\n init_fx();\n init_default();\n init_aria();\n init_data();\n sprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });\n sprae_default = sprae;\n }\n});\n\n// sprae.umd.cjs\nvar { default: sprae2 } = (init_sprae(), __toCommonJS(sprae_exports));\nmodule.exports = sprae2;\nif (document.currentScript?.hasAttribute(\"init\")) {\n const props = JSON.parse(document.currentScript?.getAttribute(\"init\") || \"{}\");\n const init = () => {\n sprae2(document.documentElement, props);\n };\n if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", init);\n else init();\n}\n;if (typeof module.exports == \"object\" && typeof exports == \"object\") {\n var __cp = (to, from, except, desc) => {\n if ((from && typeof from === \"object\") || typeof from === \"function\") {\n for (let key of Object.getOwnPropertyNames(from)) {\n if (!Object.prototype.hasOwnProperty.call(to, key) && key !== except)\n Object.defineProperty(to, key, {\n get: () => from[key],\n enumerable: !(desc = Object.getOwnPropertyDescriptor(from, key)) || desc.enumerable,\n });\n }\n }\n return to;\n };\n module.exports = __cp(module.exports, exports);\n}\nreturn module.exports;\n}))\n"],
5
- "mappings": "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",
6
- "names": ["g", "f", "exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__esm", "fn", "res", "__export", "target", "all", "name", "__copyProps", "to", "from", "except", "desc", "key", "__toCommonJS", "mod", "use", "s", "signal", "effect", "computed", "batch", "untracked", "current", "init_signal", "v", "obs", "val", "sub", "teardown", "fx", "deps", "prev", "dep", "c", "e", "store", "values", "parent", "_signals", "list", "signals", "_len", "state", "_", "_change", "set", "lastProp", "mut", "i", "cur", "init_store", "sprae", "el", "_state", "offs", "init", "el2", "value", "update", "pfx", "dir2", "directive", "child", "_off", "_on", "_dispose", "dir", "parse", "memo", "err", "compile", "frag", "init_core", "create", "p", "expr", "name2", "evaluate", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "init_if", "holder", "next", "curEl", "ifEl", "elseEl", "newEl", "init_each", "itemVar", "idxVar", "keys2", "items", "prevl", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "mods", "keys", "throttle", "debounce", "attr", "dashcase", "init_default", "ctxs", "ctx", "param", "addListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "startFn", "nextFn", "off", "nextListener", "limit", "wait", "pause", "block", "timeout", "str", "match", "setter", "ensure", "init_value", "set2", "handleChange", "o", "init_ref", "ev", "_2", "init_with", "rootState", "init_text", "init_class", "clsx", "cls", "v2", "k", "init_style", "initStyle", "init_fx", "init_aria", "init_data", "sprae_exports", "sprae_default", "init_sprae", "sprae2", "props", "__cp"]
4
+ "sourcesContent": ["(function (g, f) {if (\"object\" == typeof exports && \"object\" == typeof module) {module.exports = f();} else if (\"function\" == typeof define && define.amd) {define(\"sprae\", [], f);} else if (\"object\" == typeof exports) {exports[\"sprae\"] = f();} else {g[\"sprae\"] = f();}}(typeof self !== 'undefined' ? self : typeof globalThis !== 'undefined' ? globalThis : this, () => {var exports = {};var module = { exports };\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// signal.js\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || batch;\n untracked = s.untracked || batch;\n}\nvar current, signal, effect, computed, batch, untracked;\nvar init_signal = __esm({\n \"signal.js\"() {\n signal = (v, s, obs = /* @__PURE__ */ new Set()) => (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) sub();\n },\n peek() {\n return v;\n }\n }, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);\n effect = (fn, teardown, fx, deps) => (fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try {\n teardown = fn();\n } finally {\n current = prev;\n }\n }, deps = fx.deps = [], fx(), (dep) => {\n teardown?.call?.();\n while (dep = deps.pop()) dep.delete(fx);\n });\n computed = (fn, s = signal(), c, e) => (c = {\n get value() {\n e || (e = effect(() => s.value = fn()));\n return s.value;\n },\n peek: s.peek\n }, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);\n batch = (fn) => fn();\n untracked = batch;\n }\n});\n\n// store.js\nfunction store(values, parent) {\n if (!values) return values;\n if (values[_signals]) return values;\n if (Array.isArray(values)) return list(values);\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);\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),\n // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (signals[key][Symbol.dispose]?.(), delete signals[key], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals))\n });\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key);\n if (desc?.get) {\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n } else {\n signals[key] = null;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nfunction list(values) {\n let lastProp;\n if (values[_signals]) return values;\n let _len = signal(values.length), signals = Array(values.length).fill();\n const state = new Proxy(signals, {\n get(_, key) {\n if (typeof key === \"symbol\") return key === _change ? _len : key === _signals ? signals : signals[key];\n if (key === \"length\") return mut.includes(lastProp) ? _len.peek() : _len.value;\n lastProp = key;\n if (signals[key]) return signals[key].valueOf();\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value;\n },\n set(_, key, v) {\n if (key === \"length\") {\n for (let i = v; i < signals.length; i++) delete state[i];\n _len.value = signals.length = v;\n return true;\n }\n set(signals, key, v);\n if (key >= _len.peek()) _len.value = signals.length = +key + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key]?.[Symbol.dispose]?.(), delete signals[key], 1)\n });\n return state;\n}\nfunction set(signals, key, v) {\n let s = signals[key];\n if (key[0] === \"_\") signals[key] = v;\n else if (!s) signals[key] = s = v?.peek ? v : signal(store(v));\n else if (v === s.peek()) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek();\n if (cur[_change]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i];\n cur.length = v.length;\n });\n else s.value = v;\n } else s.value = store(v);\n}\nvar _signals, _change, mut;\nvar init_store = __esm({\n \"store.js\"() {\n init_signal();\n _signals = Symbol(\"signals\");\n _change = Symbol(\"change\");\n mut = [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"];\n }\n});\n\n// core.js\nfunction sprae(el, values) {\n if (el[_state]) return Object.assign(el[_state], values);\n const state = store(values || {}), offs = [], fx = [];\n const init = (el2, attrs = el2.attributes) => {\n if (attrs) for (let i = 0; i < attrs.length; ) {\n let { name, value } = attrs[i], pfx, update, dir2;\n if (pfx = name[0] === \":\" ? 1 : name[0] === \"s\" && name[1] === \"-\" ? 2 : 0) {\n el2.removeAttribute(name);\n for (dir2 of name.slice(pfx).split(\":\")) {\n update = (directive[dir2] || directive.default)(el2, value, state, dir2);\n fx.push(update), offs.push(effect(update));\n if (el2[_state] === null) return;\n }\n } else i++;\n }\n for (let child of el2.childNodes) child.nodeType == 1 && init(child);\n };\n init(el);\n if (!(_state in el)) {\n el[_state] = state;\n el[_off] = () => {\n while (offs.length) offs.pop()();\n };\n el[_on] = () => offs.push(...fx.map((f) => effect(f)));\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null);\n }\n return state;\n}\nvar _dispose, _state, _on, _off, directive, dir, parse, memo, err, compile, frag;\nvar init_core = __esm({\n \"core.js\"() {\n init_signal();\n init_store();\n _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\n _state = Symbol(\"state\");\n _on = Symbol(\"on\");\n _off = Symbol(\"off\");\n directive = {};\n dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (evaluate = p(expr), update = create(el, state, expr, name2, evaluate), () => update(evaluate(state)));\n parse = (expr, dir2, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir2, expr);\n }\n return memo[expr] = fn;\n };\n memo = {};\n err = (e, dir2 = \"\", expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir2}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n };\n sprae.use = (s) => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n };\n frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n // get parentNode() { return childNodes[0].parentNode },\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) {\n attributes.splice(attributes.findIndex((a) => a.name === name), 1);\n }\n // setAttributeNode() { }\n };\n };\n }\n});\n\n// directive/if.js\nvar _prevIf;\nvar init_if = __esm({\n \"directive/if.js\"() {\n init_core();\n _prevIf = Symbol(\"if\");\n dir(\"if\", (el, state) => {\n const holder = document.createTextNode(\"\");\n let next = el.nextElementSibling, curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n ifEl[_state] = null;\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null;\n }\n return (value) => {\n const newEl = value ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state)) : curEl[_on]();\n }\n }\n };\n });\n }\n});\n\n// directive/each.js\nvar init_each = __esm({\n \"directive/each.js\"() {\n init_core();\n init_store();\n init_signal();\n dir(\n \"each\",\n (tpl, state, expr) => {\n const [itemVar, idxVar = \"$\"] = expr.split(/\\s+in\\s+/)[0].split(/\\s*,\\s*/);\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n tpl[_state] = null;\n let cur, keys2, items, prevl = 0;\n const update = () => {\n var _a, _b;\n let i = 0, newItems = items, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]();\n cur = null, prevl = 0;\n }\n if (newl < prevl) cur.length = newl;\n else {\n if (!cur) cur = newItems;\n else while (i < prevl) cur[i] = newItems[i++];\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys2 ? keys2[idx] : idx\n }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n holder.before(el.content || el);\n sprae(el, scope);\n ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove();\n };\n }\n }\n prevl = newl;\n };\n return (value) => {\n keys2 = null;\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1);\n else if (value?.constructor === Object) keys2 = Object.keys(value), items = Object.values(value);\n else items = value || [];\n let planned = 0;\n return effect(() => {\n items[_change]?.value;\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n });\n };\n },\n // redefine evaluator to take second part of expression\n (expr) => parse(expr.split(/\\s+in\\s+/)[1])\n );\n }\n});\n\n// directive/default.js\nvar mods, keys, throttle, debounce, attr, dashcase;\nvar init_default = __esm({\n \"directive/default.js\"() {\n init_core();\n dir(\"default\", (target, state, expr, name) => {\n if (!name.startsWith(\"on\"))\n return name ? (value) => attr(target, name, value) : (value) => {\n for (let key in value) attr(target, dashcase(key), value[key]);\n };\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(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (_, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n const addListener = (fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) => {\n if (defer) fn = defer(fn);\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n };\n if (ctxs.length == 1) return (v) => addListener(v, ctxs[0]);\n let startFn, nextFn, off, idx = 0;\n const nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return (value) => (startFn = value, !off && nextListener(startFn), () => startFn = null);\n });\n mods = {\n // actions\n prevent(ctx) {\n ctx.prevent = true;\n },\n stop(ctx) {\n ctx.stop = true;\n },\n immediate(ctx) {\n ctx.immediate = true;\n },\n // options\n once(ctx) {\n ctx.once = true;\n },\n passive(ctx) {\n ctx.passive = true;\n },\n capture(ctx) {\n ctx.capture = true;\n },\n // target\n window(ctx) {\n ctx.target = window;\n },\n document(ctx) {\n ctx.target = document;\n },\n parent(ctx) {\n ctx.target = ctx.target.parentNode;\n },\n throttle(ctx, limit) {\n ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);\n },\n debounce(ctx, wait) {\n 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 // 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 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 === \"\\xA0\" || 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 throttle = (fn, limit) => {\n let pause, planned, block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\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 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 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 dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n };\n }\n});\n\n// directive/value.js\nvar setter, ensure;\nvar init_value = __esm({\n \"directive/value.js\"() {\n init_core();\n init_core();\n init_default();\n dir(\"value\", (el, state, expr) => {\n 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) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\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 } : (value) => el.value = value;\n ensure(state, expr);\n try {\n const set2 = setter(expr);\n const handleChange = el.type === \"checkbox\" ? () => set2(state, el.checked) : el.type === \"select-multiple\" ? () => set2(state, [...el.selectedOptions].map((o) => o.value)) : () => set2(state, el.selectedIndex < 0 ? null : el.value);\n el.oninput = el.onchange = handleChange;\n if (el.type?.startsWith(\"select\")) {\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n sprae(el, state);\n }\n } catch {\n }\n return update;\n });\n setter = (expr, set2 = parse(`${expr}=__`)) => (\n // FIXME: if there's a simpler way to set value in justin?\n (state, value) => (state.__ = value, set2(state, value), delete state.__)\n );\n ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => {\n var _a;\n return name && (state[_a = name[0]] ?? (state[_a] = null));\n };\n }\n});\n\n// directive/ref.js\nvar init_ref = __esm({\n \"directive/ref.js\"() {\n init_core();\n init_value();\n dir(\"ref\", (el, state, expr, _, ev) => (ensure(state, expr), ev(state) == null ? (setter(expr)(state, el), (_2) => _2) : (v) => v.call(null, el)));\n }\n});\n\n// directive/with.js\nvar init_with = __esm({\n \"directive/with.js\"() {\n init_core();\n init_store();\n dir(\"with\", (el, rootState, state) => (state = null, (values) => sprae(el, state ? values : state = store(values, rootState))));\n }\n});\n\n// directive/text.js\nvar init_text = __esm({\n \"directive/text.js\"() {\n init_core();\n dir(\"text\", (el) => (\n // <template :text=\"a\"/> or previously initialized template\n (el.content && el.replaceWith(el = frag(el).childNodes[0]), (value) => el.textContent = value == null ? \"\" : value)\n ));\n }\n});\n\n// directive/class.js\nvar init_class = __esm({\n \"directive/class.js\"() {\n init_core();\n dir(\n \"class\",\n (el, cur) => (cur = /* @__PURE__ */ new Set(), (v) => {\n let clsx = /* @__PURE__ */ 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((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n })\n );\n }\n});\n\n// directive/style.js\nvar init_style = __esm({\n \"directive/style.js\"() {\n init_core();\n dir(\n \"style\",\n (el, initStyle) => (initStyle = el.getAttribute(\"style\"), (v) => {\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 }\n});\n\n// directive/fx.js\nvar init_fx = __esm({\n \"directive/fx.js\"() {\n init_core();\n dir(\"fx\", (_) => (_2) => _2);\n }\n});\n\n// directive/aria.js\nvar init_aria = __esm({\n \"directive/aria.js\"() {\n init_core();\n init_default();\n dir(\"aria\", (el) => (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n });\n }\n});\n\n// directive/data.js\nvar init_data = __esm({\n \"directive/data.js\"() {\n init_core();\n dir(\"data\", (el) => (value) => {\n for (let key in value) el.dataset[key] = value[key];\n });\n }\n});\n\n// sprae.js\nvar sprae_exports = {};\n__export(sprae_exports, {\n default: () => sprae_default\n});\nvar sprae_default;\nvar init_sprae = __esm({\n \"sprae.js\"() {\n init_core();\n init_if();\n init_each();\n init_ref();\n init_with();\n init_text();\n init_class();\n init_style();\n init_value();\n init_fx();\n init_default();\n init_aria();\n init_data();\n sprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });\n sprae_default = sprae;\n }\n});\n\n// sprae.umd.cjs\nvar { default: sprae2 } = (init_sprae(), __toCommonJS(sprae_exports));\nmodule.exports = sprae2;\nif (document.currentScript?.hasAttribute(\"init\")) {\n const props = JSON.parse(document.currentScript?.getAttribute(\"init\") || \"{}\");\n const init = () => {\n sprae2(document.documentElement, props);\n };\n if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", init);\n else init();\n}\n;if (typeof module.exports == \"object\" && typeof exports == \"object\") {\n var __cp = (to, from, except, desc) => {\n if ((from && typeof from === \"object\") || typeof from === \"function\") {\n for (let key of Object.getOwnPropertyNames(from)) {\n if (!Object.prototype.hasOwnProperty.call(to, key) && key !== except)\n Object.defineProperty(to, key, {\n get: () => from[key],\n enumerable: !(desc = Object.getOwnPropertyDescriptor(from, key)) || desc.enumerable,\n });\n }\n }\n return to;\n };\n module.exports = __cp(module.exports, exports);\n}\nreturn module.exports;\n}))\n"],
5
+ "mappings": "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",
6
+ "names": ["g", "f", "exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__esm", "fn", "res", "__export", "target", "all", "name", "__copyProps", "to", "from", "except", "desc", "key", "__toCommonJS", "mod", "use", "s", "signal", "effect", "computed", "batch", "untracked", "current", "init_signal", "v", "obs", "val", "sub", "teardown", "fx", "deps", "prev", "dep", "c", "e", "store", "values", "parent", "_signals", "list", "signals", "_len", "state", "_", "_change", "set", "lastProp", "mut", "i", "cur", "init_store", "sprae", "el", "_state", "offs", "init", "el2", "attrs", "value", "pfx", "update", "dir2", "directive", "child", "_off", "_on", "_dispose", "dir", "parse", "memo", "err", "compile", "frag", "init_core", "create", "p", "expr", "name2", "evaluate", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "init_if", "holder", "next", "curEl", "ifEl", "elseEl", "newEl", "init_each", "itemVar", "idxVar", "keys2", "items", "prevl", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "mods", "keys", "throttle", "debounce", "attr", "dashcase", "init_default", "ctxs", "ctx", "param", "addListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "startFn", "nextFn", "off", "nextListener", "limit", "wait", "pause", "block", "timeout", "str", "match", "setter", "ensure", "init_value", "set2", "handleChange", "o", "init_ref", "ev", "_2", "init_with", "rootState", "init_text", "init_class", "clsx", "cls", "v2", "k", "init_style", "initStyle", "init_fx", "init_aria", "init_data", "sprae_exports", "sprae_default", "init_sprae", "sprae2", "props", "__cp"]
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sprae",
3
3
  "description": "DOM microhydration",
4
- "version": "11.2.0",
4
+ "version": "11.2.1",
5
5
  "main": "./sprae.js",
6
6
  "module": "./sprae.js",
7
7
  "unpkg": "dist/sprae.umd.min.js",
package/readme.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > DOM tree microhydration
4
4
 
5
5
  _Sprae_ is open & minimalistic progressive enhancement framework with _preact-signals_ based reactivity.<br/>
6
- Perfect for small-scale websites, static pages, landings, prototypes, lightweight UI or as [nextjs / SSR companion](#JSX).<br/>
6
+ Perfect for small-scale websites, static pages, landings, prototypes, lightweight UI or as [SSR companion](#JSX).<br/>
7
7
  A light and fast alternative to _alpine_, _petite-vue_ etc (see [why](#justification)).
8
8
 
9
9
  ## Usage
@@ -366,7 +366,6 @@ sprae.use({ compile })
366
366
  * `key` is not used, `:each` uses direct list mapping instead of DOM diffing.
367
367
  * `await` is not supported in attributes, it’s a strong indicator you need to put these methods into state.
368
368
  * `:ref` comes after `:if` for mount/unmount events `<div :if="cond" :ref="(init(), ()=>dispose())"></div>`.
369
- * Directives be `s-` prefixed instead of `:` for JSX.
370
369
 
371
370
  ## Justification
372
371
 
@@ -457,21 +456,19 @@ npm run results
457
456
 
458
457
  ## JSX
459
458
 
460
- Sprae works with JSX, eg. Next.js companion for SSR via `s-` prefixed attributes.
459
+ Sprae works with JSX via `s-` attributes, eg. Next.js companion for SSR.
461
460
 
462
- Next.js server components fall short for dynamic UI, like active nav items, collapsible sections, tabs etc. That forces into client components, which screws up data fetching, bloats hydration and adds overhead.`<Script>` is heavy and clunky hack.
463
-
464
- Sprae can offload UI logic to keep server components intact.
461
+ Next.js server components fail at dynamic UI, like active nav, tabs, sliders etc. That forces into client components, which screws up data fetching, bloats hydration and adds overhead.`<Script>` is heavy and clunky hack. Sprae can offload UI logic to keep server components intact.
465
462
 
466
463
  ```jsx
467
- // app/page.jsx
464
+ // app/page.jsx - server component
468
465
  export default function Page() {
469
466
  return <>
470
467
  <nav id="nav">
471
468
  <a href="/" s-class="location.path === '/' && 'active'">Home</a>
472
469
  <a href="/about" s-class="location.path === '/about' && 'active'">About</a>
473
470
  </nav>
474
- <script src="https://unpkg.com/sprae" init></script>
471
+ ...
475
472
  </>
476
473
  }
477
474
  ```