sprae 11.5.2 → 11.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.js +13 -7
- package/directive/ref.js +8 -7
- package/directive/value.js +6 -5
- package/directive/with.js +7 -1
- package/dist/sprae.auto.js +47 -17
- package/dist/sprae.auto.js.map +3 -3
- package/dist/sprae.auto.min.js +2 -2
- package/dist/sprae.auto.min.js.map +3 -3
- package/dist/sprae.js +41 -16
- package/dist/sprae.js.map +3 -3
- package/dist/sprae.min.js +3 -3
- package/dist/sprae.min.js.map +3 -3
- package/dist/sprae.umd.js +47 -17
- package/dist/sprae.umd.js.map +3 -3
- package/dist/sprae.umd.min.js +2 -2
- package/dist/sprae.umd.min.js.map +3 -3
- package/package.json +1 -1
- package/sprae.js +3 -0
- package/store.js +10 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sprae.auto.js"],
|
|
4
|
-
"sourcesContent": ["(function (g, f) {if (\"object\" == typeof exports && \"object\" == typeof module) {module.exports = f();} else if (\"function\" == typeof define && define.amd) {define(\"sprae\", [], f);} else if (\"object\" == typeof exports) {exports[\"sprae\"] = f();} else {g[\"sprae\"] = f();}}(typeof self !== 'undefined' ? self : typeof globalThis !== 'undefined' ? globalThis : this, () => {var exports = {};var module = { exports };\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// signal.js\nvar current, signal, effect, computed, batch, untracked, use;\nvar init_signal = __esm({\n \"signal.js\"() {\n signal = (v, s, obs = /* @__PURE__ */ new Set()) => (s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v;\n },\n set value(val) {\n if (val === v) return;\n v = val;\n for (let sub of obs) sub();\n },\n peek() {\n return v;\n }\n }, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);\n effect = (fn, teardown, fx, deps) => (fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try {\n teardown = fn();\n } finally {\n current = prev;\n }\n }, deps = fx.deps = [], fx(), (dep) => {\n teardown?.call?.();\n while (dep = deps.pop()) dep.delete(fx);\n });\n computed = (fn, s = signal(), c, e) => (c = {\n get value() {\n e || (e = effect(() => s.value = fn()));\n return s.value;\n },\n peek: s.peek\n }, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);\n batch = (fn) => fn();\n untracked = batch;\n use = (s) => (signal = s.signal, effect = s.effect, computed = s.computed, batch = s.batch || batch, untracked = s.untracked || untracked);\n }\n});\n\n// store.js\nvar _signals, _change, _stash, store, list, mut, set, setter, ensure, store_default;\nvar init_store = __esm({\n \"store.js\"() {\n init_signal();\n init_core();\n _signals = Symbol(\"signals\");\n _change = Symbol(\"change\");\n _stash = \"__\";\n store = (values, parent) => {\n if (!values) return values;\n if (values[_signals] || values[Symbol.toStringTag]) return values;\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.keys(values).length), stash, state = new Proxy(signals, {\n get: (_, k) => k === _change ? _len : k === _signals ? signals : k === _stash ? stash : signals[k]?.valueOf(),\n set: (_, k, v, s) => (k === _stash ? stash = v : s = k in signals, set(signals, k, v), s || ++_len.value),\n // bump length for new signal\n deleteProperty: (_, k) => (signals[k] && (signals[k][Symbol.dispose]?.(), delete signals[k], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals))\n }), descs = Object.getOwnPropertyDescriptors(values);\n for (let k in values) {\n if (descs[k]?.get)\n (signals[k] = computed(descs[k].get.bind(state)))._set = descs[k].set?.bind(state);\n else\n signals[k] = null, set(signals, k, values[k]);\n }\n return state;\n };\n list = (values) => {\n let lastProp, _len = signal(values.length), signals = Array(values.length).fill(), state = new Proxy(signals, {\n get(_, k) {\n if (typeof k === \"symbol\") return k === _change ? _len : k === _signals ? signals : signals[k];\n if (k === \"length\") return mut.includes(lastProp) ? _len.peek() : _len.value;\n lastProp = k;\n return (signals[k] ?? (signals[k] = signal(store(values[k])))).valueOf();\n },\n set(_, k, v) {\n if (k === \"length\") {\n for (let i = v; i < signals.length; i++) delete state[i];\n _len.value = signals.length = v;\n } else {\n set(signals, k, v);\n if (k >= _len.peek()) _len.value = signals.length = +k + 1;\n }\n return 1;\n },\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1)\n });\n return state;\n };\n mut = [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"];\n set = (signals, k, v) => {\n let s = signals[k], cur;\n if (k[0] === \"_\") signals[k] = v;\n else if (!s) signals[k] = s = v?.peek ? v : signal(store(v));\n else if (v === (cur = s.peek())) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(cur)) {\n if (cur[_change]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i];\n cur.length = v.length;\n });\n else s.value = v;\n } else s.value = store(v);\n };\n setter = (expr, set2 = parse(`${expr}=${_stash}`)) => (state, value) => (state[_stash] = value, // save value to stash\n set2(state));\n ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => {\n var _a, _b;\n return name && ((_a = state[_signals])[_b = name[0]] ?? (_a[_b] = null));\n };\n store_default = store;\n }\n});\n\n// core.js\nvar _dispose, _state, _on, _off, directive, dir, sprae, parse, memo, err, compile, prefix, frag, core_default;\nvar init_core = __esm({\n \"core.js\"() {\n init_signal();\n init_store();\n _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\n _state = Symbol(\"state\");\n _on = Symbol(\"on\");\n _off = Symbol(\"off\");\n directive = {};\n dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (evaluate = p(expr), update = create(el, state, expr, name2, evaluate), () => update(evaluate(state)));\n sprae = (el = document.body, values) => {\n if (el[_state]) return Object.assign(el[_state], values);\n let state = store(values || {}), offs = [], fx = [], init = (el2, attrs = el2.attributes) => {\n if (attrs) for (let i = 0; i < attrs.length; ) {\n let { name, value } = attrs[i], update, dir2;\n if (name.startsWith(prefix)) {\n el2.removeAttribute(name);\n for (dir2 of name.slice(prefix.length).split(\":\")) {\n update = (directive[dir2] || directive.default)(el2, value, state, dir2);\n fx.push(update), offs.push(effect(update));\n if (el2[_state] === null) return;\n }\n } else i++;\n }\n for (let child of el2.childNodes) child.nodeType == 1 && init(child);\n };\n init(el);\n if (!(_state in el)) {\n el[_state] = state;\n el[_off] = () => (offs.map((off) => off()), offs = []);\n el[_on] = () => offs = fx.map((f) => effect(f));\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null);\n }\n return state;\n };\n sprae.use = (s) => (s.signal && use(s), s.compile && (compile = s.compile), s.prefix && (prefix = s.prefix));\n parse = (expr, dir2, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir2, expr);\n }\n return memo[expr] = fn;\n };\n memo = {};\n err = (e, dir2 = \"\", expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir2}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n };\n prefix = \":\";\n frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n // get parentNode() { return childNodes[0].parentNode },\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return;\n ref.before(el);\n content.append(...childNodes);\n },\n attributes,\n removeAttribute(name) {\n attributes.splice(attributes.findIndex((a) => a.name === name), 1);\n }\n // setAttributeNode() { }\n };\n };\n core_default = sprae;\n }\n});\n\n// directive/if.js\nvar _prevIf;\nvar init_if = __esm({\n \"directive/if.js\"() {\n init_core();\n _prevIf = Symbol(\"if\");\n dir(\"if\", (el, state) => {\n let holder = document.createTextNode(\"\");\n let next = el.nextElementSibling, curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n ifEl[_state] = null;\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null;\n }\n return (value, newEl = value ? ifEl : el[_prevIf] ? null : elseEl) => {\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n curEl[_state] === null ? (delete curEl[_state], core_default(curEl, state)) : curEl[_on]();\n }\n }\n };\n });\n }\n});\n\n// directive/each.js\nvar init_each = __esm({\n \"directive/each.js\"() {\n init_core();\n init_store();\n init_signal();\n dir(\n \"each\",\n (tpl, state, expr) => {\n let [itemVar, idxVar = \"$\"] = expr.split(/\\bin\\b/)[0].trim().split(/\\s*,\\s*/);\n let holder = document.createTextNode(\"\");\n let cur, keys2, items, prevl = 0;\n let update = () => {\n var _a, _b;\n let i = 0, newItems = items, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]();\n cur = null, prevl = 0;\n }\n if (newl < prevl) cur.length = newl;\n else {\n if (!cur) cur = newItems;\n else while (i < prevl) cur[i] = newItems[i++];\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store_default({\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 core_default(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 tpl.replaceWith(holder);\n tpl[_state] = null;\n return (value) => {\n keys2 = null;\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1);\n else if (value?.constructor === Object) keys2 = Object.keys(value), items = Object.values(value);\n else items = value || [];\n let planned = 0;\n return effect(() => {\n items[_change]?.value;\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n });\n };\n },\n // redefine evaluator to take second part of expression\n (expr) => parse(expr.split(/\\bin\\b/)[1])\n );\n }\n});\n\n// directive/ref.js\nvar init_ref = __esm({\n \"directive/ref.js\"() {\n init_core();\n init_store();\n dir(\"ref\", (el, state, expr, _, ev) => (ensure(state, expr), ev(state) == null ? (setter(expr)(state, el), (_2) => _2) : (v) => v.call(null, el)));\n }\n});\n\n// directive/with.js\nvar init_with = __esm({\n \"directive/with.js\"() {\n init_core();\n init_store();\n dir(\"with\", (el, rootState, state) => (state = null, (values) => core_default(el, state ? values : state = store_default(values, rootState))));\n }\n});\n\n// directive/text.js\nvar init_text = __esm({\n \"directive/text.js\"() {\n init_core();\n dir(\"text\", (el) => (\n // <template :text=\"a\"/> or previously initialized template\n (el.content && el.replaceWith(el = frag(el).childNodes[0]), (value) => el.textContent = value == null ? \"\" : value)\n ));\n }\n});\n\n// directive/class.js\nvar init_class = __esm({\n \"directive/class.js\"() {\n init_core();\n dir(\n \"class\",\n (el, cur) => (cur = /* @__PURE__ */ new Set(), (v) => {\n let clsx = /* @__PURE__ */ new Set();\n if (v) {\n if (typeof v === \"string\") v.split(\" \").map((cls) => clsx.add(cls));\n else if (Array.isArray(v)) v.map((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n })\n );\n directive.className = directive.class;\n }\n});\n\n// directive/style.js\nvar init_style = __esm({\n \"directive/style.js\"() {\n init_core();\n dir(\n \"style\",\n (el, initStyle) => (initStyle = el.getAttribute(\"style\"), (v) => {\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(\";\") ? \"\" : \"; \") + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == \"-\" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];\n }\n })\n );\n }\n});\n\n// directive/default.js\nvar mods, keys, throttle, debounce, attr, dashcase;\nvar init_default = __esm({\n \"directive/default.js\"() {\n init_core();\n dir(\"default\", (target, state, expr, name) => {\n if (!name.startsWith(\"on\"))\n return name ? (value) => attr(target, name, value) : (value) => {\n for (let key in value) attr(target, dashcase(key), value[key]);\n };\n let ctxs = name.split(\"..\").map((e) => {\n let ctx = { evt: \"\", target, test: () => true };\n ctx.evt = (e.startsWith(\"on\") ? e.slice(2) : e).replace(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (_, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n let addListener = (fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }, cb) => {\n if (defer) fn = defer(fn);\n cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n };\n if (ctxs.length == 1) return (v) => addListener(v, ctxs[0]);\n let startFn, nextFn, off, idx = 0;\n let nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return (value) => (startFn = value, !off && nextListener(startFn), () => startFn = null);\n });\n mods = {\n // actions\n prevent(ctx) {\n ctx.prevent = true;\n },\n stop(ctx) {\n ctx.stop = true;\n },\n immediate(ctx) {\n ctx.immediate = true;\n },\n // options\n once(ctx) {\n ctx.once = true;\n },\n passive(ctx) {\n ctx.passive = true;\n },\n capture(ctx) {\n ctx.capture = true;\n },\n // target\n window(ctx) {\n ctx.target = window;\n },\n document(ctx) {\n ctx.target = document;\n },\n parent(ctx) {\n ctx.target = ctx.target.parentNode;\n },\n throttle(ctx, limit = 108) {\n ctx.defer = (fn) => throttle(fn, limit);\n },\n debounce(ctx, wait = 108) {\n ctx.defer = (fn) => debounce(fn, wait);\n },\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char\n };\n keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\\xA0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key)\n };\n throttle = (fn, limit) => {\n let pause, planned, block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n if (planned) return planned = false, block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return planned = true;\n block(e);\n return fn(e);\n };\n };\n debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n };\n attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n };\n dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n };\n }\n});\n\n// directive/value.js\nvar init_value = __esm({\n \"directive/value.js\"() {\n init_core();\n init_core();\n init_store();\n init_default();\n dir(\"value\", (el, state, expr) => {\n const update = el.type === \"text\" || el.type === \"\" ? (value) => el.setAttribute(\"value\", el.value = value == null ? \"\" : value) : el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\" ? (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\n } : el.type === \"select-multiple\" ? (value) => {\n for (let o of el.options) o.removeAttribute(\"selected\");\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute(\"selected\", \"\");\n } : (value) => el.value = value;\n ensure(state, expr);\n try {\n const set2 = setter(expr);\n const handleChange = el.type === \"checkbox\" ? () => set2(state, el.checked) : el.type === \"select-multiple\" ? () => set2(state, [...el.selectedOptions].map((o) => o.value)) : () => set2(state, el.selectedIndex < 0 ? null : el.value);\n el.oninput = el.onchange = handleChange;\n if (el.type?.startsWith(\"select\")) {\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n core_default(el, state);\n }\n } catch {\n }\n return update;\n });\n }\n});\n\n// directive/fx.js\nvar init_fx = __esm({\n \"directive/fx.js\"() {\n init_core();\n dir(\"fx\", (_) => (_2) => _2);\n }\n});\n\n// directive/aria.js\nvar init_aria = __esm({\n \"directive/aria.js\"() {\n init_core();\n init_default();\n dir(\"aria\", (el) => (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n });\n }\n});\n\n// directive/data.js\nvar init_data = __esm({\n \"directive/data.js\"() {\n init_core();\n dir(\"data\", (el) => (value) => {\n for (let key in value) el.dataset[key] = value[key];\n });\n }\n});\n\n// sprae.js\nvar sprae_exports = {};\n__export(sprae_exports, {\n default: () => sprae_default\n});\nvar sprae_default;\nvar init_sprae = __esm({\n \"sprae.js\"() {\n init_core();\n init_if();\n init_each();\n init_ref();\n init_with();\n init_text();\n init_class();\n init_style();\n init_value();\n init_fx();\n init_default();\n init_aria();\n init_data();\n core_default.use({ compile: (expr) => core_default.constructor(`with (arguments[0]) { return ${expr} };`) });\n sprae_default = core_default;\n }\n});\n\n// <stdin>\nvar sprae2 = (init_sprae(), __toCommonJS(sprae_exports)).default;\nsprae2.use({ prefix: document.currentScript.getAttribute(\"prefix\") });\ndocument.readyState === \"loading\" ? document.addEventListener(\"DOMContentLoaded\", () => sprae2()) : sprae2();\nmodule.exports = (init_sprae(), __toCommonJS(sprae_exports)).default;\n;if (typeof module.exports == \"object\" && typeof exports == \"object\") {\n var __cp = (to, from, except, desc) => {\n if ((from && typeof from === \"object\") || typeof from === \"function\") {\n for (let key of Object.getOwnPropertyNames(from)) {\n if (!Object.prototype.hasOwnProperty.call(to, key) && key !== except)\n Object.defineProperty(to, key, {\n get: () => from[key],\n enumerable: !(desc = Object.getOwnPropertyDescriptor(from, key)) || desc.enumerable,\n });\n }\n }\n return to;\n };\n module.exports = __cp(module.exports, exports);\n}\nreturn module.exports;\n}))\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["g", "f", "exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__esm", "fn", "res", "__export", "target", "all", "name", "__copyProps", "to", "from", "except", "desc", "key", "__toCommonJS", "mod", "current", "signal", "effect", "computed", "batch", "untracked", "use", "init_signal", "v", "s", "obs", "val", "sub", "teardown", "fx", "deps", "prev", "dep", "c", "e", "_signals", "_change", "_stash", "store", "list", "mut", "set", "setter", "
|
|
4
|
+
"sourcesContent": ["(function (g, f) {if (\"object\" == typeof exports && \"object\" == typeof module) {module.exports = f();} else if (\"function\" == typeof define && define.amd) {define(\"sprae\", [], f);} else if (\"object\" == typeof exports) {exports[\"sprae\"] = f();} else {g[\"sprae\"] = f();}}(typeof self !== 'undefined' ? self : typeof globalThis !== 'undefined' ? globalThis : this, () => {var exports = {};var module = { exports };\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// signal.js\nvar current, signal, effect, computed, batch, untracked, use;\nvar init_signal = __esm({\n \"signal.js\"() {\n signal = (v, s, obs = /* @__PURE__ */ new Set()) => (s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v;\n },\n set value(val) {\n if (val === v) return;\n v = val;\n for (let sub of obs) sub();\n },\n peek() {\n return v;\n }\n }, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);\n effect = (fn, teardown, fx, deps) => (fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try {\n teardown = fn();\n } finally {\n current = prev;\n }\n }, deps = fx.deps = [], fx(), (dep) => {\n teardown?.call?.();\n while (dep = deps.pop()) dep.delete(fx);\n });\n computed = (fn, s = signal(), c, e) => (c = {\n get value() {\n e || (e = effect(() => s.value = fn()));\n return s.value;\n },\n peek: s.peek\n }, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);\n batch = (fn) => fn();\n untracked = batch;\n use = (s) => (signal = s.signal, effect = s.effect, computed = s.computed, batch = s.batch || batch, untracked = s.untracked || untracked);\n }\n});\n\n// store.js\nvar _signals, _change, _stash, store, list, mut, set, setter, store_default;\nvar init_store = __esm({\n \"store.js\"() {\n init_signal();\n init_core();\n _signals = Symbol(\"signals\");\n _change = Symbol(\"change\");\n _stash = \"__\";\n store = (values, parent) => {\n if (!values) return values;\n if (values[_signals] || values[Symbol.toStringTag]) return values;\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values;\n let signals = Object.create(parent?.[_signals] || {}), _len = signal(Object.keys(values).length), stash;\n let state = new Proxy(signals, {\n get: (_, k) => k === _change ? _len : k === _signals ? signals : k === _stash ? stash : k in signals ? signals[k]?.valueOf() : globalThis[k],\n set: (_, k, v, s) => k === _stash ? (stash = v, 1) : (s = k in signals, set(signals, k, v), s || ++_len.value),\n // bump length for new signal\n deleteProperty: (_, k) => (signals[k] && (signals[k][Symbol.dispose]?.(), delete signals[k], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals)),\n has: (_) => true\n // sandbox prevents writing to global\n }), descs = Object.getOwnPropertyDescriptors(values);\n for (let k in values) {\n if (descs[k]?.get)\n (signals[k] = computed(descs[k].get.bind(state)))._set = descs[k].set?.bind(state);\n else\n signals[k] = null, set(signals, k, values[k]);\n }\n return state;\n };\n list = (values) => {\n let lastProp, _len = signal(values.length), signals = Array(values.length).fill(), state = new Proxy(signals, {\n get(_, k) {\n if (typeof k === \"symbol\") return k === _change ? _len : k === _signals ? signals : signals[k];\n if (k === \"length\") return mut.includes(lastProp) ? _len.peek() : _len.value;\n lastProp = k;\n return (signals[k] ?? (signals[k] = signal(store(values[k])))).valueOf();\n },\n set(_, k, v) {\n if (k === \"length\") {\n for (let i = v; i < signals.length; i++) delete state[i];\n _len.value = signals.length = v;\n } else {\n set(signals, k, v);\n if (k >= _len.peek()) _len.value = signals.length = +k + 1;\n }\n return 1;\n },\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1)\n });\n return state;\n };\n mut = [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"];\n set = (signals, k, v) => {\n let s = signals[k], cur;\n if (k[0] === \"_\") signals[k] = v;\n else if (!s) signals[k] = s = v?.peek ? v : signal(store(v));\n else if (v === (cur = s.peek())) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(cur)) {\n if (cur[_change]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i];\n cur.length = v.length;\n });\n else s.value = v;\n } else s.value = store(v);\n };\n setter = (expr, set2 = parse(`${expr}=${_stash}`)) => (state, value) => (state[_stash] = value, // save value to stash\n set2(state));\n store_default = store;\n }\n});\n\n// core.js\nvar _dispose, _state, _on, _off, directive, dir, sprae, parse, memo, err, compile, prefix, frag, core_default;\nvar init_core = __esm({\n \"core.js\"() {\n init_signal();\n init_store();\n _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\n _state = Symbol(\"state\");\n _on = Symbol(\"on\");\n _off = Symbol(\"off\");\n directive = {};\n dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (update = create(el, state, expr, name2), evaluate = p(expr), () => update(evaluate(state)));\n sprae = (el = document.body, values) => {\n if (el[_state]) return Object.assign(el[_state], values);\n let state = store(values || {}), offs = [], fx = [];\n let init = (el2, attrs = el2.attributes) => {\n if (attrs) for (let i = 0; i < attrs.length; ) {\n let { name, value } = attrs[i], update, dir2;\n if (name.startsWith(prefix)) {\n el2.removeAttribute(name);\n for (dir2 of name.slice(prefix.length).split(\":\")) {\n update = (directive[dir2] || directive.default)(el2, value, state, dir2);\n fx.push(update);\n offs.push(effect(update));\n if (el2[_state] === null) return;\n }\n } else i++;\n }\n for (let child of el2.childNodes) child.nodeType == 1 && init(child);\n };\n init(el);\n if (!(_state in el)) {\n el[_state] = state;\n el[_off] = () => (offs.map((off) => off()), offs = []);\n el[_on] = () => offs = fx.map((f) => effect(f));\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null);\n }\n return state;\n };\n sprae.use = (s) => (s.signal && use(s), s.compile && (compile = s.compile), s.prefix && (prefix = s.prefix));\n parse = (expr, dir2, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir2, expr);\n }\n return memo[expr] = (s) => {\n try {\n return fn(s);\n } catch (e) {\n err(e, dir2, expr);\n }\n };\n };\n memo = {};\n err = (e, dir2 = \"\", expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir2}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n };\n prefix = \":\";\n frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n // get parentNode() { return childNodes[0].parentNode },\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return;\n ref.before(el);\n content.append(...childNodes);\n },\n attributes,\n removeAttribute(name) {\n attributes.splice(attributes.findIndex((a) => a.name === name), 1);\n }\n // setAttributeNode() { }\n };\n };\n core_default = sprae;\n }\n});\n\n// directive/if.js\nvar _prevIf;\nvar init_if = __esm({\n \"directive/if.js\"() {\n init_core();\n _prevIf = Symbol(\"if\");\n dir(\"if\", (el, state) => {\n let holder = document.createTextNode(\"\");\n let next = el.nextElementSibling, curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n ifEl[_state] = null;\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null;\n }\n return (value, newEl = value ? ifEl : el[_prevIf] ? null : elseEl) => {\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n curEl[_state] === null ? (delete curEl[_state], core_default(curEl, state)) : curEl[_on]();\n }\n }\n };\n });\n }\n});\n\n// directive/each.js\nvar init_each = __esm({\n \"directive/each.js\"() {\n init_core();\n init_store();\n init_signal();\n dir(\n \"each\",\n (tpl, state, expr) => {\n let [itemVar, idxVar = \"$\"] = expr.split(/\\bin\\b/)[0].trim().split(/\\s*,\\s*/);\n let holder = document.createTextNode(\"\");\n let cur, keys2, items, prevl = 0;\n let update = () => {\n var _a, _b;\n let i = 0, newItems = items, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]();\n cur = null, prevl = 0;\n }\n if (newl < prevl) cur.length = newl;\n else {\n if (!cur) cur = newItems;\n else while (i < prevl) cur[i] = newItems[i++];\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store_default({\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 core_default(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 tpl.replaceWith(holder);\n tpl[_state] = null;\n return (value) => {\n keys2 = null;\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1);\n else if (value?.constructor === Object) keys2 = Object.keys(value), items = Object.values(value);\n else items = value || [];\n let planned = 0;\n return effect(() => {\n items[_change]?.value;\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n });\n };\n },\n // redefine evaluator to take second part of expression\n (expr) => parse(expr.split(/\\bin\\b/)[1])\n );\n }\n});\n\n// directive/ref.js\nvar init_ref = __esm({\n \"directive/ref.js\"() {\n init_core();\n init_signal();\n init_store();\n dir(\"ref\", (el, state, expr) => (\n // FIXME: ideally we don't use untracked here, but ev may have internal refs that will subscribe root effect\n untracked(() => typeof parse(expr)(state) == \"function\") ? (v) => v.call(null, el) : (setter(expr)(state, el), (_) => _)\n ));\n }\n});\n\n// directive/with.js\nvar init_with = __esm({\n \"directive/with.js\"() {\n init_core();\n init_signal();\n init_store();\n dir(\"with\", (el, rootState, state) => (state = null, (values) => (\n //untracked(() => (\n core_default(el, state ? values : state = store_default(values, rootState))\n )));\n }\n});\n\n// directive/text.js\nvar init_text = __esm({\n \"directive/text.js\"() {\n init_core();\n dir(\"text\", (el) => (\n // <template :text=\"a\"/> or previously initialized template\n (el.content && el.replaceWith(el = frag(el).childNodes[0]), (value) => el.textContent = value == null ? \"\" : value)\n ));\n }\n});\n\n// directive/class.js\nvar init_class = __esm({\n \"directive/class.js\"() {\n init_core();\n dir(\n \"class\",\n (el, cur) => (cur = /* @__PURE__ */ new Set(), (v) => {\n let clsx = /* @__PURE__ */ new Set();\n if (v) {\n if (typeof v === \"string\") v.split(\" \").map((cls) => clsx.add(cls));\n else if (Array.isArray(v)) v.map((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n })\n );\n directive.className = directive.class;\n }\n});\n\n// directive/style.js\nvar init_style = __esm({\n \"directive/style.js\"() {\n init_core();\n dir(\n \"style\",\n (el, initStyle) => (initStyle = el.getAttribute(\"style\"), (v) => {\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(\";\") ? \"\" : \"; \") + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == \"-\" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];\n }\n })\n );\n }\n});\n\n// directive/default.js\nvar mods, keys, throttle, debounce, attr, dashcase;\nvar init_default = __esm({\n \"directive/default.js\"() {\n init_core();\n dir(\"default\", (target, state, expr, name) => {\n if (!name.startsWith(\"on\"))\n return name ? (value) => attr(target, name, value) : (value) => {\n for (let key in value) attr(target, dashcase(key), value[key]);\n };\n let ctxs = name.split(\"..\").map((e) => {\n let ctx = { evt: \"\", target, test: () => true };\n ctx.evt = (e.startsWith(\"on\") ? e.slice(2) : e).replace(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (_, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n let addListener = (fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }, cb) => {\n if (defer) fn = defer(fn);\n cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n };\n if (ctxs.length == 1) return (v) => addListener(v, ctxs[0]);\n let startFn, nextFn, off, idx = 0;\n let nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return (value) => (startFn = value, !off && nextListener(startFn), () => startFn = null);\n });\n mods = {\n // actions\n prevent(ctx) {\n ctx.prevent = true;\n },\n stop(ctx) {\n ctx.stop = true;\n },\n immediate(ctx) {\n ctx.immediate = true;\n },\n // options\n once(ctx) {\n ctx.once = true;\n },\n passive(ctx) {\n ctx.passive = true;\n },\n capture(ctx) {\n ctx.capture = true;\n },\n // target\n window(ctx) {\n ctx.target = window;\n },\n document(ctx) {\n ctx.target = document;\n },\n parent(ctx) {\n ctx.target = ctx.target.parentNode;\n },\n throttle(ctx, limit = 108) {\n ctx.defer = (fn) => throttle(fn, limit);\n },\n debounce(ctx, wait = 108) {\n ctx.defer = (fn) => debounce(fn, wait);\n },\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char\n };\n keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\\xA0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key)\n };\n throttle = (fn, limit) => {\n let pause, planned, block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n if (planned) return planned = false, block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return planned = true;\n block(e);\n return fn(e);\n };\n };\n debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n };\n attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n };\n dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n };\n }\n});\n\n// directive/value.js\nvar init_value = __esm({\n \"directive/value.js\"() {\n init_core();\n init_core();\n init_signal();\n init_store();\n init_default();\n dir(\"value\", (el, state, expr) => {\n const update = el.type === \"text\" || el.type === \"\" ? (value) => el.setAttribute(\"value\", el.value = value == null ? \"\" : value) : el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\" ? (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\n } : el.type === \"select-multiple\" ? (value) => {\n for (let o of el.options) o.removeAttribute(\"selected\");\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute(\"selected\", \"\");\n } : (value) => el.value = value;\n try {\n const set2 = setter(expr);\n const handleChange = el.type === \"checkbox\" ? () => set2(state, el.checked) : el.type === \"select-multiple\" ? () => set2(state, [...el.selectedOptions].map((o) => o.value)) : () => set2(state, el.selectedIndex < 0 ? null : el.value);\n el.oninput = el.onchange = handleChange;\n if (el.type?.startsWith(\"select\")) {\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n core_default(el, state);\n }\n untracked(() => parse(expr)(state)) ?? handleChange();\n } catch {\n }\n return update;\n });\n }\n});\n\n// directive/fx.js\nvar init_fx = __esm({\n \"directive/fx.js\"() {\n init_core();\n dir(\"fx\", (_) => (_2) => _2);\n }\n});\n\n// directive/aria.js\nvar init_aria = __esm({\n \"directive/aria.js\"() {\n init_core();\n init_default();\n dir(\"aria\", (el) => (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n });\n }\n});\n\n// directive/data.js\nvar init_data = __esm({\n \"directive/data.js\"() {\n init_core();\n dir(\"data\", (el) => (value) => {\n for (let key in value) el.dataset[key] = value[key];\n });\n }\n});\n\n// sprae.js\nvar sprae_exports = {};\n__export(sprae_exports, {\n _change: () => _change,\n _signals: () => _signals,\n _stash: () => _stash,\n batch: () => batch,\n computed: () => computed,\n default: () => sprae_default,\n effect: () => effect,\n list: () => list,\n setter: () => setter,\n signal: () => signal,\n store: () => store,\n untracked: () => untracked,\n use: () => use\n});\nvar sprae_default;\nvar init_sprae = __esm({\n \"sprae.js\"() {\n init_core();\n init_if();\n init_each();\n init_ref();\n init_with();\n init_text();\n init_class();\n init_style();\n init_value();\n init_fx();\n init_default();\n init_aria();\n init_data();\n init_store();\n init_signal();\n core_default.use({ compile: (expr) => core_default.constructor(`with (arguments[0]) { return ${expr} };`) });\n sprae_default = core_default;\n }\n});\n\n// <stdin>\nvar sprae2 = (init_sprae(), __toCommonJS(sprae_exports)).default;\nsprae2.use({ prefix: document.currentScript.getAttribute(\"prefix\") });\ndocument.readyState === \"loading\" ? document.addEventListener(\"DOMContentLoaded\", () => sprae2()) : sprae2();\nmodule.exports = (init_sprae(), __toCommonJS(sprae_exports)).default;\n;if (typeof module.exports == \"object\" && typeof exports == \"object\") {\n var __cp = (to, from, except, desc) => {\n if ((from && typeof from === \"object\") || typeof from === \"function\") {\n for (let key of Object.getOwnPropertyNames(from)) {\n if (!Object.prototype.hasOwnProperty.call(to, key) && key !== except)\n Object.defineProperty(to, key, {\n get: () => from[key],\n enumerable: !(desc = Object.getOwnPropertyDescriptor(from, key)) || desc.enumerable,\n });\n }\n }\n return to;\n };\n module.exports = __cp(module.exports, exports);\n}\nreturn module.exports;\n}))\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["g", "f", "exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__esm", "fn", "res", "__export", "target", "all", "name", "__copyProps", "to", "from", "except", "desc", "key", "__toCommonJS", "mod", "current", "signal", "effect", "computed", "batch", "untracked", "use", "init_signal", "v", "s", "obs", "val", "sub", "teardown", "fx", "deps", "prev", "dep", "c", "e", "_signals", "_change", "_stash", "store", "list", "mut", "set", "setter", "store_default", "init_store", "init_core", "values", "parent", "signals", "_len", "stash", "state", "_", "k", "descs", "lastProp", "i", "cur", "expr", "set2", "parse", "value", "_dispose", "_state", "_on", "_off", "directive", "dir", "sprae", "memo", "err", "compile", "prefix", "frag", "core_default", "create", "p", "el", "name2", "update", "evaluate", "offs", "init", "el2", "attrs", "dir2", "child", "off", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "init_if", "holder", "next", "curEl", "ifEl", "elseEl", "newEl", "init_each", "itemVar", "idxVar", "keys2", "items", "prevl", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "init_ref", "init_with", "rootState", "init_text", "init_class", "clsx", "cls", "v2", "init_style", "initStyle", "mods", "keys", "throttle", "debounce", "attr", "dashcase", "init_default", "ctxs", "ctx", "param", "addListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "startFn", "nextFn", "nextListener", "limit", "wait", "pause", "block", "timeout", "str", "match", "init_value", "handleChange", "o", "init_fx", "_2", "init_aria", "init_data", "sprae_exports", "sprae_default", "init_sprae", "sprae2", "__cp"]
|
|
7
7
|
}
|
package/dist/sprae.js
CHANGED
|
@@ -45,13 +45,16 @@ var store = (values, parent) => {
|
|
|
45
45
|
if (!values) return values;
|
|
46
46
|
if (values[_signals] || values[Symbol.toStringTag]) return values;
|
|
47
47
|
if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values;
|
|
48
|
-
let signals =
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
let signals = Object.create(parent?.[_signals] || {}), _len = signal(Object.keys(values).length), stash;
|
|
49
|
+
let state = new Proxy(signals, {
|
|
50
|
+
get: (_, k) => k === _change ? _len : k === _signals ? signals : k === _stash ? stash : k in signals ? signals[k]?.valueOf() : globalThis[k],
|
|
51
|
+
set: (_, k, v, s) => k === _stash ? (stash = v, 1) : (s = k in signals, set(signals, k, v), s || ++_len.value),
|
|
51
52
|
// bump length for new signal
|
|
52
53
|
deleteProperty: (_, k) => (signals[k] && (signals[k][Symbol.dispose]?.(), delete signals[k], _len.value--), 1),
|
|
53
54
|
// subscribe to length when object is spread
|
|
54
|
-
ownKeys: () => (_len.value, Reflect.ownKeys(signals))
|
|
55
|
+
ownKeys: () => (_len.value, Reflect.ownKeys(signals)),
|
|
56
|
+
has: (_) => true
|
|
57
|
+
// sandbox prevents writing to global
|
|
55
58
|
}), descs = Object.getOwnPropertyDescriptors(values);
|
|
56
59
|
for (let k in values) {
|
|
57
60
|
if (descs[k]?.get)
|
|
@@ -100,10 +103,6 @@ var set = (signals, k, v) => {
|
|
|
100
103
|
};
|
|
101
104
|
var setter = (expr, set2 = parse(`${expr}=${_stash}`)) => (state, value) => (state[_stash] = value, // save value to stash
|
|
102
105
|
set2(state));
|
|
103
|
-
var ensure = (state, expr, name = expr.match(/^\w+(?=\s*(?:\.|\[|$))/)) => {
|
|
104
|
-
var _a, _b;
|
|
105
|
-
return name && ((_a = state[_signals])[_b = name[0]] ?? (_a[_b] = null));
|
|
106
|
-
};
|
|
107
106
|
var store_default = store;
|
|
108
107
|
|
|
109
108
|
// core.js
|
|
@@ -112,17 +111,19 @@ var _state = Symbol("state");
|
|
|
112
111
|
var _on = Symbol("on");
|
|
113
112
|
var _off = Symbol("off");
|
|
114
113
|
var directive = {};
|
|
115
|
-
var dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (
|
|
114
|
+
var dir = (name, create, p = parse) => directive[name] = (el, expr, state, name2, update, evaluate) => (update = create(el, state, expr, name2), evaluate = p(expr), () => update(evaluate(state)));
|
|
116
115
|
var sprae = (el = document.body, values) => {
|
|
117
116
|
if (el[_state]) return Object.assign(el[_state], values);
|
|
118
|
-
let state = store(values || {}), offs = [], fx = []
|
|
117
|
+
let state = store(values || {}), offs = [], fx = [];
|
|
118
|
+
let init = (el2, attrs = el2.attributes) => {
|
|
119
119
|
if (attrs) for (let i = 0; i < attrs.length; ) {
|
|
120
120
|
let { name, value } = attrs[i], update, dir2;
|
|
121
121
|
if (name.startsWith(prefix)) {
|
|
122
122
|
el2.removeAttribute(name);
|
|
123
123
|
for (dir2 of name.slice(prefix.length).split(":")) {
|
|
124
124
|
update = (directive[dir2] || directive.default)(el2, value, state, dir2);
|
|
125
|
-
fx.push(update)
|
|
125
|
+
fx.push(update);
|
|
126
|
+
offs.push(effect(update));
|
|
126
127
|
if (el2[_state] === null) return;
|
|
127
128
|
}
|
|
128
129
|
} else i++;
|
|
@@ -146,7 +147,13 @@ var parse = (expr, dir2, fn) => {
|
|
|
146
147
|
} catch (e) {
|
|
147
148
|
err(e, dir2, expr);
|
|
148
149
|
}
|
|
149
|
-
return memo[expr] =
|
|
150
|
+
return memo[expr] = (s) => {
|
|
151
|
+
try {
|
|
152
|
+
return fn(s);
|
|
153
|
+
} catch (e) {
|
|
154
|
+
err(e, dir2, expr);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
150
157
|
};
|
|
151
158
|
var memo = {};
|
|
152
159
|
var err = (e, dir2 = "", expr = "") => {
|
|
@@ -256,10 +263,16 @@ dir(
|
|
|
256
263
|
);
|
|
257
264
|
|
|
258
265
|
// directive/ref.js
|
|
259
|
-
dir("ref", (el, state, expr
|
|
266
|
+
dir("ref", (el, state, expr) => (
|
|
267
|
+
// FIXME: ideally we don't use untracked here, but ev may have internal refs that will subscribe root effect
|
|
268
|
+
untracked(() => typeof parse(expr)(state) == "function") ? (v) => v.call(null, el) : (setter(expr)(state, el), (_) => _)
|
|
269
|
+
));
|
|
260
270
|
|
|
261
271
|
// directive/with.js
|
|
262
|
-
dir("with", (el, rootState, state) => (state = null, (values) =>
|
|
272
|
+
dir("with", (el, rootState, state) => (state = null, (values) => (
|
|
273
|
+
//untracked(() => (
|
|
274
|
+
core_default(el, state ? values : state = store_default(values, rootState))
|
|
275
|
+
)));
|
|
263
276
|
|
|
264
277
|
// directive/text.js
|
|
265
278
|
dir("text", (el) => (
|
|
@@ -451,7 +464,6 @@ dir("value", (el, state, expr) => {
|
|
|
451
464
|
for (let o of el.options) o.removeAttribute("selected");
|
|
452
465
|
for (let v of value) el.querySelector(`[value="${v}"]`).setAttribute("selected", "");
|
|
453
466
|
} : (value) => el.value = value;
|
|
454
|
-
ensure(state, expr);
|
|
455
467
|
try {
|
|
456
468
|
const set2 = setter(expr);
|
|
457
469
|
const handleChange = el.type === "checkbox" ? () => set2(state, el.checked) : el.type === "select-multiple" ? () => set2(state, [...el.selectedOptions].map((o) => o.value)) : () => set2(state, el.selectedIndex < 0 ? null : el.value);
|
|
@@ -460,6 +472,7 @@ dir("value", (el, state, expr) => {
|
|
|
460
472
|
new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });
|
|
461
473
|
core_default(el, state);
|
|
462
474
|
}
|
|
475
|
+
untracked(() => parse(expr)(state)) ?? handleChange();
|
|
463
476
|
} catch {
|
|
464
477
|
}
|
|
465
478
|
return update;
|
|
@@ -482,5 +495,17 @@ dir("data", (el) => (value) => {
|
|
|
482
495
|
core_default.use({ compile: (expr) => core_default.constructor(`with (arguments[0]) { return ${expr} };`) });
|
|
483
496
|
var sprae_default = core_default;
|
|
484
497
|
export {
|
|
485
|
-
|
|
498
|
+
_change,
|
|
499
|
+
_signals,
|
|
500
|
+
_stash,
|
|
501
|
+
batch,
|
|
502
|
+
computed,
|
|
503
|
+
sprae_default as default,
|
|
504
|
+
effect,
|
|
505
|
+
list,
|
|
506
|
+
setter,
|
|
507
|
+
signal,
|
|
508
|
+
store,
|
|
509
|
+
untracked,
|
|
510
|
+
use
|
|
486
511
|
};
|
package/dist/sprae.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../signal.js", "../store.js", "../core.js", "../directive/if.js", "../directive/each.js", "../directive/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"],
|
|
4
|
-
"sourcesContent": ["// ulive copy, stable minimal implementation\nlet current;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = fn => fn(),\n untracked = batch,\n // 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 use = (s) => (\n signal = s.signal,\n effect = s.effect,\n computed = s.computed,\n batch = s.batch || batch,\n untracked = s.untracked || untracked\n )\n", "// signals-based proxy\nimport { signal, computed, batch } from './signal.js'\nimport { parse } from './core.js';\n\nexport const _signals = Symbol('signals'),\n _change = Symbol('change'),\n _stash = '__',\n\n // object store is not lazy\n store = (values, parent) => {\n if (!values) return values\n\n // ignore existing state as argument or globals\n if (values[_signals] || values[Symbol.toStringTag]) return values;\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n let signals = { ...parent?.[_signals] },\n _len = signal(Object.keys(values).length),\n stash,\n\n // proxy conducts prop access to signals\n state = new Proxy(signals, {\n get: (_, k) => k === _change ? _len : k === _signals ? signals : k === _stash ? stash : signals[k]?.valueOf(),\n set: (_, k, v, s) => (k === _stash ? stash = v : s = k in signals, set(signals, k, v), s || ++_len.value), // bump length for new signal\n deleteProperty: (_, k) => (signals[k] && (signals[k][Symbol.dispose]?.(), delete signals[k], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals)),\n }),\n\n // init signals for values\n descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))._set = descs[k].set?.bind(state);\n\n else\n // init blank signal - make sure we don't take prototype one\n signals[k] = null, set(signals, k, values[k]);\n }\n\n return state\n },\n\n // array store - signals are lazy since arrays can be very large & expensive\n 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 // .length signal is stored separately, since it cannot be replaced on array\n _len = signal(values.length),\n\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 state = new Proxy(signals, {\n get(_, k) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof k === 'symbol') return k === _change ? _len : k === _signals ? signals : signals[k]\n\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (k === 'length') return mut.includes(lastProp) ? _len.peek() : _len.value;\n\n lastProp = k;\n\n // create signal (lazy)\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n return (signals[k] ?? (signals[k] = signal(store(values[k])))).valueOf()\n },\n\n set(_, k, v) {\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n }\n else {\n set(signals, k, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (k >= _len.peek()) _len.value = signals.length = +k + 1\n }\n\n return 1\n },\n\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n\n return state\n }\n\n// length changing methods\nconst mut = ['push', 'pop', 'shift', 'unshift', 'splice']\n\n// set/update signal value\nconst set = (signals, k, v) => {\n let s = signals[k], cur\n\n // untracked\n if (k[0] === '_') signals[k] = v\n // new property. preserve signal value as is\n else if (!s) signals[k] = s = v?.peek ? v : signal(store(v))\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === (cur = 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(cur)) {\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i]\n cur.length = v.length // forces deleting tail signals\n })\n else s.value = v\n }\n // .x = y\n else s.value = store(v)\n}\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, set = parse(`${expr}=${_stash}`)) => (\n (state, value) => (\n state[_stash] = value, // save value to stash\n set(state)\n )\n)\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\nexport const ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => name && (state[_signals][name[0]] ??= null)\n\nexport default store\n", "import { use, effect } from \"./signal.js\";\nimport { store } from './store.js';\n\n// polyfill\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\nexport const _state = Symbol(\"state\"), _on = Symbol('on'), _off = Symbol('off')\n\n// registered directives\nexport const directive = {}\n\n/**\n * Register a directive with a parsed expression and evaluator.\n * @param {string} name - The name of the directive.\n * @param {(el: Element, state: Object, attrValue: string, attrName: string) => (value: any) => void} create - A function to create the directive.\n * @param {(expr: string) => (state: Object) => any} [p=parse] - Create evaluator from expression string.\n */\nexport const dir = (name, create, p = parse) => directive[name] = (el, expr, state, name, update, evaluate) => (\n evaluate = p(expr),\n update = create(el, state, expr, name, evaluate),\n () => update(evaluate(state))\n)\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object} [values] - Initial values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nexport const sprae = (el=document.body, values) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], values)\n\n // take over existing state instead of creating a clone\n let state = store(values || {}), offs = [], fx = [],\n\n init = (el, attrs = el.attributes) => {\n // we iterate live collection (subsprae can init args)\n if (attrs) for (let i = 0; i < attrs.length;) {\n let { name, value } = attrs[i], update, dir\n\n // if we have parts meaning there's attr needs to be spraed\n if (name.startsWith(prefix)) {\n el.removeAttribute(name);\n\n // multiple attributes like :id:for=\"\"\n for (dir of name.slice(prefix.length).split(':')) {\n update = (directive[dir] || directive.default)(el, value, state, dir)\n\n // save & start effect\n fx.push(update), offs.push(effect(update))\n\n // stop after :each, :if, :with etc.\n if (el[_state] === null) return\n }\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n for (let child of el.childNodes) child.nodeType == 1 && init(child)\n };\n\n init(el);\n\n // if element was spraed by inline :with instruction (meaning it has extended state) - skip, otherwise save _state\n if (!(_state in el)) {\n el[_state] = state\n\n // on/off all effects\n el[_off] = () => (offs.map(off => off()), offs = [])\n el[_on] = () => offs = fx.map(f => effect(f))\n\n // destroy\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null)\n }\n\n return state;\n}\n\n// 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 s.prefix && (prefix = s.prefix)\n)\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @param {string} dir - The directive associated with the expression (used for error reporting).\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr, dir, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n return memo[expr] = fn\n}\nconst memo = {};\n\n/**\n * Branded sprae error with context about the directive and expression\n *\n * @param {Error} e - The original error object to enhance.\n * @param {string} dir - The directive where the error occurred.\n * @param {string} [expr=''] - The expression associated with the error, if any.\n * @throws {Error} The enhanced error object with a formatted message.\n */\nexport const err = (e, dir = '', expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\n/**\n * Compiles an expression into an evaluator function.\n *\n * @type {(expr: string) => Function}\n */\nexport let compile\n\n/**\n * Attributes prefix, by default ':'\n */\nexport let prefix = ':'\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\nexport default sprae\n", "import sprae, { dir, _state, _on, _off, frag } from \"../core.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\n\ndir('if', (el, state) => {\n let holder = document.createTextNode('')\n\n let next = el.nextElementSibling,\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n ifEl[_state] = null // mark el as fake-spraed to holdon init, since we sprae rest when branch matches\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null\n }\n\n return (value, newEl = value ? ifEl : el[_prevIf] ? null : elseEl) => {\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements when element is not matched\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n // remove fake memo to sprae as new\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state))\n // enable effects if branch is matched\n : curEl[_on]()\n }\n }\n };\n})\n", "import sprae, { _state, dir, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect } from '../signal.js';\n\n\ndir('each', (tpl, state, expr) => {\n let [itemVar, idxVar = \"$\"] = expr.split(/\\bin\\b/)[0].trim().split(/\\s*,\\s*/);\n\n // we need :if to be able to replace holder instead of tpl for :if :each case\n let holder = document.createTextNode(\"\");\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n let update = () => {\n let i = 0, newItems = items, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]()\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n // FIXME: inherited state is cheaper in terms of memory and faster in terms of performance\n // compared to cloning all parent signals and creating a proxy\n // FIXME: besides try to avoid _signals access: we can optimize store then not checking for _signals key\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n\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 tpl.replaceWith(holder);\n tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n return value => {\n // obtain new items\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n })\n }\n },\n\n // redefine evaluator to take second part of expression\n expr => parse(expr.split(/\\bin\\b/)[1])\n)\n", "import { dir } from \"../core.js\";\nimport { setter, ensure } from \"../store.js\";\n\ndir('ref', (el, state, expr, _, ev) => (\n ensure(state, expr),\n ev(state) == null ?\n (setter(expr)(state, el), _ => _) :\n v => v.call(null, el)\n))\n", "import sprae, { dir } from \"../core.js\";\nimport store, { _signals } from '../store.js';\n\ndir('with', (el, rootState, state) => (state=null, values => sprae(el, state ? values : state = store(values, rootState))))\n", "import { dir, frag } from \"../core.js\";\n\ndir('text', el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n value => el.textContent = value == null ? \"\" : value\n))\n", "import { dir, directive } from \"../core.js\";\n\ndir('class', (el, cur) => (\n cur = new Set,\n v => {\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n })\n)\n\ndirective.className = directive.class // JSX alias\n", "import { dir } from \"../core.js\";\n\ndir('style', (el, initStyle) => (\n initStyle = el.getAttribute(\"style\"),\n v => {\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n })\n)\n", "// generic property directive\nimport { dir, err } from \"../core.js\";\n\ndir('default', (target, state, expr, name) => {\n // simple prop\n if (!name.startsWith('on'))\n return name ?\n value => attr(target, name, value) :\n value => { for (let key in value) attr(target, dashcase(key), value[key]) };\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n let ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (_, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // add listener with the context\n let addListener = (fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }, cb) => {\n if (defer) fn = defer(fn)\n\n cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n // single event\n if (ctxs.length == 1) return v => addListener(v, ctxs[0])\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n let nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return value => (\n startFn = value,\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n )\n})\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n parent(ctx) { ctx.target = ctx.target.parentNode; },\n\n throttle(ctx, limit=108) { ctx.defer = (fn) => throttle(fn, limit)},\n debounce(ctx, wait=108) { ctx.defer = (fn) => debounce(fn, wait) },\n\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char,\n};\n\n// key testers\nconst keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key),\n};\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\n// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { dir } from \"../core.js\";\nimport { setter, ensure } from \"../store.js\";\nimport { attr } from './default.js';\n\n\ndir('value', (el, state, expr) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // make sure value exists in state\n ensure(state, expr)\n\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n } catch {}\n\n return update\n})\n", "import { dir } from \"../core.js\";\n\ndir('fx', _ => _ => _)\n", "import { dir } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndir('aria', (el) => value => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '')\n})\n", "import { dir } from \"../core.js\";\n\ndir('data', el => value => {for (let key in value) el.dataset[key] = value[key];})\n", "import sprae from './core.js'\n\n// default directives\nimport './directive/if.js'\nimport './directive/each.js'\nimport './directive/ref.js'\nimport './directive/with.js'\nimport './directive/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\nimport './directive/aria.js'\nimport './directive/data.js'\n\n// default compiler (indirect new Function to avoid detector)\nsprae.use({ compile: expr => sprae.constructor(`with (arguments[0]) { return ${expr} };`) })\n\nexport default sprae\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["set", "name", "el", "dir", "keys", "
|
|
4
|
+
"sourcesContent": ["// ulive copy, stable minimal implementation\nlet current;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = fn => fn(),\n untracked = batch,\n // 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 use = (s) => (\n signal = s.signal,\n effect = s.effect,\n computed = s.computed,\n batch = s.batch || batch,\n untracked = s.untracked || untracked\n )\n", "// signals-based proxy\nimport { signal, computed, batch } from './signal.js'\nimport { parse } from './core.js';\n\nexport const _signals = Symbol('signals'),\n _change = Symbol('change'),\n _stash = '__',\n\n // object store is not lazy\n store = (values, parent) => {\n if (!values) return values\n\n // ignore existing state as argument or globals\n if (values[_signals] || values[Symbol.toStringTag]) return values;\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // we must inherit signals to allow dynamic extend of parent state\n let signals = Object.create(parent?.[_signals] || {}),\n _len = signal(Object.keys(values).length),\n stash\n\n // proxy conducts prop access to signals\n let state = new Proxy(signals, {\n get: (_, k) => k === _change ? _len : k === _signals ? signals : k === _stash ? stash : k in signals ? signals[k]?.valueOf() : globalThis[k],\n set: (_, k, v, s) => k === _stash ? (stash = v, 1) : (s = k in signals, set(signals, k, v), s || ++_len.value), // bump length for new signal\n deleteProperty: (_, k) => (signals[k] && (signals[k][Symbol.dispose]?.(), delete signals[k], _len.value--), 1),\n // subscribe to length when object is spread\n ownKeys: () => (_len.value, Reflect.ownKeys(signals)),\n has: _ => true // sandbox prevents writing to global\n }),\n\n // init signals for values\n descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))._set = descs[k].set?.bind(state);\n\n else\n // init blank signal - make sure we don't take prototype one\n signals[k] = null, set(signals, k, values[k]);\n }\n\n return state\n },\n\n // array store - signals are lazy since arrays can be very large & expensive\n 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 // .length signal is stored separately, since it cannot be replaced on array\n _len = signal(values.length),\n\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 state = new Proxy(signals, {\n get(_, k) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof k === 'symbol') return k === _change ? _len : k === _signals ? signals : signals[k]\n\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (k === 'length') return mut.includes(lastProp) ? _len.peek() : _len.value;\n\n lastProp = k;\n\n // create signal (lazy)\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n return (signals[k] ?? (signals[k] = signal(store(values[k])))).valueOf()\n },\n\n set(_, k, v) {\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n }\n else {\n set(signals, k, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (k >= _len.peek()) _len.value = signals.length = +k + 1\n }\n\n return 1\n },\n\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n\n return state\n }\n\n// length changing methods\nconst mut = ['push', 'pop', 'shift', 'unshift', 'splice']\n\n// set/update signal value\nconst set = (signals, k, v) => {\n let s = signals[k], cur\n\n // untracked\n if (k[0] === '_') signals[k] = v\n // new property. preserve signal value as is\n else if (!s) signals[k] = s = v?.peek ? v : signal(store(v))\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === (cur = 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(cur)) {\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) batch(() => {\n for (let i = 0; i < v.length; i++) cur[i] = v[i]\n cur.length = v.length // forces deleting tail signals\n })\n else s.value = v\n }\n // .x = y\n else s.value = store(v)\n}\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, set = parse(`${expr}=${_stash}`)) => (\n (state, value) => (\n state[_stash] = value, // save value to stash\n set(state)\n )\n)\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\n// NOTE: we don't need since we force proxy sandbox\n// export const ensure = (state, expr, name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => name && (state[_signals][name[0]] ??= null)\n\nexport default store\n", "import { use, effect, untracked } from \"./signal.js\";\nimport { store } from './store.js';\n\n// polyfill\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\nexport const _state = Symbol(\"state\"), _on = Symbol('on'), _off = Symbol('off')\n\n// registered directives\nexport const directive = {}\n\n/**\n * Register a directive with a parsed expression and evaluator.\n * @param {string} name - The name of the directive.\n * @param {(el: Element, state: Object, attrValue: string, attrName: string) => (value: any) => void} create - A function to create the directive.\n * @param {(expr: string) => (state: Object) => any} [p=parse] - Create evaluator from expression string.\n */\nexport const dir = (name, create, p = parse) => directive[name] = (el, expr, state, name, update, evaluate) => (\n update = create(el, state, expr, name),\n evaluate = p(expr),\n () => update(evaluate(state))\n)\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object} [values] - Initial values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nexport const sprae = (el=document.body, values) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], values)\n\n // take over existing state instead of creating a clone\n let state = store(values || {}), offs = [], fx = []\n\n let init = (el, attrs = el.attributes) => {\n // we iterate live collection (subsprae can init args)\n if (attrs) for (let i = 0; i < attrs.length;) {\n let { name, value } = attrs[i], update, dir\n\n // if we have parts meaning there's attr needs to be spraed\n if (name.startsWith(prefix)) {\n el.removeAttribute(name);\n\n // multiple attributes like :id:for=\"\"\n for (dir of name.slice(prefix.length).split(':')) {\n update = (directive[dir] || directive.default)(el, value, state, dir)\n\n // save & start effect\n fx.push(update)\n // FIXME: since effect can have async start, we can just use el[_on]\n offs.push(effect(update))\n\n // stop after :each, :if, :with etc.\n if (el[_state] === null) return\n }\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n for (let child of el.childNodes) child.nodeType == 1 && init(child)\n };\n\n init(el);\n\n // if element was spraed by inline :with instruction (meaning it has extended state) - skip, otherwise save _state\n if (!(_state in el)) {\n el[_state] = state\n\n // on/off all effects\n el[_off] = () => (offs.map(off => off()), offs = [])\n el[_on] = () => offs = fx.map(f => effect(f))\n\n // destroy\n el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = null)\n }\n\n return state;\n}\n\n// 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 s.prefix && (prefix = s.prefix)\n)\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr - The expression to parse and compile into a function.\n * @param {string} dir - The directive associated with the expression (used for error reporting).\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr, dir, fn) => {\n if (fn = memo[expr = expr.trim()]) return fn\n\n // static time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n // run time errors\n return memo[expr] = s => {\n try { return fn(s) }\n catch(e) { err(e, dir, expr) }\n }\n}\nconst memo = {};\n\n/**\n * Branded sprae error with context about the directive and expression\n *\n * @param {Error} e - The original error object to enhance.\n * @param {string} dir - The directive where the error occurred.\n * @param {string} [expr=''] - The expression associated with the error, if any.\n * @throws {Error} The enhanced error object with a formatted message.\n */\nexport const err = (e, dir = '', expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\n/**\n * Compiles an expression into an evaluator function.\n *\n * @type {(expr: string) => Function}\n */\nexport let compile\n\n/**\n * Attributes prefix, by default ':'\n */\nexport let prefix = ':'\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\nexport default sprae\n", "import sprae, { dir, _state, _on, _off, frag } from \"../core.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\n\ndir('if', (el, state) => {\n let holder = document.createTextNode('')\n\n let next = el.nextElementSibling,\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n ifEl[_state] = null // mark el as fake-spraed to holdon init, since we sprae rest when branch matches\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, elseEl[_state] = null\n }\n\n return (value, newEl = value ? ifEl : el[_prevIf] ? null : elseEl) => {\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on child elements when element is not matched\n if (curEl) curEl.remove(), curEl[_off]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n // remove fake memo to sprae as new\n curEl[_state] === null ? (delete curEl[_state], sprae(curEl, state))\n // enable effects if branch is matched\n : curEl[_on]()\n }\n }\n };\n})\n", "import sprae, { _state, dir, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect } from '../signal.js';\n\n\ndir('each', (tpl, state, expr) => {\n let [itemVar, idxVar = \"$\"] = expr.split(/\\bin\\b/)[0].trim().split(/\\s*,\\s*/);\n\n // we need :if to be able to replace holder instead of tpl for :if :each case\n let holder = document.createTextNode(\"\");\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n let update = () => {\n let i = 0, newItems = items, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]()\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n // FIXME: inherited state is cheaper in terms of memory and faster in terms of performance\n // compared to cloning all parent signals and creating a proxy\n // FIXME: besides try to avoid _signals access: we can optimize store then not checking for _signals key\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n\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 tpl.replaceWith(holder);\n tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n return value => {\n // obtain new items\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned++) update(), queueMicrotask(() => (planned > 1 && update(), planned = 0));\n })\n }\n },\n\n // redefine evaluator to take second part of expression\n expr => parse(expr.split(/\\bin\\b/)[1])\n)\n", "import { dir, parse } from \"../core.js\";\nimport { untracked } from \"../signal.js\";\nimport { setter } from \"../store.js\";\n\ndir('ref', (el, state, expr) => (\n // FIXME: ideally we don't use untracked here, but ev may have internal refs that will subscribe root effect\n untracked(() => typeof parse(expr)(state) == 'function') ?\n v => v.call(null, el) :\n (setter(expr)(state, el), _ => _)\n))\n", "import sprae, { dir } from \"../core.js\";\nimport { untracked } from \"../signal.js\";\nimport store, { _signals } from '../store.js';\n\ndir('with', (el, rootState, state) => (\n state=null,\n values => //untracked(() => (\n sprae(el, state ? values : state = store(values, rootState))\n //))\n))\n", "import { dir, frag } from \"../core.js\";\n\ndir('text', el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n value => el.textContent = value == null ? \"\" : value\n))\n", "import { dir, directive } from \"../core.js\";\n\ndir('class', (el, cur) => (\n cur = new Set,\n v => {\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n })\n)\n\ndirective.className = directive.class // JSX alias\n", "import { dir } from \"../core.js\";\n\ndir('style', (el, initStyle) => (\n initStyle = el.getAttribute(\"style\"),\n v => {\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n })\n)\n", "// generic property directive\nimport { dir, err } from \"../core.js\";\n\ndir('default', (target, state, expr, name) => {\n // simple prop\n if (!name.startsWith('on'))\n return name ?\n value => attr(target, name, value) :\n value => { for (let key in value) attr(target, dashcase(key), value[key]) };\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n let ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (_, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // add listener with the context\n let addListener = (fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }, cb) => {\n if (defer) fn = defer(fn)\n\n cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.call(state, e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n // single event\n if (ctxs.length == 1) return v => addListener(v, ctxs[0])\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n let nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return value => (\n startFn = value,\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n )\n})\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n parent(ctx) { ctx.target = ctx.target.parentNode; },\n\n throttle(ctx, limit=108) { ctx.defer = (fn) => throttle(fn, limit)},\n debounce(ctx, wait=108) { ctx.defer = (fn) => debounce(fn, wait) },\n\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char,\n};\n\n// key testers\nconst keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key),\n};\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\n// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n}\n", "import sprae, { parse } from \"../core.js\";\nimport { dir } from \"../core.js\";\nimport { untracked } from \"../signal.js\";\nimport { setter } from \"../store.js\";\nimport { attr } from './default.js';\n\n\ndir('value', (el, state, expr) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n\n // initial state value\n untracked(()=>parse(expr)(state)) ?? handleChange()\n } catch {}\n\n return update\n})\n", "import { dir } from \"../core.js\";\n\ndir('fx', _ => _ => _)\n", "import { dir } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\n\ndir('aria', (el) => value => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '')\n})\n", "import { dir } from \"../core.js\";\n\ndir('data', el => value => {for (let key in value) el.dataset[key] = value[key];})\n", "import sprae from './core.js'\n\n// default directives\nimport './directive/if.js'\nimport './directive/each.js'\nimport './directive/ref.js'\nimport './directive/with.js'\nimport './directive/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\nimport './directive/aria.js'\nimport './directive/data.js'\n\n// default compiler (indirect new Function to avoid detector)\nsprae.use({ compile: expr => sprae.constructor(`with (arguments[0]) { return ${expr} };`) })\n\nexport * from './store.js'\nexport * from './signal.js'\n\nexport default sprae\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["set", "name", "el", "dir", "keys", "v", "target", "set", "_"]
|
|
7
7
|
}
|