sprae 11.0.6 → 11.0.7

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["sprae.js"],
4
- "sourcesContent": ["// signal.js\nvar current;\nvar batched;\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) batched ? batched.add(sub) : 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) => {\n let fxs = batched;\n if (!fxs) batched = /* @__PURE__ */ new Set();\n try {\n fn();\n } finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n};\nvar untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || ((fn) => fn());\n untracked = s.untracked || batch;\n}\n\n// store.js\nvar _signals = Symbol(\"signals\");\nvar _change = Symbol(\"length\");\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] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n _len.value;\n return Reflect.ownKeys(signals);\n }\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] = void 0;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nvar mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 };\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[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, l = signals.length; i < l; 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 = Number(key) + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key] && del(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) {\n 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]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i];\n cur.length = l;\n });\n });\n else {\n s.value = v;\n }\n } else {\n s.value = store(v);\n }\n}\nfunction del(signals, key) {\n const s = signals[key], del2 = s[Symbol.dispose];\n if (del2) delete s[Symbol.dispose];\n delete signals[key];\n del2?.();\n}\n\n// core.js\nvar _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\nvar directive = {};\nvar memo = /* @__PURE__ */ new WeakMap();\nfunction sprae(el, values) {\n if (!el?.childNodes) return;\n if (memo.has(el)) {\n return Object.assign(memo.get(el), values);\n }\n const state = store(values || {}), disposes = [];\n init(el);\n if (!memo.has(el)) memo.set(el, state);\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n el[_dispose] = null;\n };\n return state;\n function init(el2, parent = el2.parentNode) {\n if (!el2.childNodes) return;\n for (let i = 0; i < el2.attributes?.length; ) {\n let attr2 = el2.attributes[i];\n if (attr2.name[0] === \":\") {\n el2.removeAttribute(attr2.name);\n let names = attr2.name.slice(1).split(\":\");\n for (let name of names) {\n let dir = directive[name] || directive.default;\n let evaluate = (dir.parse || parse)(attr2.value);\n let fn = dir(el2, evaluate, state, name);\n if (fn) disposes.push(effect(fn));\n disposes.push(() => el2.setAttributeNode(attr2));\n }\n if (memo.has(el2)) return el2[_dispose] && disposes.push(el2[_dispose]);\n if (el2.parentNode !== parent) return;\n } else i++;\n }\n for (let child of [...el2.childNodes])\n init(child, el2.content ? el2.childNodes[0].parentNode : el2);\n }\n ;\n}\nvar evalMemo = {};\nvar parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir, expr);\n }\n return evalMemo[expr] = fn;\n};\nvar err = (e, dir, expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir}${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\n// directive/if.js\nvar _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling, holder = document.createTextNode(\"\"), curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n memo.set(ifEl, null);\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);\n }\n return () => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n memo.get(curEl) === null && memo.delete(curEl);\n sprae(curEl, state);\n }\n }\n };\n};\n\n// directive/each.js\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n let cur, keys2, prevl = 0;\n const items = computed(() => {\n keys2 = null;\n let items2 = evaluate(state);\n if (typeof items2 === \"number\") items2 = Array.from({ length: items2 }, (_, i) => i + 1);\n if (items2?.constructor === Object) keys2 = Object.keys(items2), items2 = Object.values(items2);\n return items2 || [];\n });\n const update = () => {\n untracked(() => {\n var _a, _b;\n let i = 0, newItems = items.value, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) {\n s[Symbol.dispose]();\n }\n cur = null, prevl = 0;\n }\n if (newl < prevl) {\n cur.length = newl;\n } else {\n if (!cur) {\n cur = newItems;\n } else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i];\n }\n }\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 };\n let planned = 0;\n return () => {\n items.value[_change]?.value;\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n };\n};\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n return [itemVar, idxVar, parse(itemsExpr)];\n};\n\n// directive/ref.js\ndirective.ref = (el, evaluate, state) => {\n return () => evaluate(state)?.call?.(null, el);\n};\n\n// directive/with.js\ndirective.with = (el, evaluate, rootState) => {\n let state;\n return () => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState));\n };\n};\n\n// directive/text.js\ndirective.text = (el, evaluate, state) => {\n if (el.content) el.replaceWith(el = frag(el).childNodes[0]);\n return () => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n };\n};\n\n// directive/class.js\ndirective.class = (el, evaluate, state) => {\n let cur = /* @__PURE__ */ new Set();\n return () => {\n let v = evaluate(state);\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\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n return () => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(\";\") ? \"\" : \"; \") + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == \"-\" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];\n }\n };\n};\n\n// directive/default.js\ndirective.default = (target, evaluate, state, name) => {\n if (!name.startsWith(\"on\")) return () => {\n let value = evaluate(state);\n if (name) attr(target, name, value);\n else for (let key in value) attr(target, dashcase(key), value[key]);\n };\n 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 (match, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n if (ctxs.length == 1) return () => addListener(evaluate(state), 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 () => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null);\n function 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?.(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 ;\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 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 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 dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n};\n\n// directive/value.js\ndirective.value = (el, [getValue, setValue], state) => {\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 const handleChange = el.type === \"checkbox\" ? () => setValue(state, el.checked) : el.type === \"select-multiple\" ? () => setValue(state, [...el.selectedOptions].map((o) => o.value)) : (e) => setValue(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 return () => {\n update(getValue(state));\n };\n};\ndirective.value.parse = (expr) => {\n let evaluate = [parse(expr)];\n try {\n const set2 = parse(`${expr}=__`);\n evaluate.push((state, value) => {\n state.__ = value;\n set2(state, value);\n delete state.__;\n });\n } catch (e) {\n }\n return evaluate;\n};\n\n// directive/fx.js\ndirective.fx = (el, evaluate, state) => {\n return () => evaluate(state);\n};\n\n// directive/aria.js\ndirective[\"aria\"] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n };\n return () => update(evaluate(state));\n};\n\n// directive/data.js\ndirective[\"data\"] = (el, evaluate, state) => {\n return () => {\n let value = evaluate(state);\n for (let key in value) el.dataset[key] = value[key];\n };\n};\n\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", "batched", "signal", "v", "s", "obs", "val", "sub", "effect", "fn", "teardown", "fx", "deps", "prev", "dep", "computed", "c", "e", "batch", "fxs", "untracked", "use", "_signals", "_change", "store", "values", "parent", "list", "signals", "_len", "state", "_", "key", "set", "del", "desc", "mut", "lastProp", "i", "l", "cur", "del2", "_dispose", "directive", "memo", "sprae", "el", "disposes", "init", "el2", "attr2", "names", "name", "dir", "evaluate", "parse", "child", "evalMemo", "expr", "compile", "err", "frag", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "next", "holder", "curEl", "ifEl", "elseEl", "newEl", "itemVar", "idxVar", "keys2", "prevl", "items", "items2", "update", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "leftSide", "itemsExpr", "rootState", "value", "clsx", "cls", "v2", "k", "initStyle", "target", "attr", "dashcase", "ctxs", "ctx", "match", "mod", "param", "mods", "addListener", "startFn", "nextFn", "off", "nextListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "limit", "throttle", "wait", "debounce", "keys", "p", "pause", "block", "timeout", "str", "getValue", "setValue", "from", "to", "handleChange", "o", "set2", "sprae_default"]
4
+ "sourcesContent": ["// signal.js\nvar current;\nvar batched;\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) batched ? batched.add(sub) : 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) => {\n let fxs = batched;\n if (!fxs) batched = /* @__PURE__ */ new Set();\n try {\n fn();\n } finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n};\nvar untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || ((fn) => fn());\n untracked = s.untracked || batch;\n}\n\n// store.js\nvar _signals = Symbol(\"signals\");\nvar _change = Symbol(\"length\");\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] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n _len.value;\n return Reflect.ownKeys(signals);\n }\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] = void 0;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nvar mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 };\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[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, l = signals.length; i < l; 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 = Number(key) + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key] && del(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) {\n 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]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i];\n cur.length = l;\n });\n });\n else {\n s.value = v;\n }\n } else {\n s.value = store(v);\n }\n}\nfunction del(signals, key) {\n const s = signals[key], del2 = s[Symbol.dispose];\n if (del2) delete s[Symbol.dispose];\n delete signals[key];\n del2?.();\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 = {};\nfunction sprae(el, values) {\n if (!el?.childNodes) return;\n if (_state in el) {\n return Object.assign(el[_state], values);\n }\n const state = store(values || {}), offs = [], fx = [];\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 function init(el2) {\n if (!el2.childNodes) return;\n for (let i = 0; i < el2.attributes?.length; ) {\n let attr2 = el2.attributes[i];\n if (attr2.name[0] === \":\") {\n el2.removeAttribute(attr2.name);\n for (let name of attr2.name.slice(1).split(\":\")) {\n let dir = directive[name] || directive.default, update = dir(el2, (dir.parse || parse)(attr2.value), state, name);\n fx.push(update);\n offs.push(effect(update));\n if (_state in el2) return;\n }\n } else i++;\n }\n for (let child of [...el2.childNodes]) init(child);\n }\n ;\n}\nvar memo = {};\nvar parse = (expr, dir, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir, expr);\n }\n return memo[expr] = fn;\n};\nvar err = (e, dir, expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir}${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\n// directive/if.js\nvar _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling, holder = document.createTextNode(\"\"), 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 () => {\n const newEl = evaluate(state) ? 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];\n curEl[_state] ? curEl[_on]() : sprae(curEl, state);\n }\n }\n };\n};\n\n// directive/each.js\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n tpl[_state] = null;\n let cur, keys2, prevl = 0;\n const items = computed(() => {\n keys2 = null;\n let items2 = evaluate(state);\n if (typeof items2 === \"number\") items2 = Array.from({ length: items2 }, (_, i) => i + 1);\n if (items2?.constructor === Object) keys2 = Object.keys(items2), items2 = Object.values(items2);\n return items2 || [];\n });\n const update = () => {\n untracked(() => {\n var _a, _b;\n let i = 0, newItems = items.value, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) {\n s[Symbol.dispose]();\n }\n cur = null, prevl = 0;\n }\n if (newl < prevl) {\n cur.length = newl;\n } else {\n if (!cur) {\n cur = newItems;\n } else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i];\n }\n }\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 };\n let planned = 0;\n return () => {\n items.value[_change]?.value;\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n };\n};\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n return [itemVar, idxVar, parse(itemsExpr)];\n};\n\n// directive/ref.js\ndirective.ref = (el, evaluate, state) => {\n return () => evaluate(state)?.call?.(null, el);\n};\n\n// directive/with.js\ndirective.with = (el, evaluate, rootState) => {\n let state;\n return () => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState));\n };\n};\n\n// directive/text.js\ndirective.text = (el, evaluate, state) => {\n if (el.content) el.replaceWith(el = frag(el).childNodes[0]);\n return () => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n };\n};\n\n// directive/class.js\ndirective.class = (el, evaluate, state) => {\n let cur = /* @__PURE__ */ new Set();\n return () => {\n let v = evaluate(state);\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\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n return () => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(\";\") ? \"\" : \"; \") + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == \"-\" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];\n }\n };\n};\n\n// directive/default.js\ndirective.default = (target, evaluate, state, name) => {\n if (!name.startsWith(\"on\")) return () => {\n let value = evaluate(state);\n if (name) attr(target, name, value);\n else for (let key in value) attr(target, dashcase(key), value[key]);\n };\n 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 (match, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n if (ctxs.length == 1) return () => addListener(evaluate(state), 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 () => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null);\n function 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 ;\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 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 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 dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n};\n\n// directive/value.js\ndirective.value = (el, [getValue, setValue], state) => {\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 const handleChange = el.type === \"checkbox\" ? () => setValue(state, el.checked) : el.type === \"select-multiple\" ? () => setValue(state, [...el.selectedOptions].map((o) => o.value)) : (e) => setValue(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 return () => {\n update(getValue(state));\n };\n};\ndirective.value.parse = (expr) => {\n let evaluate = [parse(expr)];\n try {\n const set2 = parse(`${expr}=__`);\n evaluate.push((state, value) => {\n state.__ = value;\n set2(state, value);\n delete state.__;\n });\n } catch (e) {\n }\n return evaluate;\n};\n\n// directive/fx.js\ndirective.fx = (el, evaluate, state) => {\n return () => evaluate(state);\n};\n\n// directive/aria.js\ndirective[\"aria\"] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n };\n return () => update(evaluate(state));\n};\n\n// directive/data.js\ndirective[\"data\"] = (el, evaluate, state) => {\n return () => {\n let value = evaluate(state);\n for (let key in value) el.dataset[key] = value[key];\n };\n};\n\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", "batched", "signal", "v", "s", "obs", "val", "sub", "effect", "fn", "teardown", "fx", "deps", "prev", "dep", "computed", "c", "e", "batch", "fxs", "untracked", "use", "_signals", "_change", "store", "values", "parent", "list", "signals", "_len", "state", "_", "key", "set", "del", "desc", "mut", "lastProp", "i", "l", "cur", "del2", "_dispose", "_state", "_on", "_off", "directive", "sprae", "el", "offs", "init", "f", "el2", "attr2", "name", "dir", "update", "parse", "child", "memo", "expr", "compile", "err", "frag", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "evaluate", "next", "holder", "curEl", "ifEl", "elseEl", "newEl", "itemVar", "idxVar", "keys2", "prevl", "items", "items2", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "leftSide", "itemsExpr", "rootState", "value", "clsx", "cls", "v2", "k", "initStyle", "target", "attr", "dashcase", "ctxs", "ctx", "match", "mod", "param", "mods", "addListener", "startFn", "nextFn", "off", "nextListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "limit", "throttle", "wait", "debounce", "keys", "p", "pause", "block", "timeout", "str", "getValue", "setValue", "from", "to", "handleChange", "o", "set2", "sprae_default"]
7
7
  }
package/dist/sprae.umd.js CHANGED
@@ -177,58 +177,57 @@ var init_store = __esm({
177
177
  // core.js
178
178
  function sprae(el, values) {
179
179
  if (!el?.childNodes) return;
180
- if (memo.has(el)) {
181
- return Object.assign(memo.get(el), values);
180
+ if (_state in el) {
181
+ return Object.assign(el[_state], values);
182
182
  }
183
- const state = store(values || {}), disposes = [];
183
+ const state = store(values || {}), offs = [], fx = [];
184
184
  init(el);
185
- if (!memo.has(el)) memo.set(el, state);
186
- el[_dispose] = () => {
187
- while (disposes.length) disposes.pop()();
188
- memo.delete(el);
189
- el[_dispose] = null;
190
- };
185
+ if (!(_state in el)) {
186
+ el[_state] = state;
187
+ el[_off] = () => {
188
+ while (offs.length) offs.pop()();
189
+ };
190
+ el[_on] = () => offs.push(...fx.map((f) => effect(f)));
191
+ el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null);
192
+ }
191
193
  return state;
192
- function init(el2, parent = el2.parentNode) {
194
+ function init(el2) {
193
195
  if (!el2.childNodes) return;
194
196
  for (let i = 0; i < el2.attributes?.length; ) {
195
197
  let attr2 = el2.attributes[i];
196
198
  if (attr2.name[0] === ":") {
197
199
  el2.removeAttribute(attr2.name);
198
- let names = attr2.name.slice(1).split(":");
199
- for (let name of names) {
200
- let dir = directive[name] || directive.default;
201
- let evaluate = (dir.parse || parse)(attr2.value);
202
- let fn = dir(el2, evaluate, state, name);
203
- if (fn) disposes.push(effect(fn));
204
- disposes.push(() => el2.setAttributeNode(attr2));
200
+ for (let name of attr2.name.slice(1).split(":")) {
201
+ let dir = directive[name] || directive.default, update = dir(el2, (dir.parse || parse)(attr2.value), state, name);
202
+ fx.push(update);
203
+ offs.push(effect(update));
204
+ if (_state in el2) return;
205
205
  }
206
- if (memo.has(el2)) return el2[_dispose] && disposes.push(el2[_dispose]);
207
- if (el2.parentNode !== parent) return;
208
206
  } else i++;
209
207
  }
210
- for (let child of [...el2.childNodes])
211
- init(child, el2.content ? el2.childNodes[0].parentNode : el2);
208
+ for (let child of [...el2.childNodes]) init(child);
212
209
  }
213
210
  ;
214
211
  }
215
- var _dispose, directive, memo, evalMemo, parse, err, compile, frag;
212
+ var _dispose, _state, _on, _off, directive, memo, parse, err, compile, frag;
216
213
  var init_core = __esm({
217
214
  "core.js"() {
218
215
  init_signal();
219
216
  init_store();
220
217
  _dispose = Symbol.dispose || (Symbol.dispose = Symbol("dispose"));
218
+ _state = Symbol("state");
219
+ _on = Symbol("on");
220
+ _off = Symbol("off");
221
221
  directive = {};
222
- memo = /* @__PURE__ */ new WeakMap();
223
- evalMemo = {};
222
+ memo = {};
224
223
  parse = (expr, dir, fn) => {
225
- if (fn = evalMemo[expr = expr.trim()]) return fn;
224
+ if (fn = memo[expr = expr.trim()]) return fn;
226
225
  try {
227
226
  fn = compile(expr);
228
227
  } catch (e) {
229
228
  err(e, dir, expr);
230
229
  }
231
- return evalMemo[expr] = fn;
230
+ return memo[expr] = fn;
232
231
  };
233
232
  err = (e, dir, expr = "") => {
234
233
  throw Object.assign(e, { message: `\u2234 ${e.message}
@@ -275,20 +274,20 @@ var init_if = __esm({
275
274
  let next = el.nextElementSibling, holder = document.createTextNode(""), curEl, ifEl, elseEl;
276
275
  el.replaceWith(holder);
277
276
  ifEl = el.content ? frag(el) : el;
278
- memo.set(ifEl, null);
277
+ ifEl[_state] = null;
279
278
  if (next?.hasAttribute(":else")) {
280
279
  next.removeAttribute(":else");
281
- if (!next.hasAttribute(":if")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);
280
+ if (!next.hasAttribute(":if")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null;
282
281
  }
283
282
  return () => {
284
283
  const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;
285
284
  if (next) next[_prevIf] = newEl === ifEl;
286
285
  if (curEl != newEl) {
287
- if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();
286
+ if (curEl) curEl.remove(), curEl[_off]?.();
288
287
  if (curEl = newEl) {
289
288
  holder.before(curEl.content || curEl);
290
- memo.get(curEl) === null && memo.delete(curEl);
291
- sprae(curEl, state);
289
+ curEl[_state] === null && delete curEl[_state];
290
+ curEl[_state] ? curEl[_on]() : sprae(curEl, state);
292
291
  }
293
292
  }
294
293
  };
@@ -305,6 +304,7 @@ var init_each = __esm({
305
304
  directive.each = (tpl, [itemVar, idxVar, evaluate], state) => {
306
305
  const holder = document.createTextNode("");
307
306
  tpl.replaceWith(holder);
307
+ tpl[_state] = null;
308
308
  let cur, keys2, prevl = 0;
309
309
  const items = computed(() => {
310
310
  keys2 = null;
@@ -471,7 +471,7 @@ var init_default = __esm({
471
471
  if (defer) fn = defer(fn);
472
472
  const cb = (e) => {
473
473
  try {
474
- test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e));
474
+ test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e));
475
475
  } catch (error) {
476
476
  err(error, `:on${evt}`, fn);
477
477
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../signal.js", "../store.js", "../core.js", "../directive/if.js", "../directive/each.js", "../directive/ref.js", "../directive/with.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/default.js", "../directive/value.js", "../directive/fx.js", "../directive/aria.js", "../directive/data.js", "../sprae.js", "../sprae.umd.cjs"],
4
- "sourcesContent": ["// ulive copy, stable minimal implementation\nlet current, batched;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = new Set;\n try { fn(); }\n finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n },\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n\n// signals adapter - allows switching signals implementation and not depend on core\n\nexport function use(s) {\n signal = s.signal\n effect = s.effect\n computed = s.computed\n batch = s.batch || (fn => fn())\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, batch, untracked } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('length');\n\n// object store is not lazy\nexport default function store(values, parent) {\n if (!values) return values\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // redirect for optimized array store\n if (Array.isArray(values)) return list(values)\n\n // ignore non-objects or custom objects\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? (++_len.value), 1), // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n // subscribe to length when object is spread\n _len.value\n return Reflect.ownKeys(signals);\n },\n })\n\n // init signals for values\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key)\n\n // getter turns into computed\n if (desc?.get) {\n // stash setter\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n }\n else {\n // init blank signal - make sure we don't take prototype one\n signals[key] = undefined\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 }\n\n// array store - signals are lazy since arrays can be very large & expensive\nexport function list(values) {\n // track last accessed property to find out if .length was directly accessed from expression or via .push/etc method\n let lastProp\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // .length signal is stored separately, since it cannot be replaced on array\n let _len = signal(values.length),\n // gotta fill with null since proto methods like .reduce may fail\n signals = Array(values.length).fill();\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get(_, key) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof key === 'symbol') return key === _change ? _len : key === _signals ? signals : signals[key]\n\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut[lastProp] ? _len.peek() : _len.value;\n\n lastProp = key;\n\n if (signals[key]) return signals[key].valueOf()\n\n // I hope reading values here won't diverge from signals\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value\n },\n\n set(_, key, v) {\n // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v, l = signals.length; i < l; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n return true\n }\n\n set(signals, key, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1),\n\n })\n\n return state\n}\n\n// set/update signal value\nfunction set(signals, key, v) {\n let s = signals[key]\n\n // untracked\n if (key[0] === '_') signals[key] = v\n // new property\n else if (!s) {\n // preserve signal value as is\n signals[key] = s = v?.peek ? v : signal(store(v))\n }\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === s.peek());\n // stashed _set for value with getter/setter\n else if (s._set) s._set(v)\n // patch array\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek()\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i]\n cur.length = l // forces deleting tail signals\n })\n })\n else {\n s.value = v\n }\n }\n // .x = y\n else {\n s.value = store(v)\n }\n}\n\n// delete signal\nfunction del(signals, key) {\n const s = signals[key], del = s[Symbol.dispose]\n if (del) delete s[Symbol.dispose]\n delete signals[key]\n del?.()\n}\n", "import { use, effect } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\n\n// reserved directives - order matters!\nexport const directive = {};\n\n// every element that's in cache === directly spraed and un subsequent sprae is just updated (like each)\nexport const memo = new WeakMap();\n\n// sprae element: apply directives\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by :each with new objects with old keys needs an update\n if (memo.has(el)) {\n // we rewrite signals instead of update, because user should have what he provided\n return Object.assign(memo.get(el), values)\n }\n\n // take over existing state instead of creating clone\n const state = store(values || {}), disposes = []\n\n init(el);\n\n // if element was spraed by :with or :each instruction - skip, otherwise save\n if (!memo.has(el)) memo.set(el, state);\n\n // disposer unspraes all internal elements\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n el[_dispose] = null;\n }\n\n return state;\n\n function init(el, parent = el.parentNode) {\n if (!el.childNodes) return // ignore text nodes, comments etc\n // init generic-name attributes second\n for (let i = 0; i < el.attributes?.length;) {\n let attr = el.attributes[i];\n\n if (attr.name[0] === ':') {\n el.removeAttribute(attr.name);\n\n // multiple attributes like :id:for=\"\"\n let names = attr.name.slice(1).split(':')\n\n for (let name of names) {\n let dir = directive[name] || directive.default\n let evaluate = (dir.parse || parse)(attr.value)\n let fn = dir(el, evaluate, state, name);\n if (fn) disposes.push(effect(fn))\n disposes.push(() => el.setAttributeNode(attr)) // recover attribute\n }\n\n // stop if element was spraed by internal directive\n if (memo.has(el)) return el[_dispose] && disposes.push(el[_dispose])\n\n // stop if element is skipped/detached like in case of :if or :each\n if (el.parentNode !== parent) return\n } else i++;\n }\n\n for (let child of [...el.childNodes])\n // adjust for template container - parent is overlooked\n init(child, el.content ? el.childNodes[0].parentNode : el);\n };\n}\n\n\n// parse expression into evaluator fn\nconst evalMemo = {};\nexport const parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n // runtime errors\n return evalMemo[expr] = fn\n}\n\n// wrapped call\nexport const err = (e, dir, expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\nexport let compile\n\n// configure signals/compile\n// it's more compact than using sprae.signal = signal etc.\nsprae.use = s => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n}\n\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true),\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n // 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, { directive, memo, frag } from \"../core.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling,\n holder = document.createTextNode(''),\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n memo.set(ifEl, null) // mark all el as fake-spraed, because we have to sprae for real on insert\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null)\n }\n\n return () => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements to avoid internal effects from triggering on value changes when element's not matched\n if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n memo.get(curEl) === null && memo.delete(curEl) // remove fake memo to sprae as new\n sprae(curEl, state)\n }\n }\n };\n};\n", "import sprae, { directive, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { untracked, computed } from '../signal.js';\n\n\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n // we need :if to be able to replace holder instead of tpl for :if :each case\n const holder = (document.createTextNode(\"\"));\n tpl.replaceWith(holder);\n\n // we re-create items any time new items are produced\n let cur, keys, prevl = 0\n\n // separate computed effect reduces number of needed updates for the effect\n const items = computed(() => {\n keys = null\n let items = evaluate(state)\n if (typeof items === \"number\") items = Array.from({ length: items }, (_, i) => i + 1)\n if (items?.constructor === Object) keys = Object.keys(items), items = Object.values(items)\n return items || []\n })\n\n const update = () => {\n // NOTE: untracked avoids rerendering full list whenever internal items or props change\n untracked(() => {\n let i = 0, newItems = items.value, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !(cur[_change])) {\n for (let s of cur[_signals] || []) { s[Symbol.dispose]() }\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) {\n cur.length = newl\n }\n // update, append, init\n else {\n // init\n if (!cur) {\n cur = newItems\n }\n // update\n else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i]\n }\n }\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, scope);\n\n // signal/holder disposal removes element\n ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n }\n\n let planned = 0\n return () => {\n // subscribe to items change (.length) - we do it every time (not just on init) since preact unsubscribes unused signals\n items.value[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n }\n}\n\n\n// redefine parser to exclude `[a in] b`\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n\n return [itemVar, idxVar, parse(itemsExpr)]\n}\n", "import { directive } from \"../core.js\";\n\n// ref must be last within primaries, since that must be skipped by :each, but before secondaries\ndirective.ref = (el, evaluate, state) => {\n return () => evaluate(state)?.call?.(null, el)\n}\n", "import sprae, { directive } from \"../core.js\";\nimport store, { _signals } from '../store.js';\n\ndirective.with = (el, evaluate, rootState) => {\n let state\n return () => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState))\n }\n};\n", "import { directive, frag } from \"../core.js\";\n\n// set text content\ndirective.text = (el, evaluate, state) => {\n // <template :text=\"a\"/> or previously initialized template\n if (el.content) el.replaceWith(el = frag(el).childNodes[0])\n\n return () => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n };\n};\n", "import { directive } from \"../core.js\";\n\ndirective.class = (el, evaluate, state) => {\n let cur = new Set\n return () => {\n let v = evaluate(state);\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n };\n};\n", "import { directive } from \"../core.js\";\n\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n\n return () => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n };\n};\n", "import { directive, err } from \"../core.js\";\n\n// set generic property directive\ndirective.default = (target, evaluate, state, name) => {\n // simple prop\n if (!name.startsWith('on')) return () => {\n let value = evaluate(state);\n if (name) attr(target, name, value)\n else for (let key in value) attr(target, dashcase(key), value[key]);\n };\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n const ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // single event\n if (ctxs.length == 1) return () => addListener(evaluate(state), ctxs[0])\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n const nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return () => (\n startFn = evaluate(state),\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n )\n\n // add listener with the context\n function addListener(fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn)\n\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n};\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n 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// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { directive, parse } from \"../core.js\";\nimport { attr } from './default.js';\n\n// connect expr to element value\ndirective.value = (el, [getValue, setValue], state) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // bind ui back to value\n const handleChange = el.type === 'checkbox' ? () => setValue(state, el.checked) : el.type === 'select-multiple' ? () => setValue(state, [...el.selectedOptions].map(o => o.value)) : (e) => setValue(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\n return () => {\n update(getValue(state));\n }\n};\n\ndirective.value.parse = expr => {\n let evaluate = [parse(expr)]\n // catch wrong assigns like `123 =...`, `foo?.bar =...`\n try {\n const set = parse(`${expr}=__`);\n // FIXME: if there's a simpler way to set value in justin?\n evaluate.push((state, value) => {\n state.__ = value\n set(state, value)\n delete state.__\n })\n }\n catch (e) { }\n return evaluate\n}\n", "import { directive } from \"../core.js\";\n\ndirective.fx = (el, evaluate, state) => {\n return () => evaluate(state);\n};\n", "import { directive } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndirective['aria'] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '');\n }\n return () => update(evaluate(state))\n}\n", "import { directive } from \"../core.js\";\n\ndirective['data'] = (el, evaluate, state) => {\n return () => {\n let value = evaluate(state)\n for (let key in value) el.dataset[key] = value[key];\n }\n}\n", "import 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, batched;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = new Set;\n try { fn(); }\n finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n },\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n\n// signals adapter - allows switching signals implementation and not depend on core\n\nexport function use(s) {\n signal = s.signal\n effect = s.effect\n computed = s.computed\n batch = s.batch || (fn => fn())\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, batch, untracked } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('length');\n\n// object store is not lazy\nexport default function store(values, parent) {\n if (!values) return values\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // redirect for optimized array store\n if (Array.isArray(values)) return list(values)\n\n // ignore non-objects or custom objects\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? (++_len.value), 1), // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n // subscribe to length when object is spread\n _len.value\n return Reflect.ownKeys(signals);\n },\n })\n\n // init signals for values\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key)\n\n // getter turns into computed\n if (desc?.get) {\n // stash setter\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n }\n else {\n // init blank signal - make sure we don't take prototype one\n signals[key] = undefined\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 }\n\n// array store - signals are lazy since arrays can be very large & expensive\nexport function list(values) {\n // track last accessed property to find out if .length was directly accessed from expression or via .push/etc method\n let lastProp\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // .length signal is stored separately, since it cannot be replaced on array\n let _len = signal(values.length),\n // gotta fill with null since proto methods like .reduce may fail\n signals = Array(values.length).fill();\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get(_, key) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof key === 'symbol') return key === _change ? _len : key === _signals ? signals : signals[key]\n\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut[lastProp] ? _len.peek() : _len.value;\n\n lastProp = key;\n\n if (signals[key]) return signals[key].valueOf()\n\n // I hope reading values here won't diverge from signals\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value\n },\n\n set(_, key, v) {\n // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v, l = signals.length; i < l; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n return true\n }\n\n set(signals, key, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1),\n\n })\n\n return state\n}\n\n// set/update signal value\nfunction set(signals, key, v) {\n let s = signals[key]\n\n // untracked\n if (key[0] === '_') signals[key] = v\n // new property\n else if (!s) {\n // preserve signal value as is\n signals[key] = s = v?.peek ? v : signal(store(v))\n }\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === s.peek());\n // stashed _set for value with getter/setter\n else if (s._set) s._set(v)\n // patch array\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek()\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i]\n cur.length = l // forces deleting tail signals\n })\n })\n else {\n s.value = v\n }\n }\n // .x = y\n else {\n s.value = store(v)\n }\n}\n\n// delete signal\nfunction del(signals, key) {\n const s = signals[key], del = s[Symbol.dispose]\n if (del) delete s[Symbol.dispose]\n delete signals[key]\n del?.()\n}\n", "import { use, effect } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\nexport const _state = Symbol(\"state\")\nexport const _on = Symbol('on')\nexport const _off = Symbol('off')\n\n// reserved directives - order matters!\nexport const directive = {};\n\n\n// sprae element: apply directives\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by :each with new objects with old keys needs an update\n if (_state in el) {\n // we rewrite signals instead of update, because user should have what he provided\n return Object.assign(el[_state], values)\n }\n\n // take over existing state instead of creating clone\n const state = store(values || {}), offs = [], fx = []\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 function init(el) {\n // ignore text nodes, comments etc\n if (!el.childNodes) return\n\n // init generic-name attributes second\n for (let i = 0; i < el.attributes?.length;) {\n let attr = el.attributes[i];\n\n if (attr.name[0] === ':') {\n el.removeAttribute(attr.name);\n\n // multiple attributes like :id:for=\"\"\n for (let name of attr.name.slice(1).split(':')) {\n let dir = directive[name] || directive.default,\n update = dir(el, (dir.parse || parse)(attr.value), state, name)\n fx.push(update)\n offs.push(effect(update))\n\n // stop after :each, :if, :with?\n if (_state in el) return\n }\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child);\n };\n}\n\n\n// parse expression into evaluator fn\nconst memo = {};\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 // runtime errors\n return memo[expr] = fn\n}\n\n// wrapped call\nexport const err = (e, dir, expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\nexport let compile\n\n// configure signals/compile\n// it's more compact than using sprae.signal = signal etc.\nsprae.use = s => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n}\n\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true),\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n // 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, { directive, _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\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling,\n holder = document.createTextNode(''),\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n 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 () => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements when element is not matched\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n curEl[_state] === null && delete curEl[_state] // remove fake memo to sprae as new\n // enable effects if branch is matched\n curEl[_state] ? curEl[_on]() : sprae(curEl, state)\n }\n }\n };\n};\n", "import sprae, { _state, directive, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { untracked, computed } from '../signal.js';\n\n\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n // we need :if to be able to replace holder instead of tpl for :if :each case\n const holder = (document.createTextNode(\"\"));\n tpl.replaceWith(holder);\n 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, prevl = 0\n\n // separate computed effect reduces number of needed updates for the effect\n const items = computed(() => {\n keys = null\n let items = evaluate(state)\n if (typeof items === \"number\") items = Array.from({ length: items }, (_, i) => i + 1)\n if (items?.constructor === Object) keys = Object.keys(items), items = Object.values(items)\n return items || []\n })\n\n const update = () => {\n // NOTE: untracked avoids rerendering full list whenever internal items or props change\n untracked(() => {\n let i = 0, newItems = items.value, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !(cur[_change])) {\n for (let s of cur[_signals] || []) { s[Symbol.dispose]() }\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) {\n cur.length = newl\n }\n // update, append, init\n else {\n // init\n if (!cur) {\n cur = newItems\n }\n // update\n else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i]\n }\n }\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, scope);\n\n // signal/holder disposal removes element\n ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n }\n\n let planned = 0\n return () => {\n // subscribe to items change (.length) - we do it every time (not just on init) since preact unsubscribes unused signals\n items.value[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n }\n}\n\n\n// redefine parser to exclude `[a in] b`\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n\n return [itemVar, idxVar, parse(itemsExpr)]\n}\n", "import { directive } from \"../core.js\";\n\n// ref must be last within primaries, since that must be skipped by :each, but before secondaries\ndirective.ref = (el, evaluate, state) => {\n return () => evaluate(state)?.call?.(null, el)\n // return () => {\n // state[expr] = el\n // evaluate(state) ?.call?.(null, el)\n // }\n}\n\n// directive.ref.parse = expr => expr\n", "import sprae, { directive } from \"../core.js\";\nimport store, { _signals } from '../store.js';\n\ndirective.with = (el, evaluate, rootState) => {\n let state\n return () => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState))\n }\n};\n", "import { directive, frag } from \"../core.js\";\n\n// set text content\ndirective.text = (el, evaluate, state) => {\n // <template :text=\"a\"/> or previously initialized template\n if (el.content) el.replaceWith(el = frag(el).childNodes[0])\n\n return () => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n };\n};\n", "import { directive } from \"../core.js\";\n\ndirective.class = (el, evaluate, state) => {\n let cur = new Set\n return () => {\n let v = evaluate(state);\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n };\n};\n", "import { directive } from \"../core.js\";\n\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n\n return () => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n };\n};\n", "import { directive, err } from \"../core.js\";\n\n// set generic property directive\ndirective.default = (target, evaluate, state, name) => {\n // simple prop\n if (!name.startsWith('on')) return () => {\n let value = evaluate(state);\n if (name) attr(target, name, value)\n else for (let key in value) attr(target, dashcase(key), value[key]);\n };\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n const ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // single event\n if (ctxs.length == 1) return () => addListener(evaluate(state), ctxs[0])\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n const nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return () => (\n startFn = evaluate(state),\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n )\n\n // add listener with the context\n function addListener(fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn)\n\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.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};\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// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { directive, parse } from \"../core.js\";\nimport { attr } from './default.js';\n\n// connect expr to element value\ndirective.value = (el, [getValue, setValue], state) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // bind ui back to value\n const handleChange = el.type === 'checkbox' ? () => setValue(state, el.checked) : el.type === 'select-multiple' ? () => setValue(state, [...el.selectedOptions].map(o => o.value)) : (e) => setValue(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\n return () => {\n update(getValue(state));\n }\n};\n\ndirective.value.parse = expr => {\n let evaluate = [parse(expr)]\n // catch wrong assigns like `123 =...`, `foo?.bar =...`\n try {\n const set = parse(`${expr}=__`);\n // FIXME: if there's a simpler way to set value in justin?\n evaluate.push((state, value) => {\n state.__ = value\n set(state, value)\n delete state.__\n })\n }\n catch (e) { }\n return evaluate\n}\n", "import { directive } from \"../core.js\";\n\ndirective.fx = (el, evaluate, state) => {\n return () => evaluate(state);\n};\n", "import { directive } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndirective['aria'] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '');\n }\n return () => update(evaluate(state))\n}\n", "import { directive } from \"../core.js\";\n\ndirective['data'] = (el, evaluate, state) => {\n return () => {\n let value = evaluate(state)\n for (let key in value) el.dataset[key] = value[key];\n }\n}\n", "import 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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",
6
6
  "names": ["del", "el", "attr", "keys", "items", "v", "target", "set", "sprae"]
7
7
  }