sprae 10.12.0 → 10.12.2
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 +1 -0
- package/directive/each.js +1 -1
- package/directive/if.js +2 -1
- package/dist/sprae.js +4 -3
- package/dist/sprae.js.map +2 -2
- package/dist/sprae.min.js +2 -2
- package/dist/sprae.min.js.map +2 -2
- package/dist/sprae.umd.js +4 -3
- package/dist/sprae.umd.js.map +2 -2
- package/dist/sprae.umd.min.js +2 -2
- package/dist/sprae.umd.min.js.map +2 -2
- package/package.json +1 -1
- package/readme.md +1 -1
- package/store.js +2 -2
package/core.js
CHANGED
package/directive/each.js
CHANGED
|
@@ -63,7 +63,7 @@ directive.each = (tpl, [itemVar, idxVar, evaluate], state) => {
|
|
|
63
63
|
|
|
64
64
|
// signal/holder disposal removes element
|
|
65
65
|
((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {
|
|
66
|
-
el[Symbol.dispose](), el.remove()
|
|
66
|
+
el[Symbol.dispose]?.(), el.remove()
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
}
|
package/directive/if.js
CHANGED
|
@@ -25,7 +25,8 @@ directive.if = (el, evaluate, state) => {
|
|
|
25
25
|
const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;
|
|
26
26
|
if (next) next[_prevIf] = newEl === ifEl
|
|
27
27
|
if (curEl != newEl) {
|
|
28
|
-
|
|
28
|
+
// disable effects on removed elements to avoid internal effects from triggering on possibly null values
|
|
29
|
+
if (curEl) curEl.remove(), curEl[Symbol.dispose]?.()
|
|
29
30
|
if (curEl = newEl) {
|
|
30
31
|
holder.before(curEl.content || curEl)
|
|
31
32
|
memo.get(curEl) === null && memo.delete(curEl) // remove fake memo to sprae as new
|
package/dist/sprae.js
CHANGED
|
@@ -63,7 +63,7 @@ function store(values, parent) {
|
|
|
63
63
|
if (!values) return values;
|
|
64
64
|
if (values[_signals]) return values;
|
|
65
65
|
if (Array.isArray(values)) return list(values);
|
|
66
|
-
if (values.constructor !== Object) return values;
|
|
66
|
+
if (values.constructor !== Object || values[Symbol.toStringTag]) return values;
|
|
67
67
|
let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);
|
|
68
68
|
const state = new Proxy(signals, {
|
|
69
69
|
get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),
|
|
@@ -158,6 +158,7 @@ function sprae(el, values) {
|
|
|
158
158
|
el[_dispose] = () => {
|
|
159
159
|
while (disposes.length) disposes.pop()();
|
|
160
160
|
memo.delete(el);
|
|
161
|
+
el[_dispose] = null;
|
|
161
162
|
};
|
|
162
163
|
return state;
|
|
163
164
|
function init(el2, parent = el2.parentNode) {
|
|
@@ -237,7 +238,7 @@ directive.if = (el, evaluate, state) => {
|
|
|
237
238
|
const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;
|
|
238
239
|
if (next) next[_prevIf] = newEl === ifEl;
|
|
239
240
|
if (curEl != newEl) {
|
|
240
|
-
curEl
|
|
241
|
+
if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();
|
|
241
242
|
if (curEl = newEl) {
|
|
242
243
|
holder.before(curEl.content || curEl);
|
|
243
244
|
memo.get(curEl) === null && memo.delete(curEl);
|
|
@@ -288,7 +289,7 @@ directive.each = (tpl, [itemVar, idxVar, evaluate], state) => {
|
|
|
288
289
|
holder.before(el.content || el);
|
|
289
290
|
sprae(el, scope);
|
|
290
291
|
((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {
|
|
291
|
-
el[Symbol.dispose](), el.remove();
|
|
292
|
+
el[Symbol.dispose]?.(), el.remove();
|
|
292
293
|
};
|
|
293
294
|
}
|
|
294
295
|
}
|
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/html.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/default.js", "../directive/value.js", "../directive/fx.js", "../sprae.js"],
|
|
4
|
-
"sourcesContent": ["// ulive copy, stable minimal implementation\nlet current, batched;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = new Set;\n try { fn(); }\n finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n },\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n\n// signals adapter - allows switching signals implementation and not depend on core\n\nexport function use(s) {\n signal = s.signal\n effect = s.effect\n computed = s.computed\n batch = s.batch || (fn => fn())\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, effect, batch, untracked } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('length');\n\n// object store is not lazy\nexport default function store(values, parent) {\n if (!values) return values\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // redirect for optimized array store\n if (Array.isArray(values)) return list(values)\n\n // ignore non-objects\n if (values.constructor !== Object) return values;\n\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : (signals[key]?.valueOf()),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? (++_len.value), 1), // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n // subscribe to length when object is spread\n _len.value\n return Reflect.ownKeys(signals);\n },\n })\n\n // init signals for values\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key)\n\n // getter turns into computed\n if (desc?.get) {\n // stash setter\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n }\n else {\n // init blank signal - make sure we don't take prototype one\n signals[key] = undefined\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 }\n\n// array store - signals are lazy since arrays can be very large & expensive\nexport function list(values) {\n // track last accessed property to find out if .length was directly accessed from expression or via .push/etc method\n let lastProp\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // .length signal is stored separately, since it cannot be replaced on array\n let _len = signal(values.length),\n // gotta fill with null since proto methods like .reduce may fail\n signals = Array(values.length).fill();\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get(_, key) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof key === 'symbol') return key === _change ? _len : key === _signals ? signals : signals[key]\n\n // console.log('get', key)\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut[lastProp] ? _len.peek() : _len.value;\n\n lastProp = key;\n\n if (signals[key]) return signals[key].valueOf()\n\n // I hope reading values here won't diverge from signals\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value\n },\n\n set(_, key, v) {\n // console.log('set', key, v)\n // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v, l = signals.length; i < l; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n return true\n }\n\n set(signals, key, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1),\n\n })\n\n return state\n}\n\n// set/update signal value\nfunction set(signals, key, v) {\n let s = signals[key]\n\n // untracked\n if (key[0] === '_') signals[key] = v\n // new property\n else if (!s) {\n // preserve signal value as is\n signals[key] = s = v?.peek ? v : signal(store(v))\n }\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === s.peek());\n // stashed _set for value with getter/setter\n else if (s._set) s._set(v)\n // patch array\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek()\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i]\n cur.length = l // forces deleting tail signals\n })\n })\n else {\n s.value = v\n }\n }\n // .x = y\n else {\n s.value = store(v)\n }\n}\n\n// delete signal\nfunction del(signals, key) {\n const s = signals[key], del = s[Symbol.dispose]\n if (del) delete s[Symbol.dispose]\n delete signals[key]\n del?.()\n}\n", "import { use } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\n// reserved directives - order matters!\nexport const directive = {};\n\n// every element that's in cache === directly spraed and un subsequent sprae is just updated (like each)\nexport const memo = new WeakMap();\n\n// sprae element: apply directives\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by :each with new objects with old keys needs an update\n if (memo.has(el)) {\n // we rewrite signals instead of update, because user should have what he provided\n return Object.assign(memo.get(el), values)\n }\n\n // take over existing state instead of creating clone\n const state = store(values || {}), disposes = []\n\n init(el);\n\n // if element was spraed by :with or :each instruction - skip, otherwise save\n if (!memo.has(el)) memo.set(el, state);\n\n // disposer unspraes all internal elements\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n }\n\n return state;\n\n function init(el, parent = el.parentNode) {\n if (!el.childNodes) return // ignore text nodes, comments etc\n\n // init generic-name attributes second\n for (let i = 0; i < el.attributes?.length;) {\n let attr = el.attributes[i];\n\n if (attr.name[0] === ':') {\n el.removeAttribute(attr.name);\n\n // multiple attributes like :id:for=\"\"\n let names = attr.name.slice(1).split(':')\n\n // NOTE: secondary directives don't stop flow nor extend state, so no need to check\n for (let name of names) {\n let dir = directive[name] || directive.default\n let evaluate = (dir.parse || parse)(attr.value)\n let dispose = dir(el, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n\n // stop if element was spraed by internal directive\n if (memo.has(el)) return el[_dispose] && disposes.push(el[_dispose])\n\n // stop if element is skipped (detached) like in case of :if or :each\n if (el.parentNode !== parent) return\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child, el);\n };\n}\n\n\n// compiler\nconst evalMemo = {};\nexport const parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n // runtime errors\n return evalMemo[expr] = fn\n}\n\n// wrapped call\nexport const err = (e, dir, expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\nexport let compile\n\n// configure signals/compile\n// it's more compact than using sprae.signal = signal etc.\nsprae.use = s => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n}\n\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true),\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) }\n }\n}\n", "import sprae, { directive, memo, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling,\n holder = document.createTextNode(''),\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n memo.set(ifEl, null) // mark all el as fake-spraed, because we have to sprae for real on insert\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null)\n }\n\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n curEl?.remove()\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n memo.get(curEl) === null && memo.delete(curEl) // remove fake memo to sprae as new\n sprae(curEl, state)\n }\n }\n });\n};\n", "import sprae, { directive, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect, untracked, computed } from '../signal.js';\n\n\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n // we need :if to be able to replace holder instead of tpl for :if :each case\n const holder = (document.createTextNode(\"\"));\n tpl.replaceWith(holder);\n\n // we re-create items any time new items are produced\n let cur, keys, prevl = 0\n\n // separate computed effect reduces number of needed updates for the effect\n const items = computed(() => {\n keys = null\n let items = evaluate(state)\n if (typeof items === \"number\") items = Array.from({ length: items }, (_, i) => i + 1)\n if (items?.constructor === Object) keys = Object.keys(items), items = Object.values(items)\n return items || []\n })\n\n const update = () => {\n // NOTE: untracked avoids rerendering full list whenever internal items or props change\n untracked(() => {\n let i = 0, newItems = items.value, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !(cur[_change])) {\n for (let s of cur[_signals] || []) { s[Symbol.dispose]() }\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) {\n cur.length = newl\n }\n // update, append, init\n else {\n // init\n if (!cur) {\n cur = newItems\n }\n // update\n else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i]\n }\n }\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, scope);\n\n // signal/holder disposal removes element\n ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {\n el[Symbol.dispose](), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n }\n\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just on init) since preact unsubscribes unused signals\n items.value[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned) {\n update()\n queueMicrotask(() => (planned && update(), planned = 0))\n } else planned++\n })\n}\n\n\n// redefine parser to exclude `[a in] b`\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n\n return [itemVar, idxVar, parse(itemsExpr)]\n}\n", "import { directive } from \"../core.js\";\nimport { _change, _signals } from \"../store.js\";\n\n// ref must be last within primaries, since that must be skipped by :each, but before secondaries\ndirective.ref = (el, expr, state) => {\n state[expr] = el\n}\n\ndirective.ref.parse = expr => expr\n", "import sprae, { directive } from \"../core.js\";\nimport store, { _signals } from '../store.js';\nimport { effect } from \"../signal.js\";\n\ndirective.with = (el, evaluate, rootState) => {\n let state\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState))\n })\n};\n", "import sprae, { directive } from \"../core.js\";\n\ndirective.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n\n if (!tpl) return\n\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n};\n", "import { directive, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set text content\ndirective.text = (el, evaluate, state) => {\n // <template :text=\"a\"/> or previously initialized template\n if (el.content) el.replaceWith(el = frag(el).childNodes[0])\n\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.class = (el, evaluate, state) => {\n let cur = new Set\n return effect(() => {\n let v = evaluate(state);\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n });\n};\n", "import { directive, err } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set generic property directive\ndirective.default = (target, evaluate, state, name) => {\n // simple prop\n if (!name.startsWith('on')) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value)\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n const ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // single event\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]))\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n const nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return effect(() => (\n startFn = evaluate(state),\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n ))\n\n // add listener with the context\n function addListener(fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn)\n\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n};\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n\n throttle(ctx, limit) { ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108); },\n debounce(ctx, wait) { ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108); },\n\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char,\n};\n\n// key testers\nconst keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key),\n};\n\n// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i?'-':'') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { directive, parse } from \"../core.js\";\nimport { attr } from './default.js';\nimport { effect } from \"../signal.js\";\n\n// connect expr to element value\ndirective.value = (el, [getValue, setValue], state) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // select options must be initialized before calling an update\n if (el.type?.startsWith('select')) sprae(el, state)\n\n // bind ui back to value\n const handleChange = el.type === 'checkbox' ? e => setValue(state, el.checked) : el.type === 'select-multiple' ? e => setValue(state, [...el.selectedOptions].map(o => o.value)) : e => setValue(state, el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually - it saves 5 loc\n\n return effect(() => update(getValue(state)));\n};\n\ndirective.value.parse = expr => {\n let evaluate = [parse(expr)]\n // catch wrong assigns like `123 = arguments[1]`, `foo?.bar = arguments[1]`\n try {\n const set = parse(`${expr}=__;`);\n // FIXME: if there's a simpler way to set value in justin?\n evaluate.push((state, value) => {\n state.__ = value\n let result = set(state, value)\n delete state.__\n return result\n })\n }\n catch (e) { }\n return evaluate\n}\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\n};\n", "import sprae from './core.js'\n\n// default directives\nimport './directive/if.js'\nimport './directive/each.js'\nimport './directive/ref.js'\nimport './directive/with.js'\nimport './directive/html.js'\nimport './directive/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\n\n// default compiler (indirect new Function to avoid detector)\nsprae.use({ compile: expr => sprae.constructor(`with (arguments[0]) { return ${expr} };`) })\n\nexport default sprae\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["// ulive copy, stable minimal implementation\nlet current, batched;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = new Set;\n try { fn(); }\n finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n },\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n\n// signals adapter - allows switching signals implementation and not depend on core\n\nexport function use(s) {\n signal = s.signal\n effect = s.effect\n computed = s.computed\n batch = s.batch || (fn => fn())\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, effect, batch, untracked } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('length');\n\n// object store is not lazy\nexport default function store(values, parent) {\n if (!values) return values\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // redirect for optimized array store\n if (Array.isArray(values)) return list(values)\n\n // ignore non-objects or custom objects\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : (signals[key]?.valueOf()),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? (++_len.value), 1), // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n // subscribe to length when object is spread\n _len.value\n return Reflect.ownKeys(signals);\n },\n })\n\n // init signals for values\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key)\n\n // getter turns into computed\n if (desc?.get) {\n // stash setter\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n }\n else {\n // init blank signal - make sure we don't take prototype one\n signals[key] = undefined\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 }\n\n// array store - signals are lazy since arrays can be very large & expensive\nexport function list(values) {\n // track last accessed property to find out if .length was directly accessed from expression or via .push/etc method\n let lastProp\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // .length signal is stored separately, since it cannot be replaced on array\n let _len = signal(values.length),\n // gotta fill with null since proto methods like .reduce may fail\n signals = Array(values.length).fill();\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get(_, key) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof key === 'symbol') return key === _change ? _len : key === _signals ? signals : signals[key]\n\n // console.log('get', key)\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut[lastProp] ? _len.peek() : _len.value;\n\n lastProp = key;\n\n if (signals[key]) return signals[key].valueOf()\n\n // I hope reading values here won't diverge from signals\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value\n },\n\n set(_, key, v) {\n // console.log('set', key, v)\n // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v, l = signals.length; i < l; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n return true\n }\n\n set(signals, key, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1),\n\n })\n\n return state\n}\n\n// set/update signal value\nfunction set(signals, key, v) {\n let s = signals[key]\n\n // untracked\n if (key[0] === '_') signals[key] = v\n // new property\n else if (!s) {\n // preserve signal value as is\n signals[key] = s = v?.peek ? v : signal(store(v))\n }\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === s.peek());\n // stashed _set for value with getter/setter\n else if (s._set) s._set(v)\n // patch array\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek()\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i]\n cur.length = l // forces deleting tail signals\n })\n })\n else {\n s.value = v\n }\n }\n // .x = y\n else {\n s.value = store(v)\n }\n}\n\n// delete signal\nfunction del(signals, key) {\n const s = signals[key], del = s[Symbol.dispose]\n if (del) delete s[Symbol.dispose]\n delete signals[key]\n del?.()\n}\n", "import { use } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\n// reserved directives - order matters!\nexport const directive = {};\n\n// every element that's in cache === directly spraed and un subsequent sprae is just updated (like each)\nexport const memo = new WeakMap();\n\n// sprae element: apply directives\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by :each with new objects with old keys needs an update\n if (memo.has(el)) {\n // we rewrite signals instead of update, because user should have what he provided\n return Object.assign(memo.get(el), values)\n }\n\n // take over existing state instead of creating clone\n const state = store(values || {}), disposes = []\n\n init(el);\n\n // if element was spraed by :with or :each instruction - skip, otherwise save\n if (!memo.has(el)) memo.set(el, state);\n\n // disposer unspraes all internal elements\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n el[_dispose] = null;\n }\n\n return state;\n\n function init(el, parent = el.parentNode) {\n if (!el.childNodes) return // ignore text nodes, comments etc\n\n // init generic-name attributes second\n for (let i = 0; i < el.attributes?.length;) {\n let attr = el.attributes[i];\n\n if (attr.name[0] === ':') {\n el.removeAttribute(attr.name);\n\n // multiple attributes like :id:for=\"\"\n let names = attr.name.slice(1).split(':')\n\n // NOTE: secondary directives don't stop flow nor extend state, so no need to check\n for (let name of names) {\n let dir = directive[name] || directive.default\n let evaluate = (dir.parse || parse)(attr.value)\n let dispose = dir(el, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n\n // stop if element was spraed by internal directive\n if (memo.has(el)) return el[_dispose] && disposes.push(el[_dispose])\n\n // stop if element is skipped (detached) like in case of :if or :each\n if (el.parentNode !== parent) return\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child, el);\n };\n}\n\n\n// compiler\nconst evalMemo = {};\nexport const parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n // runtime errors\n return evalMemo[expr] = fn\n}\n\n// wrapped call\nexport const err = (e, dir, expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\nexport let compile\n\n// configure signals/compile\n// it's more compact than using sprae.signal = signal etc.\nsprae.use = s => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n}\n\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true),\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) }\n }\n}\n", "import sprae, { directive, memo, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling,\n holder = document.createTextNode(''),\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n memo.set(ifEl, null) // mark all el as fake-spraed, because we have to sprae for real on insert\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null)\n }\n\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on removed elements to avoid internal effects from triggering on possibly null values\n if (curEl) curEl.remove(), curEl[Symbol.dispose]?.()\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n memo.get(curEl) === null && memo.delete(curEl) // remove fake memo to sprae as new\n sprae(curEl, state)\n }\n }\n });\n};\n", "import sprae, { directive, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect, untracked, computed } from '../signal.js';\n\n\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n // we need :if to be able to replace holder instead of tpl for :if :each case\n const holder = (document.createTextNode(\"\"));\n tpl.replaceWith(holder);\n\n // we re-create items any time new items are produced\n let cur, keys, prevl = 0\n\n // separate computed effect reduces number of needed updates for the effect\n const items = computed(() => {\n keys = null\n let items = evaluate(state)\n if (typeof items === \"number\") items = Array.from({ length: items }, (_, i) => i + 1)\n if (items?.constructor === Object) keys = Object.keys(items), items = Object.values(items)\n return items || []\n })\n\n const update = () => {\n // NOTE: untracked avoids rerendering full list whenever internal items or props change\n untracked(() => {\n let i = 0, newItems = items.value, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !(cur[_change])) {\n for (let s of cur[_signals] || []) { s[Symbol.dispose]() }\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) {\n cur.length = newl\n }\n // update, append, init\n else {\n // init\n if (!cur) {\n cur = newItems\n }\n // update\n else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i]\n }\n }\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, scope);\n\n // signal/holder disposal removes element\n ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n }\n\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just on init) since preact unsubscribes unused signals\n items.value[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned) {\n update()\n queueMicrotask(() => (planned && update(), planned = 0))\n } else planned++\n })\n}\n\n\n// redefine parser to exclude `[a in] b`\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n\n return [itemVar, idxVar, parse(itemsExpr)]\n}\n", "import { directive } from \"../core.js\";\nimport { _change, _signals } from \"../store.js\";\n\n// ref must be last within primaries, since that must be skipped by :each, but before secondaries\ndirective.ref = (el, expr, state) => {\n state[expr] = el\n}\n\ndirective.ref.parse = expr => expr\n", "import sprae, { directive } from \"../core.js\";\nimport store, { _signals } from '../store.js';\nimport { effect } from \"../signal.js\";\n\ndirective.with = (el, evaluate, rootState) => {\n let state\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState))\n })\n};\n", "import sprae, { directive } from \"../core.js\";\n\ndirective.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n\n if (!tpl) return\n\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n};\n", "import { directive, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set text content\ndirective.text = (el, evaluate, state) => {\n // <template :text=\"a\"/> or previously initialized template\n if (el.content) el.replaceWith(el = frag(el).childNodes[0])\n\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.class = (el, evaluate, state) => {\n let cur = new Set\n return effect(() => {\n let v = evaluate(state);\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n });\n};\n", "import { directive, err } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set generic property directive\ndirective.default = (target, evaluate, state, name) => {\n // simple prop\n if (!name.startsWith('on')) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value)\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n const ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // single event\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]))\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n const nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return effect(() => (\n startFn = evaluate(state),\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n ))\n\n // add listener with the context\n function addListener(fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn)\n\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n};\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n\n throttle(ctx, limit) { ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108); },\n debounce(ctx, wait) { ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108); },\n\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char,\n};\n\n// key testers\nconst keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key),\n};\n\n// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i?'-':'') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { directive, parse } from \"../core.js\";\nimport { attr } from './default.js';\nimport { effect } from \"../signal.js\";\n\n// connect expr to element value\ndirective.value = (el, [getValue, setValue], state) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // select options must be initialized before calling an update\n if (el.type?.startsWith('select')) sprae(el, state)\n\n // bind ui back to value\n const handleChange = el.type === 'checkbox' ? e => setValue(state, el.checked) : el.type === 'select-multiple' ? e => setValue(state, [...el.selectedOptions].map(o => o.value)) : e => setValue(state, el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually - it saves 5 loc\n\n return effect(() => update(getValue(state)));\n};\n\ndirective.value.parse = expr => {\n let evaluate = [parse(expr)]\n // catch wrong assigns like `123 = arguments[1]`, `foo?.bar = arguments[1]`\n try {\n const set = parse(`${expr}=__;`);\n // FIXME: if there's a simpler way to set value in justin?\n evaluate.push((state, value) => {\n state.__ = value\n let result = set(state, value)\n delete state.__\n return result\n })\n }\n catch (e) { }\n return evaluate\n}\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\n};\n", "import sprae from './core.js'\n\n// default directives\nimport './directive/if.js'\nimport './directive/each.js'\nimport './directive/ref.js'\nimport './directive/with.js'\nimport './directive/html.js'\nimport './directive/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\n\n// default compiler (indirect new Function to avoid detector)\nsprae.use({ compile: expr => sprae.constructor(`with (arguments[0]) { return ${expr} };`) })\n\nexport default sprae\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["del", "el", "attr", "keys", "items", "v", "target", "set"]
|
|
7
7
|
}
|
package/dist/sprae.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var k,x,O=(e,n,t=new Set)=>(n={get value(){return k?.deps.push(t.add(k)),e},set value(r){if(r!==e){e=r;for(let l of t)x?x.add(l):l()}},peek(){return e}},n.toJSON=n.then=n.toString=n.valueOf=()=>n.value,n),h=(e,n,t,r)=>(t=l=>{n?.call?.(),l=k,k=t;try{n=e()}finally{k=l}},r=t.deps=[],t(),l=>{for(n?.call?.();l=r.pop();)l.delete(t)}),
|
|
1
|
+
var k,x,O=(e,n,t=new Set)=>(n={get value(){return k?.deps.push(t.add(k)),e},set value(r){if(r!==e){e=r;for(let l of t)x?x.add(l):l()}},peek(){return e}},n.toJSON=n.then=n.toString=n.valueOf=()=>n.value,n),h=(e,n,t,r)=>(t=l=>{n?.call?.(),l=k,k=t;try{n=e()}finally{k=l}},r=t.deps=[],t(),l=>{for(n?.call?.();l=r.pop();)l.delete(t)}),L=(e,n=O(),t,r)=>(t={get value(){return r||(r=h(()=>n.value=e())),n.value},peek:n.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),D=e=>{let n=x;n||(x=new Set);try{e()}finally{if(!n){n=x,x=null;for(const t of n)t()}}},K=(e,n,t)=>(n=k,k=null,t=e(),k=n,t);function Z(e){O=e.signal,h=e.effect,L=e.computed,D=e.batch||(n=>n()),K=e.untracked||D}var w=Symbol("signals"),$=Symbol("length");function E(e,n){if(!e||e[w])return e;if(Array.isArray(e))return G(e);if(e.constructor!==Object||e[Symbol.toStringTag])return e;let t={...n?.[w]},r=O(Object.values(e).length);const l=new Proxy(t,{get:(s,i)=>i===$?r:i===w?t:t[i]?.valueOf(),set:(s,i,o,u)=>(u=t[i],I(t,i,o),u??++r.value,1),deleteProperty:(s,i)=>(t[i]&&(q(t,i),r.value--),1),ownKeys(){return r.value,Reflect.ownKeys(t)}});for(let s in e){const i=Object.getOwnPropertyDescriptor(e,s);i?.get?(t[s]=L(i.get.bind(l)))._set=i.set?.bind(l):(t[s]=void 0,I(t,s,e[s]))}return l}var z={push:1,pop:1,shift:1,unshift:1,splice:1};function G(e){let n;if(e[w])return e;let t=O(e.length),r=Array(e.length).fill();const l=new Proxy(r,{get(s,i){if(typeof i=="symbol")return i===$?t:i===w?r:r[i];if(i==="length")return z[n]?t.peek():t.value;if(n=i,r[i])return r[i].valueOf();if(i<r.length)return(r[i]=O(E(e[i]))).value},set(s,i,o){if(i==="length"){for(let u=o,m=r.length;u<m;u++)delete l[u];return t.value=r.length=o,!0}return I(r,i,o),i>=t.peek()&&(t.value=r.length=Number(i)+1),!0},deleteProperty:(s,i)=>(r[i]&&q(r,i),1)});return l}function I(e,n,t){let r=e[n];if(n[0]==="_")e[n]=t;else if(!r)e[n]=r=t?.peek?t:O(E(t));else if(t!==r.peek())if(r._set)r._set(t);else if(Array.isArray(t)&&Array.isArray(r.peek())){const l=r.peek();l[$]?K(()=>{D(()=>{let s=0,i=t.length;for(;s<i;s++)l[s]=t[s];l.length=i})}):r.value=t}else r.value=E(t)}function q(e,n){const t=e[n],r=t[Symbol.dispose];r&&delete t[Symbol.dispose],delete e[n],r?.()}var T=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),p={},b=new WeakMap;function v(e,n){if(!e?.childNodes)return;if(b.has(e))return Object.assign(b.get(e),n);const t=E(n||{}),r=[];return l(e),b.has(e)||b.set(e,t),e[T]=()=>{for(;r.length;)r.pop()();b.delete(e),e[T]=null},t;function l(s,i=s.parentNode){if(s.childNodes){for(let o=0;o<s.attributes?.length;){let u=s.attributes[o];if(u.name[0]===":"){s.removeAttribute(u.name);let m=u.name.slice(1).split(":");for(let A of m){let c=p[A]||p.default,a=(c.parse||j)(u.value),y=c(s,a,t,A);y&&r.push(y)}if(b.has(s))return s[T]&&r.push(s[T]);if(s.parentNode!==i)return}else o++}for(let o of[...s.childNodes])l(o,s)}}}var F={},j=(e,n,t)=>{if(t=F[e=e.trim()])return t;try{t=B(e)}catch(r){J(r,n,e)}return F[e]=t},J=(e,n,t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
|
|
2
2
|
|
|
3
3
|
${n}${t?`="${t}"
|
|
4
4
|
|
|
5
|
-
`:""}`,expr:t})},B;v.use=e=>{e.signal&&Z(e),e.compile&&(B=e.compile)};var
|
|
5
|
+
`:""}`,expr:t})},B;v.use=e=>{e.signal&&Z(e),e.compile&&(B=e.compile)};var C=e=>{if(!e.nodeType)return e;let n=e.content.cloneNode(!0),t=[...e.attributes],r=document.createTextNode(""),l=(n.append(r),[...n.childNodes]);return{childNodes:l,content:n,remove:()=>n.append(...l),replaceWith(s){s!==r&&(r.before(s),n.append(...l))},attributes:t,removeAttribute(s){t.splice(t.findIndex(i=>i.name===s),1)}}},H=Symbol("if");p.if=(e,n,t)=>{let r=e.nextElementSibling,l=document.createTextNode(""),s,i,o;return e.replaceWith(l),i=e.content?C(e):e,b.set(i,null),r?.hasAttribute(":else")&&(r.removeAttribute(":else"),r.hasAttribute(":if")||(r.remove(),o=r.content?C(r):r,b.set(o,null))),h(()=>{const u=n(t)?i:e[H]?null:o;r&&(r[H]=u===i),s!=u&&(s&&(s.remove(),s[Symbol.dispose]?.()),(s=u)&&(l.before(s.content||s),b.get(s)===null&&b.delete(s),v(s,t)))})},p.each=(e,[n,t,r],l)=>{const s=document.createTextNode("");e.replaceWith(s);let i,o,u=0;const m=L(()=>{o=null;let a=r(l);return typeof a=="number"&&(a=Array.from({length:a},(y,d)=>d+1)),a?.constructor===Object&&(o=Object.keys(a),a=Object.values(a)),a||[]}),A=()=>{K(()=>{var a,y;let d=0,g=m.value,N=g.length;if(i&&!i[$]){for(let S of i[w]||[])S[Symbol.dispose]();i=null,u=0}if(N<u)i.length=N;else{if(!i)i=g;else for(;d<u;d++)i[d]=g[d];for(;d<N;d++){i[d]=g[d];let S=d,P=E({[n]:i[w]?.[S]||i[S],[t]:o?o[S]:S},l),_=e.content?C(e):e.cloneNode(!0);s.before(_.content||_),v(_,P),((y=i[a=w]||(i[a]=[]))[d]||(y[d]={}))[Symbol.dispose]=()=>{_[Symbol.dispose]?.(),_.remove()}}}u=N})};let c=0;return h(()=>{m.value[$]?.value,c?c++:(A(),queueMicrotask(()=>(c&&A(),c=0)))})},p.each.parse=e=>{let[n,t]=e.split(/\s+in\s+/),[r,l="$"]=n.split(/\s*,\s*/);return[r,l,j(t)]},p.ref=(e,n,t)=>{t[n]=e},p.ref.parse=e=>e,p.with=(e,n,t)=>{let r;return h(()=>{let l=n(t);v(e,r?l:r=E(l,t))})},p.html=(e,n,t)=>{let r=n(t);if(!r)return;let l=(r.content||r).cloneNode(!0);e.replaceChildren(l),v(e,t)},p.text=(e,n,t)=>(e.content&&e.replaceWith(e=C(e).childNodes[0]),h(()=>{let r=n(t);e.textContent=r??""})),p.class=(e,n,t)=>{let r=new Set;return h(()=>{let l=n(t),s=new Set;l&&(typeof l=="string"?l.split(" ").map(i=>s.add(i)):Array.isArray(l)?l.map(i=>i&&s.add(i)):Object.entries(l).map(([i,o])=>o&&s.add(i)));for(let i of r)s.has(i)?s.delete(i):e.classList.remove(i);for(let i of r=s)e.classList.add(i)})},p.style=(e,n,t)=>{let r=e.getAttribute("style");return h(()=>{let l=n(t);if(typeof l=="string")e.setAttribute("style",r+(r.endsWith(";")?"":"; ")+l);else{r&&e.setAttribute("style",r);for(let s in l)s[0]=="-"?e.style.setProperty(s,l[s]):e.style[s]=l[s]}})},p.default=(e,n,t,r)=>{if(!r.startsWith("on"))return h(()=>{let c=n(t);if(r)M(e,r,c);else for(let a in c)M(e,Y(a),c[a])});const l=r.split("..").map(c=>{let a={evt:"",target:e,test:()=>!0};return a.evt=(c.startsWith("on")?c.slice(2):c).replace(/\.(\w+)?-?([-\w]+)?/g,(y,d,g="")=>(a.test=Q[d]?.(a,...g.split("-"))||a.test,"")),a});if(l.length==1)return h(()=>A(n(t),l[0]));let s,i,o,u=0;const m=c=>{o=A(a=>(o(),i=c?.(a),(u=++u%l.length)?m(i):s&&m(s)),l[u])};return h(()=>(s=n(t),!o&&m(s),()=>s=null));function A(c,{evt:a,target:y,test:d,defer:g,stop:N,prevent:S,immediate:P,..._}){g&&(c=g(c));const R=W=>{try{d(W)&&(N&&(P?W.stopImmediatePropagation():W.stopPropagation()),S&&W.preventDefault(),c?.(W))}catch(X){J(X,`:on${a}`,c)}};return y.addEventListener(a,R,_),()=>y.removeEventListener(a,R,_)}};var Q={prevent(e){e.prevent=!0},stop(e){e.stop=!0},immediate(e){e.immediate=!0},once(e){e.once=!0},passive(e){e.passive=!0},capture(e){e.capture=!0},window(e){e.target=window},document(e){e.target=document},throttle(e,n){e.defer=t=>U(t,n?Number(n)||0:108)},debounce(e,n){e.defer=t=>V(t,n?Number(n)||0:108)},outside:e=>n=>{let t=e.target;return!(t.contains(n.target)||n.target.isConnected===!1||t.offsetWidth<1&&t.offsetHeight<1)},self:e=>n=>n.target===e.target,ctrl:(e,...n)=>t=>f.ctrl(t)&&n.every(r=>f[r]?f[r](t):t.key===r),shift:(e,...n)=>t=>f.shift(t)&&n.every(r=>f[r]?f[r](t):t.key===r),alt:(e,...n)=>t=>f.alt(t)&&n.every(r=>f[r]?f[r](t):t.key===r),meta:(e,...n)=>t=>f.meta(t)&&n.every(r=>f[r]?f[r](t):t.key===r),arrow:()=>f.arrow,enter:()=>f.enter,esc:()=>f.esc,tab:()=>f.tab,space:()=>f.space,delete:()=>f.delete,digit:()=>f.digit,letter:()=>f.letter,char:()=>f.char},f={ctrl:e=>e.ctrlKey||e.key==="Control"||e.key==="Ctrl",shift:e=>e.shiftKey||e.key==="Shift",alt:e=>e.altKey||e.key==="Alt",meta:e=>e.metaKey||e.key==="Meta"||e.key==="Command",arrow:e=>e.key.startsWith("Arrow"),enter:e=>e.key==="Enter",esc:e=>e.key.startsWith("Esc"),tab:e=>e.key==="Tab",space:e=>e.key==="\xA0"||e.key==="Space"||e.key===" ",delete:e=>e.key==="Delete"||e.key==="Backspace",digit:e=>/^\d$/.test(e.key),letter:e=>/^\p{L}$/gu.test(e.key),char:e=>/^\S$/.test(e.key)},M=(e,n,t)=>{t==null||t===!1?e.removeAttribute(n):e.setAttribute(n,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},U=(e,n)=>{let t,r,l=s=>{t=!0,setTimeout(()=>{if(t=!1,r)return r=!1,l(s),e(s)},n)};return s=>t?r=!0:(l(s),e(s))},V=(e,n)=>{let t;return r=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(r)},n)}},Y=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(n,t)=>(t?"-":"")+n.toLowerCase());p.value=(e,[n,t],r)=>{const l=e.type==="text"||e.type===""?i=>e.setAttribute("value",e.value=i??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(i,o,u)=>(o=e.selectionStart,u=e.selectionEnd,e.setAttribute("value",e.value=i??""),o&&e.setSelectionRange(o,u)):e.type==="checkbox"?i=>(e.checked=i,M(e,"checked",i)):e.type==="select-one"?i=>{for(let o of e.options)o.value==i?o.setAttribute("selected",""):o.removeAttribute("selected");e.value=i}:e.type==="select-multiple"?i=>{for(let o of e.options)o.removeAttribute("selected");for(let o of i)e.querySelector(`[value="${o}"]`).setAttribute("selected","")}:i=>e.value=i;e.type?.startsWith("select")&&v(e,r);const s=e.type==="checkbox"?i=>t(r,e.checked):e.type==="select-multiple"?i=>t(r,[...e.selectedOptions].map(o=>o.value)):i=>t(r,e.value);return e.oninput=e.onchange=s,h(()=>l(n(r)))},p.value.parse=e=>{let n=[j(e)];try{const t=j(`${e}=__;`);n.push((r,l)=>{r.__=l;let s=t(r,l);return delete r.__,s})}catch{}return n},p.fx=(e,n,t)=>h(()=>n(t)),v.use({compile:e=>v.constructor(`with (arguments[0]) { return ${e} };`)});var ee=v;export{ee as default};
|
package/dist/sprae.min.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sprae.js"],
|
|
4
|
-
"sourcesContent": ["// signal.js\nvar current;\nvar batched;\nvar signal = (v, s, obs = /* @__PURE__ */ new Set()) => (s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v;\n },\n set value(val) {\n if (val === v) return;\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub();\n },\n peek() {\n return v;\n }\n}, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);\nvar effect = (fn, teardown, fx, deps) => (fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try {\n teardown = fn();\n } finally {\n current = prev;\n }\n}, deps = fx.deps = [], fx(), (dep) => {\n teardown?.call?.();\n while (dep = deps.pop()) dep.delete(fx);\n});\nvar computed = (fn, s = signal(), c, e) => (c = {\n get value() {\n e || (e = effect(() => s.value = fn()));\n return s.value;\n },\n peek: s.peek\n}, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);\nvar batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = /* @__PURE__ */ new Set();\n try {\n fn();\n } finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n};\nvar untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || ((fn) => fn());\n untracked = s.untracked || batch;\n}\n\n// store.js\nvar _signals = Symbol(\"signals\");\nvar _change = Symbol(\"length\");\nfunction store(values, parent) {\n if (!values) return values;\n if (values[_signals]) return values;\n if (Array.isArray(values)) return list(values);\n if (values.constructor !== Object) return values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? ++_len.value, 1),\n // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n _len.value;\n return Reflect.ownKeys(signals);\n }\n });\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key);\n if (desc?.get) {\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n } else {\n signals[key] = void 0;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nvar mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 };\nfunction list(values) {\n let lastProp;\n if (values[_signals]) return values;\n let _len = signal(values.length), signals = Array(values.length).fill();\n const state = new Proxy(signals, {\n get(_, key) {\n if (typeof key === \"symbol\") return key === _change ? _len : key === _signals ? signals : signals[key];\n if (key === \"length\") return mut[lastProp] ? _len.peek() : _len.value;\n lastProp = key;\n if (signals[key]) return signals[key].valueOf();\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value;\n },\n set(_, key, v) {\n if (key === \"length\") {\n for (let i = v, l = signals.length; i < l; i++) delete state[i];\n _len.value = signals.length = v;\n return true;\n }\n set(signals, key, v);\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1)\n });\n return state;\n}\nfunction set(signals, key, v) {\n let s = signals[key];\n if (key[0] === \"_\") signals[key] = v;\n else if (!s) {\n signals[key] = s = v?.peek ? v : signal(store(v));\n } else if (v === s.peek()) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek();\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i];\n cur.length = l;\n });\n });\n else {\n s.value = v;\n }\n } else {\n s.value = store(v);\n }\n}\nfunction del(signals, key) {\n const s = signals[key], del2 = s[Symbol.dispose];\n if (del2) delete s[Symbol.dispose];\n delete signals[key];\n del2?.();\n}\n\n// core.js\nvar _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\nvar directive = {};\nvar memo = /* @__PURE__ */ new WeakMap();\nfunction sprae(el, values) {\n if (!el?.childNodes) return;\n if (memo.has(el)) {\n return Object.assign(memo.get(el), values);\n }\n const state = store(values || {}), disposes = [];\n init(el);\n if (!memo.has(el)) memo.set(el, state);\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n };\n return state;\n function init(el2, parent = el2.parentNode) {\n if (!el2.childNodes) return;\n for (let i = 0; i < el2.attributes?.length; ) {\n let attr2 = el2.attributes[i];\n if (attr2.name[0] === \":\") {\n el2.removeAttribute(attr2.name);\n let names = attr2.name.slice(1).split(\":\");\n for (let name of names) {\n let dir = directive[name] || directive.default;\n let evaluate = (dir.parse || parse)(attr2.value);\n let dispose = dir(el2, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n if (memo.has(el2)) return el2[_dispose] && disposes.push(el2[_dispose]);\n if (el2.parentNode !== parent) return;\n } else i++;\n }\n for (let child of [...el2.childNodes]) init(child, el2);\n }\n ;\n}\nvar evalMemo = {};\nvar parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir, expr);\n }\n return evalMemo[expr] = fn;\n};\nvar err = (e, dir, expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n};\nvar compile;\nsprae.use = (s) => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n};\nvar frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n 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 };\n};\n\n// directive/if.js\nvar _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling, holder = document.createTextNode(\"\"), curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n memo.set(ifEl, null);\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);\n }\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n curEl?.remove();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n memo.get(curEl) === null && memo.delete(curEl);\n sprae(curEl, state);\n }\n }\n });\n};\n\n// directive/each.js\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n let cur, keys2, prevl = 0;\n const items = computed(() => {\n keys2 = null;\n let items2 = evaluate(state);\n if (typeof items2 === \"number\") items2 = Array.from({ length: items2 }, (_, i) => i + 1);\n if (items2?.constructor === Object) keys2 = Object.keys(items2), items2 = Object.values(items2);\n return items2 || [];\n });\n const update = () => {\n untracked(() => {\n var _a, _b;\n let i = 0, newItems = items.value, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) {\n s[Symbol.dispose]();\n }\n cur = null, prevl = 0;\n }\n if (newl < prevl) {\n cur.length = newl;\n } else {\n if (!cur) {\n cur = newItems;\n } else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i];\n }\n }\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys2 ? keys2[idx] : idx\n }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n holder.before(el.content || el);\n sprae(el, scope);\n ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {\n el[Symbol.dispose](), el.remove();\n };\n }\n }\n prevl = newl;\n });\n };\n let planned = 0;\n return effect(() => {\n items.value[_change]?.value;\n if (!planned) {\n update();\n queueMicrotask(() => (planned && update(), planned = 0));\n } else planned++;\n });\n};\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n return [itemVar, idxVar, parse(itemsExpr)];\n};\n\n// directive/ref.js\ndirective.ref = (el, expr, state) => {\n state[expr] = el;\n};\ndirective.ref.parse = (expr) => expr;\n\n// directive/with.js\ndirective.with = (el, evaluate, rootState) => {\n let state;\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState));\n });\n};\n\n// directive/html.js\ndirective.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n if (!tpl) return;\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n};\n\n// directive/text.js\ndirective.text = (el, evaluate, state) => {\n if (el.content) el.replaceWith(el = frag(el).childNodes[0]);\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n};\n\n// directive/class.js\ndirective.class = (el, evaluate, state) => {\n let cur = /* @__PURE__ */ new Set();\n return effect(() => {\n let v = evaluate(state);\n let clsx = /* @__PURE__ */ new Set();\n if (v) {\n if (typeof v === \"string\") v.split(\" \").map((cls) => clsx.add(cls));\n else if (Array.isArray(v)) v.map((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n });\n};\n\n// directive/style.js\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(\";\") ? \"\" : \"; \") + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == \"-\" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];\n }\n });\n};\n\n// directive/default.js\ndirective.default = (target, evaluate, state, name) => {\n if (!name.startsWith(\"on\")) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value);\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n const ctxs = name.split(\"..\").map((e) => {\n let ctx = { evt: \"\", target, test: () => true };\n ctx.evt = (e.startsWith(\"on\") ? e.slice(2) : e).replace(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]));\n let startFn, nextFn, off, idx = 0;\n const nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return effect(() => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null));\n function addListener(fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn);\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n }\n ;\n};\nvar mods = {\n // actions\n prevent(ctx) {\n ctx.prevent = true;\n },\n stop(ctx) {\n ctx.stop = true;\n },\n immediate(ctx) {\n ctx.immediate = true;\n },\n // options\n once(ctx) {\n ctx.once = true;\n },\n passive(ctx) {\n ctx.passive = true;\n },\n capture(ctx) {\n ctx.capture = true;\n },\n // target\n window(ctx) {\n ctx.target = window;\n },\n document(ctx) {\n ctx.target = document;\n },\n throttle(ctx, limit) {\n ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);\n },\n debounce(ctx, wait) {\n ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108);\n },\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char\n};\nvar keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\\xA0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key)\n};\nvar attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n};\nvar throttle = (fn, limit) => {\n let pause, planned, block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n if (planned) return planned = false, block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return planned = true;\n block(e);\n return fn(e);\n };\n};\nvar debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\nvar dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n};\n\n// directive/value.js\ndirective.value = (el, [getValue, setValue], state) => {\n const update = el.type === \"text\" || el.type === \"\" ? (value) => el.setAttribute(\"value\", el.value = value == null ? \"\" : value) : el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\" ? (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\n } : el.type === \"select-multiple\" ? (value) => {\n for (let o of el.options) o.removeAttribute(\"selected\");\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute(\"selected\", \"\");\n } : (value) => el.value = value;\n if (el.type?.startsWith(\"select\")) sprae(el, state);\n const handleChange = el.type === \"checkbox\" ? (e) => setValue(state, el.checked) : el.type === \"select-multiple\" ? (e) => setValue(state, [...el.selectedOptions].map((o) => o.value)) : (e) => setValue(state, el.value);\n el.oninput = el.onchange = handleChange;\n return effect(() => update(getValue(state)));\n};\ndirective.value.parse = (expr) => {\n let evaluate = [parse(expr)];\n try {\n const set2 = parse(`${expr}=__;`);\n evaluate.push((state, value) => {\n state.__ = value;\n let result = set2(state, value);\n delete state.__;\n return result;\n });\n } catch (e) {\n }\n return evaluate;\n};\n\n// directive/fx.js\ndirective.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\n};\n\n// sprae.js\nsprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });\nvar sprae_default = sprae;\nexport {\n sprae_default as default\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["// signal.js\nvar current;\nvar batched;\nvar signal = (v, s, obs = /* @__PURE__ */ new Set()) => (s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v;\n },\n set value(val) {\n if (val === v) return;\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub();\n },\n peek() {\n return v;\n }\n}, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);\nvar effect = (fn, teardown, fx, deps) => (fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try {\n teardown = fn();\n } finally {\n current = prev;\n }\n}, deps = fx.deps = [], fx(), (dep) => {\n teardown?.call?.();\n while (dep = deps.pop()) dep.delete(fx);\n});\nvar computed = (fn, s = signal(), c, e) => (c = {\n get value() {\n e || (e = effect(() => s.value = fn()));\n return s.value;\n },\n peek: s.peek\n}, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);\nvar batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = /* @__PURE__ */ new Set();\n try {\n fn();\n } finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n};\nvar untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || ((fn) => fn());\n untracked = s.untracked || batch;\n}\n\n// store.js\nvar _signals = Symbol(\"signals\");\nvar _change = Symbol(\"length\");\nfunction store(values, parent) {\n if (!values) return values;\n if (values[_signals]) return values;\n if (Array.isArray(values)) return list(values);\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? ++_len.value, 1),\n // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n _len.value;\n return Reflect.ownKeys(signals);\n }\n });\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key);\n if (desc?.get) {\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n } else {\n signals[key] = void 0;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nvar mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 };\nfunction list(values) {\n let lastProp;\n if (values[_signals]) return values;\n let _len = signal(values.length), signals = Array(values.length).fill();\n const state = new Proxy(signals, {\n get(_, key) {\n if (typeof key === \"symbol\") return key === _change ? _len : key === _signals ? signals : signals[key];\n if (key === \"length\") return mut[lastProp] ? _len.peek() : _len.value;\n lastProp = key;\n if (signals[key]) return signals[key].valueOf();\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value;\n },\n set(_, key, v) {\n if (key === \"length\") {\n for (let i = v, l = signals.length; i < l; i++) delete state[i];\n _len.value = signals.length = v;\n return true;\n }\n set(signals, key, v);\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1)\n });\n return state;\n}\nfunction set(signals, key, v) {\n let s = signals[key];\n if (key[0] === \"_\") signals[key] = v;\n else if (!s) {\n signals[key] = s = v?.peek ? v : signal(store(v));\n } else if (v === s.peek()) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek();\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i];\n cur.length = l;\n });\n });\n else {\n s.value = v;\n }\n } else {\n s.value = store(v);\n }\n}\nfunction del(signals, key) {\n const s = signals[key], del2 = s[Symbol.dispose];\n if (del2) delete s[Symbol.dispose];\n delete signals[key];\n del2?.();\n}\n\n// core.js\nvar _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\nvar directive = {};\nvar memo = /* @__PURE__ */ new WeakMap();\nfunction sprae(el, values) {\n if (!el?.childNodes) return;\n if (memo.has(el)) {\n return Object.assign(memo.get(el), values);\n }\n const state = store(values || {}), disposes = [];\n init(el);\n if (!memo.has(el)) memo.set(el, state);\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n el[_dispose] = null;\n };\n return state;\n function init(el2, parent = el2.parentNode) {\n if (!el2.childNodes) return;\n for (let i = 0; i < el2.attributes?.length; ) {\n let attr2 = el2.attributes[i];\n if (attr2.name[0] === \":\") {\n el2.removeAttribute(attr2.name);\n let names = attr2.name.slice(1).split(\":\");\n for (let name of names) {\n let dir = directive[name] || directive.default;\n let evaluate = (dir.parse || parse)(attr2.value);\n let dispose = dir(el2, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n if (memo.has(el2)) return el2[_dispose] && disposes.push(el2[_dispose]);\n if (el2.parentNode !== parent) return;\n } else i++;\n }\n for (let child of [...el2.childNodes]) init(child, el2);\n }\n ;\n}\nvar evalMemo = {};\nvar parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir, expr);\n }\n return evalMemo[expr] = fn;\n};\nvar err = (e, dir, expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n};\nvar compile;\nsprae.use = (s) => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n};\nvar frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n 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 };\n};\n\n// directive/if.js\nvar _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling, holder = document.createTextNode(\"\"), curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n memo.set(ifEl, null);\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);\n }\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n memo.get(curEl) === null && memo.delete(curEl);\n sprae(curEl, state);\n }\n }\n });\n};\n\n// directive/each.js\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n let cur, keys2, prevl = 0;\n const items = computed(() => {\n keys2 = null;\n let items2 = evaluate(state);\n if (typeof items2 === \"number\") items2 = Array.from({ length: items2 }, (_, i) => i + 1);\n if (items2?.constructor === Object) keys2 = Object.keys(items2), items2 = Object.values(items2);\n return items2 || [];\n });\n const update = () => {\n untracked(() => {\n var _a, _b;\n let i = 0, newItems = items.value, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) {\n s[Symbol.dispose]();\n }\n cur = null, prevl = 0;\n }\n if (newl < prevl) {\n cur.length = newl;\n } else {\n if (!cur) {\n cur = newItems;\n } else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i];\n }\n }\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys2 ? keys2[idx] : idx\n }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n holder.before(el.content || el);\n sprae(el, scope);\n ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove();\n };\n }\n }\n prevl = newl;\n });\n };\n let planned = 0;\n return effect(() => {\n items.value[_change]?.value;\n if (!planned) {\n update();\n queueMicrotask(() => (planned && update(), planned = 0));\n } else planned++;\n });\n};\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n return [itemVar, idxVar, parse(itemsExpr)];\n};\n\n// directive/ref.js\ndirective.ref = (el, expr, state) => {\n state[expr] = el;\n};\ndirective.ref.parse = (expr) => expr;\n\n// directive/with.js\ndirective.with = (el, evaluate, rootState) => {\n let state;\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState));\n });\n};\n\n// directive/html.js\ndirective.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n if (!tpl) return;\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n};\n\n// directive/text.js\ndirective.text = (el, evaluate, state) => {\n if (el.content) el.replaceWith(el = frag(el).childNodes[0]);\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n};\n\n// directive/class.js\ndirective.class = (el, evaluate, state) => {\n let cur = /* @__PURE__ */ new Set();\n return effect(() => {\n let v = evaluate(state);\n let clsx = /* @__PURE__ */ new Set();\n if (v) {\n if (typeof v === \"string\") v.split(\" \").map((cls) => clsx.add(cls));\n else if (Array.isArray(v)) v.map((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n });\n};\n\n// directive/style.js\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(\";\") ? \"\" : \"; \") + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == \"-\" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];\n }\n });\n};\n\n// directive/default.js\ndirective.default = (target, evaluate, state, name) => {\n if (!name.startsWith(\"on\")) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value);\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n const ctxs = name.split(\"..\").map((e) => {\n let ctx = { evt: \"\", target, test: () => true };\n ctx.evt = (e.startsWith(\"on\") ? e.slice(2) : e).replace(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]));\n let startFn, nextFn, off, idx = 0;\n const nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return effect(() => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null));\n function addListener(fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn);\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n }\n ;\n};\nvar mods = {\n // actions\n prevent(ctx) {\n ctx.prevent = true;\n },\n stop(ctx) {\n ctx.stop = true;\n },\n immediate(ctx) {\n ctx.immediate = true;\n },\n // options\n once(ctx) {\n ctx.once = true;\n },\n passive(ctx) {\n ctx.passive = true;\n },\n capture(ctx) {\n ctx.capture = true;\n },\n // target\n window(ctx) {\n ctx.target = window;\n },\n document(ctx) {\n ctx.target = document;\n },\n throttle(ctx, limit) {\n ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);\n },\n debounce(ctx, wait) {\n ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108);\n },\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char\n};\nvar keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\\xA0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key)\n};\nvar attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n};\nvar throttle = (fn, limit) => {\n let pause, planned, block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n if (planned) return planned = false, block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return planned = true;\n block(e);\n return fn(e);\n };\n};\nvar debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\nvar dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? \"-\" : \"\") + match.toLowerCase());\n};\n\n// directive/value.js\ndirective.value = (el, [getValue, setValue], state) => {\n const update = el.type === \"text\" || el.type === \"\" ? (value) => el.setAttribute(\"value\", el.value = value == null ? \"\" : value) : el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\" ? (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\n } : el.type === \"select-multiple\" ? (value) => {\n for (let o of el.options) o.removeAttribute(\"selected\");\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute(\"selected\", \"\");\n } : (value) => el.value = value;\n if (el.type?.startsWith(\"select\")) sprae(el, state);\n const handleChange = el.type === \"checkbox\" ? (e) => setValue(state, el.checked) : el.type === \"select-multiple\" ? (e) => setValue(state, [...el.selectedOptions].map((o) => o.value)) : (e) => setValue(state, el.value);\n el.oninput = el.onchange = handleChange;\n return effect(() => update(getValue(state)));\n};\ndirective.value.parse = (expr) => {\n let evaluate = [parse(expr)];\n try {\n const set2 = parse(`${expr}=__;`);\n evaluate.push((state, value) => {\n state.__ = value;\n let result = set2(state, value);\n delete state.__;\n return result;\n });\n } catch (e) {\n }\n return evaluate;\n};\n\n// directive/fx.js\ndirective.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\n};\n\n// sprae.js\nsprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });\nvar sprae_default = sprae;\nexport {\n sprae_default as default\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["current", "batched", "signal", "v", "s", "obs", "val", "sub", "effect", "fn", "teardown", "fx", "deps", "prev", "dep", "computed", "c", "e", "batch", "fxs", "untracked", "use", "_signals", "_change", "store", "values", "parent", "list", "signals", "_len", "state", "_", "key", "set", "del", "desc", "mut", "lastProp", "i", "l", "cur", "del2", "_dispose", "directive", "memo", "sprae", "el", "disposes", "init", "el2", "attr2", "names", "name", "dir", "evaluate", "parse", "dispose", "child", "evalMemo", "expr", "compile", "err", "frag", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "next", "holder", "curEl", "ifEl", "elseEl", "newEl", "itemVar", "idxVar", "keys2", "prevl", "items", "items2", "update", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "leftSide", "itemsExpr", "rootState", "value", "clsx", "cls", "v2", "k", "initStyle", "target", "attr", "dashcase", "ctxs", "ctx", "match", "mod", "param", "mods", "addListener", "startFn", "nextFn", "off", "nextListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "limit", "throttle", "wait", "debounce", "keys", "p", "pause", "block", "timeout", "str", "getValue", "setValue", "from", "to", "handleChange", "set2", "result", "sprae_default"]
|
|
7
7
|
}
|
package/dist/sprae.umd.js
CHANGED
|
@@ -86,7 +86,7 @@ function store(values, parent) {
|
|
|
86
86
|
if (!values) return values;
|
|
87
87
|
if (values[_signals]) return values;
|
|
88
88
|
if (Array.isArray(values)) return list(values);
|
|
89
|
-
if (values.constructor !== Object) return values;
|
|
89
|
+
if (values.constructor !== Object || values[Symbol.toStringTag]) return values;
|
|
90
90
|
let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);
|
|
91
91
|
const state = new Proxy(signals, {
|
|
92
92
|
get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),
|
|
@@ -186,6 +186,7 @@ function sprae(el, values) {
|
|
|
186
186
|
el[_dispose] = () => {
|
|
187
187
|
while (disposes.length) disposes.pop()();
|
|
188
188
|
memo.delete(el);
|
|
189
|
+
el[_dispose] = null;
|
|
189
190
|
};
|
|
190
191
|
return state;
|
|
191
192
|
function init2(el2, parent = el2.parentNode) {
|
|
@@ -279,7 +280,7 @@ var init_if = __esm({
|
|
|
279
280
|
const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;
|
|
280
281
|
if (next) next[_prevIf] = newEl === ifEl;
|
|
281
282
|
if (curEl != newEl) {
|
|
282
|
-
curEl
|
|
283
|
+
if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();
|
|
283
284
|
if (curEl = newEl) {
|
|
284
285
|
holder.before(curEl.content || curEl);
|
|
285
286
|
memo.get(curEl) === null && memo.delete(curEl);
|
|
@@ -337,7 +338,7 @@ var init_each = __esm({
|
|
|
337
338
|
holder.before(el.content || el);
|
|
338
339
|
sprae(el, scope);
|
|
339
340
|
((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {
|
|
340
|
-
el[Symbol.dispose](), el.remove();
|
|
341
|
+
el[Symbol.dispose]?.(), el.remove();
|
|
341
342
|
};
|
|
342
343
|
}
|
|
343
344
|
}
|
package/dist/sprae.umd.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/html.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/default.js", "../directive/value.js", "../directive/fx.js", "../sprae.js", "../directive/data.js", "../directive/aria.js", "../sprae.umd.cjs"],
|
|
4
|
-
"sourcesContent": ["// ulive copy, stable minimal implementation\nlet current, batched;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = new Set;\n try { fn(); }\n finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n },\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n\n// signals adapter - allows switching signals implementation and not depend on core\n\nexport function use(s) {\n signal = s.signal\n effect = s.effect\n computed = s.computed\n batch = s.batch || (fn => fn())\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, effect, batch, untracked } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('length');\n\n// object store is not lazy\nexport default function store(values, parent) {\n if (!values) return values\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // redirect for optimized array store\n if (Array.isArray(values)) return list(values)\n\n // ignore non-objects\n if (values.constructor !== Object) return values;\n\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : (signals[key]?.valueOf()),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? (++_len.value), 1), // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n // subscribe to length when object is spread\n _len.value\n return Reflect.ownKeys(signals);\n },\n })\n\n // init signals for values\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key)\n\n // getter turns into computed\n if (desc?.get) {\n // stash setter\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n }\n else {\n // init blank signal - make sure we don't take prototype one\n signals[key] = undefined\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 }\n\n// array store - signals are lazy since arrays can be very large & expensive\nexport function list(values) {\n // track last accessed property to find out if .length was directly accessed from expression or via .push/etc method\n let lastProp\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // .length signal is stored separately, since it cannot be replaced on array\n let _len = signal(values.length),\n // gotta fill with null since proto methods like .reduce may fail\n signals = Array(values.length).fill();\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get(_, key) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof key === 'symbol') return key === _change ? _len : key === _signals ? signals : signals[key]\n\n // console.log('get', key)\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut[lastProp] ? _len.peek() : _len.value;\n\n lastProp = key;\n\n if (signals[key]) return signals[key].valueOf()\n\n // I hope reading values here won't diverge from signals\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value\n },\n\n set(_, key, v) {\n // console.log('set', key, v)\n // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v, l = signals.length; i < l; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n return true\n }\n\n set(signals, key, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1),\n\n })\n\n return state\n}\n\n// set/update signal value\nfunction set(signals, key, v) {\n let s = signals[key]\n\n // untracked\n if (key[0] === '_') signals[key] = v\n // new property\n else if (!s) {\n // preserve signal value as is\n signals[key] = s = v?.peek ? v : signal(store(v))\n }\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === s.peek());\n // stashed _set for value with getter/setter\n else if (s._set) s._set(v)\n // patch array\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek()\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i]\n cur.length = l // forces deleting tail signals\n })\n })\n else {\n s.value = v\n }\n }\n // .x = y\n else {\n s.value = store(v)\n }\n}\n\n// delete signal\nfunction del(signals, key) {\n const s = signals[key], del = s[Symbol.dispose]\n if (del) delete s[Symbol.dispose]\n delete signals[key]\n del?.()\n}\n", "import { use } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\n// reserved directives - order matters!\nexport const directive = {};\n\n// every element that's in cache === directly spraed and un subsequent sprae is just updated (like each)\nexport const memo = new WeakMap();\n\n// sprae element: apply directives\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by :each with new objects with old keys needs an update\n if (memo.has(el)) {\n // we rewrite signals instead of update, because user should have what he provided\n return Object.assign(memo.get(el), values)\n }\n\n // take over existing state instead of creating clone\n const state = store(values || {}), disposes = []\n\n init(el);\n\n // if element was spraed by :with or :each instruction - skip, otherwise save\n if (!memo.has(el)) memo.set(el, state);\n\n // disposer unspraes all internal elements\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n }\n\n return state;\n\n function init(el, parent = el.parentNode) {\n if (!el.childNodes) return // ignore text nodes, comments etc\n\n // init generic-name attributes second\n for (let i = 0; i < el.attributes?.length;) {\n let attr = el.attributes[i];\n\n if (attr.name[0] === ':') {\n el.removeAttribute(attr.name);\n\n // multiple attributes like :id:for=\"\"\n let names = attr.name.slice(1).split(':')\n\n // NOTE: secondary directives don't stop flow nor extend state, so no need to check\n for (let name of names) {\n let dir = directive[name] || directive.default\n let evaluate = (dir.parse || parse)(attr.value)\n let dispose = dir(el, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n\n // stop if element was spraed by internal directive\n if (memo.has(el)) return el[_dispose] && disposes.push(el[_dispose])\n\n // stop if element is skipped (detached) like in case of :if or :each\n if (el.parentNode !== parent) return\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child, el);\n };\n}\n\n\n// compiler\nconst evalMemo = {};\nexport const parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n // runtime errors\n return evalMemo[expr] = fn\n}\n\n// wrapped call\nexport const err = (e, dir, expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\nexport let compile\n\n// configure signals/compile\n// it's more compact than using sprae.signal = signal etc.\nsprae.use = s => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n}\n\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true),\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) }\n }\n}\n", "import sprae, { directive, memo, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling,\n holder = document.createTextNode(''),\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n memo.set(ifEl, null) // mark all el as fake-spraed, because we have to sprae for real on insert\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null)\n }\n\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n curEl?.remove()\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n memo.get(curEl) === null && memo.delete(curEl) // remove fake memo to sprae as new\n sprae(curEl, state)\n }\n }\n });\n};\n", "import sprae, { directive, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect, untracked, computed } from '../signal.js';\n\n\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n // we need :if to be able to replace holder instead of tpl for :if :each case\n const holder = (document.createTextNode(\"\"));\n tpl.replaceWith(holder);\n\n // we re-create items any time new items are produced\n let cur, keys, prevl = 0\n\n // separate computed effect reduces number of needed updates for the effect\n const items = computed(() => {\n keys = null\n let items = evaluate(state)\n if (typeof items === \"number\") items = Array.from({ length: items }, (_, i) => i + 1)\n if (items?.constructor === Object) keys = Object.keys(items), items = Object.values(items)\n return items || []\n })\n\n const update = () => {\n // NOTE: untracked avoids rerendering full list whenever internal items or props change\n untracked(() => {\n let i = 0, newItems = items.value, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !(cur[_change])) {\n for (let s of cur[_signals] || []) { s[Symbol.dispose]() }\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) {\n cur.length = newl\n }\n // update, append, init\n else {\n // init\n if (!cur) {\n cur = newItems\n }\n // update\n else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i]\n }\n }\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, scope);\n\n // signal/holder disposal removes element\n ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {\n el[Symbol.dispose](), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n }\n\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just on init) since preact unsubscribes unused signals\n items.value[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned) {\n update()\n queueMicrotask(() => (planned && update(), planned = 0))\n } else planned++\n })\n}\n\n\n// redefine parser to exclude `[a in] b`\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n\n return [itemVar, idxVar, parse(itemsExpr)]\n}\n", "import { directive } from \"../core.js\";\nimport { _change, _signals } from \"../store.js\";\n\n// ref must be last within primaries, since that must be skipped by :each, but before secondaries\ndirective.ref = (el, expr, state) => {\n state[expr] = el\n}\n\ndirective.ref.parse = expr => expr\n", "import sprae, { directive } from \"../core.js\";\nimport store, { _signals } from '../store.js';\nimport { effect } from \"../signal.js\";\n\ndirective.with = (el, evaluate, rootState) => {\n let state\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState))\n })\n};\n", "import sprae, { directive } from \"../core.js\";\n\ndirective.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n\n if (!tpl) return\n\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n};\n", "import { directive, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set text content\ndirective.text = (el, evaluate, state) => {\n // <template :text=\"a\"/> or previously initialized template\n if (el.content) el.replaceWith(el = frag(el).childNodes[0])\n\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.class = (el, evaluate, state) => {\n let cur = new Set\n return effect(() => {\n let v = evaluate(state);\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n });\n};\n", "import { directive, err } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set generic property directive\ndirective.default = (target, evaluate, state, name) => {\n // simple prop\n if (!name.startsWith('on')) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value)\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n const ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // single event\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]))\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n const nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return effect(() => (\n startFn = evaluate(state),\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n ))\n\n // add listener with the context\n function addListener(fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn)\n\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n};\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n\n throttle(ctx, limit) { ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108); },\n debounce(ctx, wait) { ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108); },\n\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char,\n};\n\n// key testers\nconst keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key),\n};\n\n// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i?'-':'') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { directive, parse } from \"../core.js\";\nimport { attr } from './default.js';\nimport { effect } from \"../signal.js\";\n\n// connect expr to element value\ndirective.value = (el, [getValue, setValue], state) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // select options must be initialized before calling an update\n if (el.type?.startsWith('select')) sprae(el, state)\n\n // bind ui back to value\n const handleChange = el.type === 'checkbox' ? e => setValue(state, el.checked) : el.type === 'select-multiple' ? e => setValue(state, [...el.selectedOptions].map(o => o.value)) : e => setValue(state, el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually - it saves 5 loc\n\n return effect(() => update(getValue(state)));\n};\n\ndirective.value.parse = expr => {\n let evaluate = [parse(expr)]\n // catch wrong assigns like `123 = arguments[1]`, `foo?.bar = arguments[1]`\n try {\n const set = parse(`${expr}=__;`);\n // FIXME: if there's a simpler way to set value in justin?\n evaluate.push((state, value) => {\n state.__ = value\n let result = set(state, value)\n delete state.__\n return result\n })\n }\n catch (e) { }\n return evaluate\n}\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\n};\n", "import sprae from './core.js'\n\n// default directives\nimport './directive/if.js'\nimport './directive/each.js'\nimport './directive/ref.js'\nimport './directive/with.js'\nimport './directive/html.js'\nimport './directive/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\n\n// default compiler (indirect new Function to avoid detector)\nsprae.use({ compile: expr => sprae.constructor(`with (arguments[0]) { return ${expr} };`) })\n\nexport default sprae\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective['data'] = (el, evaluate, state) => {\n return effect(() => {\n let value = evaluate(state)\n for (let key in value) el.dataset[key] = value[key];\n })\n}\n", "import { directive } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\nimport { effect } from \"../signal.js\";\n\ndirective['aria'] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '');\n }\n return effect(() => update(evaluate(state)))\n}\n", "// autonomous standalone sprae version - expected to run via CDN, CJS or AMD\n\nconst { default: sprae } = require(\"./sprae.js\");\n\n// include everything\nrequire('./directive/data.js');\nrequire('./directive/aria.js');\nrequire('./directive/html.js');\n\n// expose global\nmodule.exports = sprae\n\n// autoinit if wanted\nconst init = document.currentScript?.getAttribute('init') || null\nif (init) sprae(document.documentElement, JSON.parse(init));\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["// ulive copy, stable minimal implementation\nlet current, batched;\n\nexport let signal = (v, s, obs = new Set) => (\n s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n },\n s.toJSON = s.then = s.toString = s.valueOf = () => s.value,\n s\n),\n effect = (fn, teardown, fx, deps) => (\n fx = (prev) => {\n teardown?.call?.();\n prev = current, current = fx;\n try { teardown = fn(); } finally { current = prev; }\n },\n deps = fx.deps = [],\n\n fx(),\n (dep) => { teardown?.call?.(); while (dep = deps.pop()) dep.delete(fx); }\n ),\n computed = (fn, s = signal(), c, e) => (\n c = {\n get value() {\n e ||= effect(() => s.value = fn());\n return s.value\n },\n peek: s.peek\n },\n c.toJSON = c.then = c.toString = c.valueOf = () => c.value,\n c\n ),\n batch = (fn) => {\n let fxs = batched;\n if (!fxs) batched = new Set;\n try { fn(); }\n finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n },\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n\n// signals adapter - allows switching signals implementation and not depend on core\n\nexport function use(s) {\n signal = s.signal\n effect = s.effect\n computed = s.computed\n batch = s.batch || (fn => fn())\n untracked = s.untracked || batch\n}\n", "// signals-based proxy\nimport { signal, computed, effect, batch, untracked } from './signal.js'\n\nexport const _signals = Symbol('signals'), _change = Symbol('length');\n\n// object store is not lazy\nexport default function store(values, parent) {\n if (!values) return values\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // redirect for optimized array store\n if (Array.isArray(values)) return list(values)\n\n // ignore non-objects or custom objects\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : (signals[key]?.valueOf()),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? (++_len.value), 1), // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n // subscribe to length when object is spread\n _len.value\n return Reflect.ownKeys(signals);\n },\n })\n\n // init signals for values\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key)\n\n // getter turns into computed\n if (desc?.get) {\n // stash setter\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n }\n else {\n // init blank signal - make sure we don't take prototype one\n signals[key] = undefined\n set(signals, key, values[key]);\n }\n }\n\n return state\n}\n\n// length changing methods\nconst mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 }\n\n// array store - signals are lazy since arrays can be very large & expensive\nexport function list(values) {\n // track last accessed property to find out if .length was directly accessed from expression or via .push/etc method\n let lastProp\n\n // ignore existing state as argument\n if (values[_signals]) return values;\n\n // .length signal is stored separately, since it cannot be replaced on array\n let _len = signal(values.length),\n // gotta fill with null since proto methods like .reduce may fail\n signals = Array(values.length).fill();\n\n // proxy conducts prop access to signals\n const state = new Proxy(signals, {\n get(_, key) {\n // covers Symbol.isConcatSpreadable etc.\n if (typeof key === 'symbol') return key === _change ? _len : key === _signals ? signals : signals[key]\n\n // console.log('get', key)\n // if .length is read within .push/etc - peek signal to avoid recursive subscription\n if (key === 'length') return mut[lastProp] ? _len.peek() : _len.value;\n\n lastProp = key;\n\n if (signals[key]) return signals[key].valueOf()\n\n // I hope reading values here won't diverge from signals\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value\n },\n\n set(_, key, v) {\n // console.log('set', key, v)\n // .length\n if (key === 'length') {\n // force cleaning up tail\n for (let i = v, l = signals.length; i < l; i++) delete state[i]\n // .length = N directly\n _len.value = signals.length = v;\n return true\n }\n\n set(signals, key, v)\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1\n\n return true\n },\n\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1),\n\n })\n\n return state\n}\n\n// set/update signal value\nfunction set(signals, key, v) {\n let s = signals[key]\n\n // untracked\n if (key[0] === '_') signals[key] = v\n // new property\n else if (!s) {\n // preserve signal value as is\n signals[key] = s = v?.peek ? v : signal(store(v))\n }\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n else if (v === s.peek());\n // stashed _set for value with getter/setter\n else if (s._set) s._set(v)\n // patch array\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek()\n // if we update plain array (stored in signal) - take over value instead\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i]\n cur.length = l // forces deleting tail signals\n })\n })\n else {\n s.value = v\n }\n }\n // .x = y\n else {\n s.value = store(v)\n }\n}\n\n// delete signal\nfunction del(signals, key) {\n const s = signals[key], del = s[Symbol.dispose]\n if (del) delete s[Symbol.dispose]\n delete signals[key]\n del?.()\n}\n", "import { use } from \"./signal.js\";\nimport store, { _signals } from './store.js';\n\n// polyfill\nconst _dispose = (Symbol.dispose ||= Symbol(\"dispose\"));\n\n// reserved directives - order matters!\nexport const directive = {};\n\n// every element that's in cache === directly spraed and un subsequent sprae is just updated (like each)\nexport const memo = new WeakMap();\n\n// sprae element: apply directives\nexport default function sprae(el, values) {\n // text nodes, comments etc\n if (!el?.childNodes) return\n\n // repeated call can be caused by :each with new objects with old keys needs an update\n if (memo.has(el)) {\n // we rewrite signals instead of update, because user should have what he provided\n return Object.assign(memo.get(el), values)\n }\n\n // take over existing state instead of creating clone\n const state = store(values || {}), disposes = []\n\n init(el);\n\n // if element was spraed by :with or :each instruction - skip, otherwise save\n if (!memo.has(el)) memo.set(el, state);\n\n // disposer unspraes all internal elements\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n el[_dispose] = null;\n }\n\n return state;\n\n function init(el, parent = el.parentNode) {\n if (!el.childNodes) return // ignore text nodes, comments etc\n\n // init generic-name attributes second\n for (let i = 0; i < el.attributes?.length;) {\n let attr = el.attributes[i];\n\n if (attr.name[0] === ':') {\n el.removeAttribute(attr.name);\n\n // multiple attributes like :id:for=\"\"\n let names = attr.name.slice(1).split(':')\n\n // NOTE: secondary directives don't stop flow nor extend state, so no need to check\n for (let name of names) {\n let dir = directive[name] || directive.default\n let evaluate = (dir.parse || parse)(attr.value)\n let dispose = dir(el, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n\n // stop if element was spraed by internal directive\n if (memo.has(el)) return el[_dispose] && disposes.push(el[_dispose])\n\n // stop if element is skipped (detached) like in case of :if or :each\n if (el.parentNode !== parent) return\n } else i++;\n }\n\n for (let child of [...el.childNodes]) init(child, el);\n };\n}\n\n\n// compiler\nconst evalMemo = {};\nexport const parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn\n\n // static-time errors\n try { fn = compile(expr) }\n catch (e) { err(e, dir, expr) }\n\n // runtime errors\n return evalMemo[expr] = fn\n}\n\n// wrapped call\nexport const err = (e, dir, expr = '') => {\n throw Object.assign(e, { message: `\u2234 ${e.message}\\n\\n${dir}${expr ? `=\"${expr}\"\\n\\n` : \"\"}`, expr })\n}\n\nexport let compile\n\n// configure signals/compile\n// it's more compact than using sprae.signal = signal etc.\nsprae.use = s => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n}\n\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true),\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) }\n }\n}\n", "import sprae, { directive, memo, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// :if is interchangeable with :each depending on order, :if :each or :each :if have different meanings\n// as for :if :with - :if must init first, since it is lazy, to avoid initializing component ahead of time by :with\n// we consider :with={x} :if={x} case insignificant\nconst _prevIf = Symbol(\"if\");\ndirective.if = (el, evaluate, state) => {\n let next = el.nextElementSibling,\n holder = document.createTextNode(''),\n curEl, ifEl, elseEl;\n\n el.replaceWith(holder)\n\n ifEl = el.content ? frag(el) : el\n memo.set(ifEl, null) // mark all el as fake-spraed, because we have to sprae for real on insert\n\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n // if next is :else :if - leave it for its own :if handler\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null)\n }\n\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl\n if (curEl != newEl) {\n // disable effects on removed elements to avoid internal effects from triggering on possibly null values\n if (curEl) curEl.remove(), curEl[Symbol.dispose]?.()\n if (curEl = newEl) {\n holder.before(curEl.content || curEl)\n memo.get(curEl) === null && memo.delete(curEl) // remove fake memo to sprae as new\n sprae(curEl, state)\n }\n }\n });\n};\n", "import sprae, { directive, frag, parse } from \"../core.js\";\nimport store, { _change, _signals } from \"../store.js\";\nimport { effect, untracked, computed } from '../signal.js';\n\n\ndirective.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n // we need :if to be able to replace holder instead of tpl for :if :each case\n const holder = (document.createTextNode(\"\"));\n tpl.replaceWith(holder);\n\n // we re-create items any time new items are produced\n let cur, keys, prevl = 0\n\n // separate computed effect reduces number of needed updates for the effect\n const items = computed(() => {\n keys = null\n let items = evaluate(state)\n if (typeof items === \"number\") items = Array.from({ length: items }, (_, i) => i + 1)\n if (items?.constructor === Object) keys = Object.keys(items), items = Object.values(items)\n return items || []\n })\n\n const update = () => {\n // NOTE: untracked avoids rerendering full list whenever internal items or props change\n untracked(() => {\n let i = 0, newItems = items.value, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !(cur[_change])) {\n for (let s of cur[_signals] || []) { s[Symbol.dispose]() }\n cur = null, prevl = 0\n }\n\n // delete\n if (newl < prevl) {\n cur.length = newl\n }\n // update, append, init\n else {\n // init\n if (!cur) {\n cur = newItems\n }\n // update\n else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i]\n }\n }\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n let idx = i,\n scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys ? keys[idx] : idx\n }, state),\n el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, scope);\n\n // signal/holder disposal removes element\n ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n }\n\n let planned = 0\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just on init) since preact unsubscribes unused signals\n items.value[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n if (!planned) {\n update()\n queueMicrotask(() => (planned && update(), planned = 0))\n } else planned++\n })\n}\n\n\n// redefine parser to exclude `[a in] b`\ndirective.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n\n return [itemVar, idxVar, parse(itemsExpr)]\n}\n", "import { directive } from \"../core.js\";\nimport { _change, _signals } from \"../store.js\";\n\n// ref must be last within primaries, since that must be skipped by :each, but before secondaries\ndirective.ref = (el, expr, state) => {\n state[expr] = el\n}\n\ndirective.ref.parse = expr => expr\n", "import sprae, { directive } from \"../core.js\";\nimport store, { _signals } from '../store.js';\nimport { effect } from \"../signal.js\";\n\ndirective.with = (el, evaluate, rootState) => {\n let state\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState))\n })\n};\n", "import sprae, { directive } from \"../core.js\";\n\ndirective.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n\n if (!tpl) return\n\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n};\n", "import { directive, frag } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set text content\ndirective.text = (el, evaluate, state) => {\n // <template :text=\"a\"/> or previously initialized template\n if (el.content) el.replaceWith(el = frag(el).childNodes[0])\n\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.class = (el, evaluate, state) => {\n let cur = new Set\n return effect(() => {\n let v = evaluate(state);\n let clsx = new Set;\n if (v) {\n if (typeof v === \"string\") v.split(' ').map(cls => clsx.add(cls));\n else if (Array.isArray(v)) v.map(v => v && clsx.add(v));\n else Object.entries(v).map(([k, v]) => v && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls); else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls)\n });\n};\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(';') ? '' : '; ') + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == '-' ? (el.style.setProperty(k, v[k])) : el.style[k] = v[k]\n }\n });\n};\n", "import { directive, err } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\n// set generic property directive\ndirective.default = (target, evaluate, state, name) => {\n // simple prop\n if (!name.startsWith('on')) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value)\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n\n // bind event to a target\n // NOTE: if you decide to remove chain of events, thing again - that's unique feature of sprae, don't diminish your own value.\n // ona..onb\n const ctxs = name.split('..').map(e => {\n let ctx = { evt: '', target, test: () => true };\n ctx.evt = (e.startsWith('on') ? e.slice(2) : e).replace(/\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = '') => (ctx.test = mods[mod]?.(ctx, ...param.split('-')) || ctx.test, '')\n );\n return ctx;\n });\n\n // single event\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]))\n\n // events cycler\n let startFn, nextFn, off, idx = 0\n const nextListener = (fn) => {\n off = addListener((e) => (\n off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : (startFn && nextListener(startFn))\n ), ctxs[idx]);\n }\n\n return effect(() => (\n startFn = evaluate(state),\n !off && nextListener(startFn),\n () => startFn = null // nil startFn to autodispose chain\n ))\n\n // add listener with the context\n function addListener(fn, { evt, target, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn)\n\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e))\n } catch (error) { err(error, `:on${evt}`, fn) }\n };\n\n target.addEventListener(evt, cb, opts)\n return () => target.removeEventListener(evt, cb, opts)\n };\n\n};\n\n// event modifiers\nconst mods = {\n // actions\n prevent(ctx) { ctx.prevent = true; },\n stop(ctx) { ctx.stop = true; },\n immediate(ctx) { ctx.immediate = true; },\n\n // options\n once(ctx) { ctx.once = true; },\n passive(ctx) { ctx.passive = true; },\n capture(ctx) { ctx.capture = true; },\n\n // target\n window(ctx) { ctx.target = window; },\n document(ctx) { ctx.target = document; },\n\n throttle(ctx, limit) { ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108); },\n debounce(ctx, wait) { ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108); },\n\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => (keys[p] ? keys[p](e) : e.key === p)),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char,\n};\n\n// key testers\nconst keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key),\n};\n\n// set attr\nexport const attr = (el, name, v) => {\n if (v == null || v === false) el.removeAttribute(name);\n else el.setAttribute(name, v === true ? \"\" : typeof v === \"number\" || typeof v === \"string\" ? v : \"\");\n}\n\n// create delayed fns\nconst throttle = (fn, limit) => {\n let pause, planned,\n block = (e) => {\n pause = true;\n setTimeout(() => {\n pause = false;\n // if event happened during blocked time, it schedules call by the end\n if (planned) return (planned = false), block(e), fn(e);\n }, limit);\n };\n return (e) => {\n if (pause) return (planned = true);\n block(e);\n return fn(e);\n };\n};\n\nconst debounce = (fn, wait) => {\n let timeout;\n return (e) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n timeout = null;\n fn(e);\n }, wait);\n };\n};\n\nexport const dashcase = (str) => {\n return str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i?'-':'') + match.toLowerCase());\n}\n", "import sprae from \"../core.js\";\nimport { directive, parse } from \"../core.js\";\nimport { attr } from './default.js';\nimport { effect } from \"../signal.js\";\n\n// connect expr to element value\ndirective.value = (el, [getValue, setValue], state) => {\n const update =\n (el.type === \"text\" || el.type === \"\") ?\n (value) => el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)) :\n (el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\") ?\n (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart),\n (to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n from && el.setSelectionRange(from, to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n\n // select options must be initialized before calling an update\n if (el.type?.startsWith('select')) sprae(el, state)\n\n // bind ui back to value\n const handleChange = el.type === 'checkbox' ? e => setValue(state, el.checked) : el.type === 'select-multiple' ? e => setValue(state, [...el.selectedOptions].map(o => o.value)) : e => setValue(state, el.value)\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually - it saves 5 loc\n\n return effect(() => update(getValue(state)));\n};\n\ndirective.value.parse = expr => {\n let evaluate = [parse(expr)]\n // catch wrong assigns like `123 = arguments[1]`, `foo?.bar = arguments[1]`\n try {\n const set = parse(`${expr}=__;`);\n // FIXME: if there's a simpler way to set value in justin?\n evaluate.push((state, value) => {\n state.__ = value\n let result = set(state, value)\n delete state.__\n return result\n })\n }\n catch (e) { }\n return evaluate\n}\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\n};\n", "import sprae from './core.js'\n\n// default directives\nimport './directive/if.js'\nimport './directive/each.js'\nimport './directive/ref.js'\nimport './directive/with.js'\nimport './directive/html.js'\nimport './directive/text.js'\nimport './directive/class.js'\nimport './directive/style.js'\nimport './directive/value.js'\nimport './directive/fx.js'\nimport './directive/default.js'\n\n// default compiler (indirect new Function to avoid detector)\nsprae.use({ compile: expr => sprae.constructor(`with (arguments[0]) { return ${expr} };`) })\n\nexport default sprae\n", "import { directive } from \"../core.js\";\nimport { effect } from \"../signal.js\";\n\ndirective['data'] = (el, evaluate, state) => {\n return effect(() => {\n let value = evaluate(state)\n for (let key in value) el.dataset[key] = value[key];\n })\n}\n", "import { directive } from \"../core.js\";\nimport { attr, dashcase } from './default.js'\nimport { effect } from \"../signal.js\";\n\ndirective['aria'] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, 'aria-' + dashcase(key), value[key] == null ? null : value[key] + '');\n }\n return effect(() => update(evaluate(state)))\n}\n", "// autonomous standalone sprae version - expected to run via CDN, CJS or AMD\n\nconst { default: sprae } = require(\"./sprae.js\");\n\n// include everything\nrequire('./directive/data.js');\nrequire('./directive/aria.js');\nrequire('./directive/html.js');\n\n// expose global\nmodule.exports = sprae\n\n// autoinit if wanted\nconst init = document.currentScript?.getAttribute('init') || null\nif (init) sprae(document.documentElement, JSON.parse(init));\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["del", "init", "el", "attr", "keys", "items", "v", "target", "set", "sprae"]
|
|
7
7
|
}
|
package/dist/sprae.umd.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(function(C,g){typeof exports=="object"&&typeof module=="object"?module.exports=g():typeof define=="function"&&define.amd?define("sprae",[],g):typeof exports=="object"?exports.sprae=g():C.sprae=g()})(typeof self<"u"?self:typeof globalThis<"u"?globalThis:void 0,()=>{var C={},g={exports:C},B=Object.defineProperty,fe=Object.getOwnPropertyDescriptor,V=Object.getOwnPropertyNames,de=Object.prototype.hasOwnProperty,p=(e,r)=>function(){return e&&(r=(0,e[V(e)[0]])(e=0)),r},pe=(e,r)=>{for(var t in r)B(e,t,{get:r[t],enumerable:!0})},
|
|
1
|
+
(function(C,g){typeof exports=="object"&&typeof module=="object"?module.exports=g():typeof define=="function"&&define.amd?define("sprae",[],g):typeof exports=="object"?exports.sprae=g():C.sprae=g()})(typeof self<"u"?self:typeof globalThis<"u"?globalThis:void 0,()=>{var C={},g={exports:C},B=Object.defineProperty,fe=Object.getOwnPropertyDescriptor,V=Object.getOwnPropertyNames,de=Object.prototype.hasOwnProperty,p=(e,r)=>function(){return e&&(r=(0,e[V(e)[0]])(e=0)),r},pe=(e,r)=>{for(var t in r)B(e,t,{get:r[t],enumerable:!0})},ye=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of V(r))!de.call(e,s)&&s!==t&&B(e,s,{get:()=>r[s],enumerable:!(i=fe(r,s))||i.enumerable});return e},he=e=>ye(B({},"__esModule",{value:!0}),e);function me(e){P=e.signal,h=e.effect,J=e.computed,R=e.batch||(r=>r()),q=e.untracked||R}var A,E,P,h,J,R,q,b=p({"signal.js"(){P=(e,r,t=new Set)=>(r={get value(){return A?.deps.push(t.add(A)),e},set value(i){if(i!==e){e=i;for(let s of t)E?E.add(s):s()}},peek(){return e}},r.toJSON=r.then=r.toString=r.valueOf=()=>r.value,r),h=(e,r,t,i)=>(t=s=>{r?.call?.(),s=A,A=t;try{r=e()}finally{A=s}},i=t.deps=[],t(),s=>{for(r?.call?.();s=i.pop();)s.delete(t)}),J=(e,r=P(),t,i)=>(t={get value(){return i||(i=h(()=>r.value=e())),r.value},peek:r.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),R=e=>{let r=E;r||(E=new Set);try{e()}finally{if(!r){r=E,E=null;for(const t of r)t()}}},q=(e,r,t)=>(r=A,A=null,t=e(),A=r,t)}});function T(e,r){if(!e||e[w])return e;if(Array.isArray(e))return be(e);if(e.constructor!==Object||e[Symbol.toStringTag])return e;let t={...r?.[w]},i=P(Object.values(e).length);const s=new Proxy(t,{get:(o,n)=>n===W?i:n===w?t:t[n]?.valueOf(),set:(o,n,a,u)=>(u=t[n],H(t,n,a),u??++i.value,1),deleteProperty:(o,n)=>(t[n]&&(Y(t,n),i.value--),1),ownKeys(){return i.value,Reflect.ownKeys(t)}});for(let o in e){const n=Object.getOwnPropertyDescriptor(e,o);n?.get?(t[o]=J(n.get.bind(s)))._set=n.set?.bind(s):(t[o]=void 0,H(t,o,e[o]))}return s}function be(e){let r;if(e[w])return e;let t=P(e.length),i=Array(e.length).fill();const s=new Proxy(i,{get(o,n){if(typeof n=="symbol")return n===W?t:n===w?i:i[n];if(n==="length")return ee[r]?t.peek():t.value;if(r=n,i[n])return i[n].valueOf();if(n<i.length)return(i[n]=P(T(e[n]))).value},set(o,n,a){if(n==="length"){for(let u=a,_=i.length;u<_;u++)delete s[u];return t.value=i.length=a,!0}return H(i,n,a),n>=t.peek()&&(t.value=i.length=Number(n)+1),!0},deleteProperty:(o,n)=>(i[n]&&Y(i,n),1)});return s}function H(e,r,t){let i=e[r];if(r[0]==="_")e[r]=t;else if(!i)e[r]=i=t?.peek?t:P(T(t));else if(t!==i.peek())if(i._set)i._set(t);else if(Array.isArray(t)&&Array.isArray(i.peek())){const s=i.peek();s[W]?q(()=>{R(()=>{let o=0,n=t.length;for(;o<n;o++)s[o]=t[o];s.length=n})}):i.value=t}else i.value=T(t)}function Y(e,r){const t=e[r],i=t[Symbol.dispose];i&&delete t[Symbol.dispose],delete e[r],i?.()}var w,W,ee,F=p({"store.js"(){b(),w=Symbol("signals"),W=Symbol("length"),ee={push:1,pop:1,shift:1,unshift:1,splice:1}}});function x(e,r){if(!e?.childNodes)return;if(v.has(e))return Object.assign(v.get(e),r);const t=T(r||{}),i=[];return s(e),v.has(e)||v.set(e,t),e[D]=()=>{for(;i.length;)i.pop()();v.delete(e),e[D]=null},t;function s(o,n=o.parentNode){if(o.childNodes){for(let a=0;a<o.attributes?.length;){let u=o.attributes[a];if(u.name[0]===":"){o.removeAttribute(u.name);let _=u.name.slice(1).split(":");for(let S of _){let f=d[S]||d.default,l=(f.parse||L)(u.value),j=f(o,l,t,S);j&&i.push(j)}if(v.has(o))return o[D]&&i.push(o[D]);if(o.parentNode!==n)return}else a++}for(let a of[...o.childNodes])s(a,o)}}}var D,d,v,X,L,Z,te,K,m=p({"core.js"(){b(),F(),D=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),d={},v=new WeakMap,X={},L=(e,r,t)=>{if(t=X[e=e.trim()])return t;try{t=te(e)}catch(i){Z(i,r,e)}return X[e]=t},Z=(e,r,t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
|
|
2
2
|
|
|
3
3
|
${r}${t?`="${t}"
|
|
4
4
|
|
|
5
|
-
`:""}`,expr:t})},x.use=e=>{e.signal&&me(e),e.compile&&(te=e.compile)},
|
|
5
|
+
`:""}`,expr:t})},x.use=e=>{e.signal&&me(e),e.compile&&(te=e.compile)},K=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],i=document.createTextNode(""),s=(r.append(i),[...r.childNodes]);return{childNodes:s,content:r,remove:()=>r.append(...s),replaceWith(o){o!==i&&(i.before(o),r.append(...s))},attributes:t,removeAttribute(o){t.splice(t.findIndex(n=>n.name===o),1)}}}}}),z,ve=p({"directive/if.js"(){m(),b(),z=Symbol("if"),d.if=(e,r,t)=>{let i=e.nextElementSibling,s=document.createTextNode(""),o,n,a;return e.replaceWith(s),n=e.content?K(e):e,v.set(n,null),i?.hasAttribute(":else")&&(i.removeAttribute(":else"),i.hasAttribute(":if")||(i.remove(),a=i.content?K(i):i,v.set(a,null))),h(()=>{const u=r(t)?n:e[z]?null:a;i&&(i[z]=u===n),o!=u&&(o&&(o.remove(),o[Symbol.dispose]?.()),(o=u)&&(s.before(o.content||o),v.get(o)===null&&v.delete(o),x(o,t)))})}}}),ge=p({"directive/each.js"(){m(),F(),b(),d.each=(e,[r,t,i],s)=>{const o=document.createTextNode("");e.replaceWith(o);let n,a,u=0;const _=J(()=>{a=null;let l=i(s);return typeof l=="number"&&(l=Array.from({length:l},(j,y)=>y+1)),l?.constructor===Object&&(a=Object.keys(l),l=Object.values(l)),l||[]}),S=()=>{q(()=>{var l,j;let y=0,O=_.value,$=O.length;if(n&&!n[W]){for(let k of n[w]||[])k[Symbol.dispose]();n=null,u=0}if($<u)n.length=$;else{if(!n)n=O;else for(;y<u;y++)n[y]=O[y];for(;y<$;y++){n[y]=O[y];let k=y,U=T({[r]:n[w]?.[k]||n[k],[t]:a?a[k]:k},s),N=e.content?K(e):e.cloneNode(!0);o.before(N.content||N),x(N,U),((j=n[l=w]||(n[l]=[]))[y]||(j[y]={}))[Symbol.dispose]=()=>{N[Symbol.dispose]?.(),N.remove()}}}u=$})};let f=0;return h(()=>{_.value[W]?.value,f?f++:(S(),queueMicrotask(()=>(f&&S(),f=0)))})},d.each.parse=e=>{let[r,t]=e.split(/\s+in\s+/),[i,s="$"]=r.split(/\s*,\s*/);return[i,s,L(t)]}}}),_e=p({"directive/ref.js"(){m(),F(),d.ref=(e,r,t)=>{t[r]=e},d.ref.parse=e=>e}}),je=p({"directive/with.js"(){m(),F(),b(),d.with=(e,r,t)=>{let i;return h(()=>{let s=r(t);x(e,i?s:i=T(s,t))})}}}),We={},re=p({"directive/html.js"(){m(),d.html=(e,r,t)=>{let i=r(t);if(!i)return;let s=(i.content||i).cloneNode(!0);e.replaceChildren(s),x(e,t)}}}),we=p({"directive/text.js"(){m(),b(),d.text=(e,r,t)=>(e.content&&e.replaceWith(e=K(e).childNodes[0]),h(()=>{let i=r(t);e.textContent=i??""}))}}),xe=p({"directive/class.js"(){m(),b(),d.class=(e,r,t)=>{let i=new Set;return h(()=>{let s=r(t),o=new Set;s&&(typeof s=="string"?s.split(" ").map(n=>o.add(n)):Array.isArray(s)?s.map(n=>n&&o.add(n)):Object.entries(s).map(([n,a])=>a&&o.add(n)));for(let n of i)o.has(n)?o.delete(n):e.classList.remove(n);for(let n of i=o)e.classList.add(n)})}}}),Oe=p({"directive/style.js"(){m(),b(),d.style=(e,r,t)=>{let i=e.getAttribute("style");return h(()=>{let s=r(t);if(typeof s=="string")e.setAttribute("style",i+(i.endsWith(";")?"":"; ")+s);else{i&&e.setAttribute("style",i);for(let o in s)o[0]=="-"?e.style.setProperty(o,s[o]):e.style[o]=s[o]}})}}}),ie,c,M,ne,se,G,Q=p({"directive/default.js"(){m(),b(),d.default=(e,r,t,i)=>{if(!i.startsWith("on"))return h(()=>{let f=r(t);if(i)M(e,i,f);else for(let l in f)M(e,G(l),f[l])});const s=i.split("..").map(f=>{let l={evt:"",target:e,test:()=>!0};return l.evt=(f.startsWith("on")?f.slice(2):f).replace(/\.(\w+)?-?([-\w]+)?/g,(j,y,O="")=>(l.test=ie[y]?.(l,...O.split("-"))||l.test,"")),l});if(s.length==1)return h(()=>S(r(t),s[0]));let o,n,a,u=0;const _=f=>{a=S(l=>(a(),n=f?.(l),(u=++u%s.length)?_(n):o&&_(o)),s[u])};return h(()=>(o=r(t),!a&&_(o),()=>o=null));function S(f,{evt:l,target:j,test:y,defer:O,stop:$,prevent:k,immediate:U,...N}){O&&(f=O(f));const ce=I=>{try{y(I)&&($&&(U?I.stopImmediatePropagation():I.stopPropagation()),k&&I.preventDefault(),f?.(I))}catch(Te){Z(Te,`:on${l}`,f)}};return j.addEventListener(l,ce,N),()=>j.removeEventListener(l,ce,N)}},ie={prevent(e){e.prevent=!0},stop(e){e.stop=!0},immediate(e){e.immediate=!0},once(e){e.once=!0},passive(e){e.passive=!0},capture(e){e.capture=!0},window(e){e.target=window},document(e){e.target=document},throttle(e,r){e.defer=t=>ne(t,r?Number(r)||0:108)},debounce(e,r){e.defer=t=>se(t,r?Number(r)||0:108)},outside:e=>r=>{let t=e.target;return!(t.contains(r.target)||r.target.isConnected===!1||t.offsetWidth<1&&t.offsetHeight<1)},self:e=>r=>r.target===e.target,ctrl:(e,...r)=>t=>c.ctrl(t)&&r.every(i=>c[i]?c[i](t):t.key===i),shift:(e,...r)=>t=>c.shift(t)&&r.every(i=>c[i]?c[i](t):t.key===i),alt:(e,...r)=>t=>c.alt(t)&&r.every(i=>c[i]?c[i](t):t.key===i),meta:(e,...r)=>t=>c.meta(t)&&r.every(i=>c[i]?c[i](t):t.key===i),arrow:()=>c.arrow,enter:()=>c.enter,esc:()=>c.esc,tab:()=>c.tab,space:()=>c.space,delete:()=>c.delete,digit:()=>c.digit,letter:()=>c.letter,char:()=>c.char},c={ctrl:e=>e.ctrlKey||e.key==="Control"||e.key==="Ctrl",shift:e=>e.shiftKey||e.key==="Shift",alt:e=>e.altKey||e.key==="Alt",meta:e=>e.metaKey||e.key==="Meta"||e.key==="Command",arrow:e=>e.key.startsWith("Arrow"),enter:e=>e.key==="Enter",esc:e=>e.key.startsWith("Esc"),tab:e=>e.key==="Tab",space:e=>e.key==="\xA0"||e.key==="Space"||e.key===" ",delete:e=>e.key==="Delete"||e.key==="Backspace",digit:e=>/^\d$/.test(e.key),letter:e=>/^\p{L}$/gu.test(e.key),char:e=>/^\S$/.test(e.key)},M=(e,r,t)=>{t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},ne=(e,r)=>{let t,i,s=o=>{t=!0,setTimeout(()=>{if(t=!1,i)return i=!1,s(o),e(o)},r)};return o=>t?i=!0:(s(o),e(o))},se=(e,r)=>{let t;return i=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(i)},r)}},G=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase())}}),Ae=p({"directive/value.js"(){m(),m(),Q(),b(),d.value=(e,[r,t],i)=>{const s=e.type==="text"||e.type===""?n=>e.setAttribute("value",e.value=n??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(n,a,u)=>(a=e.selectionStart,u=e.selectionEnd,e.setAttribute("value",e.value=n??""),a&&e.setSelectionRange(a,u)):e.type==="checkbox"?n=>(e.checked=n,M(e,"checked",n)):e.type==="select-one"?n=>{for(let a of e.options)a.value==n?a.setAttribute("selected",""):a.removeAttribute("selected");e.value=n}:e.type==="select-multiple"?n=>{for(let a of e.options)a.removeAttribute("selected");for(let a of n)e.querySelector(`[value="${a}"]`).setAttribute("selected","")}:n=>e.value=n;e.type?.startsWith("select")&&x(e,i);const o=e.type==="checkbox"?n=>t(i,e.checked):e.type==="select-multiple"?n=>t(i,[...e.selectedOptions].map(a=>a.value)):n=>t(i,e.value);return e.oninput=e.onchange=o,h(()=>s(r(i)))},d.value.parse=e=>{let r=[L(e)];try{const t=L(`${e}=__;`);r.push((i,s)=>{i.__=s;let o=t(i,s);return delete i.__,o})}catch{}return r}}}),Se=p({"directive/fx.js"(){m(),b(),d.fx=(e,r,t)=>h(()=>r(t))}}),oe={};pe(oe,{default:()=>ae});var ae,ke=p({"sprae.js"(){m(),ve(),ge(),_e(),je(),re(),we(),xe(),Oe(),Ae(),Se(),Q(),x.use({compile:e=>x.constructor(`with (arguments[0]) { return ${e} };`)}),ae=x}}),$e={},Ne=p({"directive/data.js"(){m(),b(),d.data=(e,r,t)=>h(()=>{let i=r(t);for(let s in i)e.dataset[s]=i[s]})}}),Ce={},Pe=p({"directive/aria.js"(){m(),Q(),b(),d.aria=(e,r,t)=>{const i=s=>{for(let o in s)M(e,"aria-"+G(o),s[o]==null?null:s[o]+"")};return h(()=>i(r(t)))}}}),{default:le}=(ke(),he(oe));Ne(),Pe(),re(),g.exports=le;var ue=document.currentScript?.getAttribute("init")||null;if(ue&&le(document.documentElement,JSON.parse(ue)),typeof g.exports=="object"&&typeof C=="object"){var Ee=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Object.getOwnPropertyNames(r))!Object.prototype.hasOwnProperty.call(e,s)&&s!==t&&Object.defineProperty(e,s,{get:()=>r[s],enumerable:!(i=Object.getOwnPropertyDescriptor(r,s))||i.enumerable});return e};g.exports=Ee(g.exports,C)}return g.exports});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["sprae.umd.js"],
|
|
4
|
-
"sourcesContent": ["(function (g, f) {if (\"object\" == typeof exports && \"object\" == typeof module) {module.exports = f();} else if (\"function\" == typeof define && define.amd) {define(\"sprae\", [], f);} else if (\"object\" == typeof exports) {exports[\"sprae\"] = f();} else {g[\"sprae\"] = f();}}(typeof self !== 'undefined' ? self : typeof globalThis !== 'undefined' ? globalThis : this, () => {var exports = {};var module = { exports };\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// signal.js\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || ((fn) => fn());\n untracked = s.untracked || batch;\n}\nvar current, batched, signal, effect, computed, batch, untracked;\nvar init_signal = __esm({\n \"signal.js\"() {\n signal = (v, s, obs = /* @__PURE__ */ new Set()) => (s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v;\n },\n set value(val) {\n if (val === v) return;\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : 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) => {\n let fxs = batched;\n if (!fxs) batched = /* @__PURE__ */ new Set();\n try {\n fn();\n } finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n };\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n }\n});\n\n// store.js\nfunction store(values, parent) {\n if (!values) return values;\n if (values[_signals]) return values;\n if (Array.isArray(values)) return list(values);\n if (values.constructor !== Object) return values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? ++_len.value, 1),\n // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n _len.value;\n return Reflect.ownKeys(signals);\n }\n });\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key);\n if (desc?.get) {\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n } else {\n signals[key] = void 0;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nfunction list(values) {\n let lastProp;\n if (values[_signals]) return values;\n let _len = signal(values.length), signals = Array(values.length).fill();\n const state = new Proxy(signals, {\n get(_, key) {\n if (typeof key === \"symbol\") return key === _change ? _len : key === _signals ? signals : signals[key];\n if (key === \"length\") return mut[lastProp] ? _len.peek() : _len.value;\n lastProp = key;\n if (signals[key]) return signals[key].valueOf();\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value;\n },\n set(_, key, v) {\n if (key === \"length\") {\n for (let i = v, l = signals.length; i < l; i++) delete state[i];\n _len.value = signals.length = v;\n return true;\n }\n set(signals, key, v);\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1)\n });\n return state;\n}\nfunction set(signals, key, v) {\n let s = signals[key];\n if (key[0] === \"_\") signals[key] = v;\n else if (!s) {\n signals[key] = s = v?.peek ? v : signal(store(v));\n } else if (v === s.peek()) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek();\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i];\n cur.length = l;\n });\n });\n else {\n s.value = v;\n }\n } else {\n s.value = store(v);\n }\n}\nfunction del(signals, key) {\n const s = signals[key], del2 = s[Symbol.dispose];\n if (del2) delete s[Symbol.dispose];\n delete signals[key];\n del2?.();\n}\nvar _signals, _change, mut;\nvar init_store = __esm({\n \"store.js\"() {\n init_signal();\n _signals = Symbol(\"signals\");\n _change = Symbol(\"length\");\n mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 };\n }\n});\n\n// core.js\nfunction sprae(el, values) {\n if (!el?.childNodes) return;\n if (memo.has(el)) {\n return Object.assign(memo.get(el), values);\n }\n const state = store(values || {}), disposes = [];\n init2(el);\n if (!memo.has(el)) memo.set(el, state);\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n };\n return state;\n function init2(el2, parent = el2.parentNode) {\n if (!el2.childNodes) return;\n for (let i = 0; i < el2.attributes?.length; ) {\n let attr2 = el2.attributes[i];\n if (attr2.name[0] === \":\") {\n el2.removeAttribute(attr2.name);\n let names = attr2.name.slice(1).split(\":\");\n for (let name of names) {\n let dir = directive[name] || directive.default;\n let evaluate = (dir.parse || parse)(attr2.value);\n let dispose = dir(el2, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n if (memo.has(el2)) return el2[_dispose] && disposes.push(el2[_dispose]);\n if (el2.parentNode !== parent) return;\n } else i++;\n }\n for (let child of [...el2.childNodes]) init2(child, el2);\n }\n ;\n}\nvar _dispose, directive, memo, evalMemo, parse, err, compile, frag;\nvar init_core = __esm({\n \"core.js\"() {\n init_signal();\n init_store();\n _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\n directive = {};\n memo = /* @__PURE__ */ new WeakMap();\n evalMemo = {};\n parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir, expr);\n }\n return evalMemo[expr] = fn;\n };\n err = (e, dir, expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n };\n sprae.use = (s) => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n };\n frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n 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 };\n };\n }\n});\n\n// directive/if.js\nvar _prevIf;\nvar init_if = __esm({\n \"directive/if.js\"() {\n init_core();\n init_signal();\n _prevIf = Symbol(\"if\");\n directive.if = (el, evaluate, state) => {\n let next = el.nextElementSibling, holder = document.createTextNode(\"\"), curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n memo.set(ifEl, null);\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);\n }\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n curEl?.remove();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n memo.get(curEl) === null && memo.delete(curEl);\n sprae(curEl, state);\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 directive.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n let cur, keys2, prevl = 0;\n const items = computed(() => {\n keys2 = null;\n let items2 = evaluate(state);\n if (typeof items2 === \"number\") items2 = Array.from({ length: items2 }, (_, i) => i + 1);\n if (items2?.constructor === Object) keys2 = Object.keys(items2), items2 = Object.values(items2);\n return items2 || [];\n });\n const update = () => {\n untracked(() => {\n var _a, _b;\n let i = 0, newItems = items.value, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) {\n s[Symbol.dispose]();\n }\n cur = null, prevl = 0;\n }\n if (newl < prevl) {\n cur.length = newl;\n } else {\n if (!cur) {\n cur = newItems;\n } else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i];\n }\n }\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys2 ? keys2[idx] : idx\n }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n holder.before(el.content || el);\n sprae(el, scope);\n ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {\n el[Symbol.dispose](), el.remove();\n };\n }\n }\n prevl = newl;\n });\n };\n let planned = 0;\n return effect(() => {\n items.value[_change]?.value;\n if (!planned) {\n update();\n queueMicrotask(() => (planned && update(), planned = 0));\n } else planned++;\n });\n };\n directive.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n return [itemVar, idxVar, parse(itemsExpr)];\n };\n }\n});\n\n// directive/ref.js\nvar init_ref = __esm({\n \"directive/ref.js\"() {\n init_core();\n init_store();\n directive.ref = (el, expr, state) => {\n state[expr] = el;\n };\n directive.ref.parse = (expr) => expr;\n }\n});\n\n// directive/with.js\nvar init_with = __esm({\n \"directive/with.js\"() {\n init_core();\n init_store();\n init_signal();\n directive.with = (el, evaluate, rootState) => {\n let state;\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState));\n });\n };\n }\n});\n\n// directive/html.js\nvar html_exports = {};\nvar init_html = __esm({\n \"directive/html.js\"() {\n init_core();\n directive.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n if (!tpl) return;\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n };\n }\n});\n\n// directive/text.js\nvar init_text = __esm({\n \"directive/text.js\"() {\n init_core();\n init_signal();\n directive.text = (el, evaluate, state) => {\n if (el.content) el.replaceWith(el = frag(el).childNodes[0]);\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n };\n }\n});\n\n// directive/class.js\nvar init_class = __esm({\n \"directive/class.js\"() {\n init_core();\n init_signal();\n directive.class = (el, evaluate, state) => {\n let cur = /* @__PURE__ */ new Set();\n return effect(() => {\n let v = evaluate(state);\n let clsx = /* @__PURE__ */ new Set();\n if (v) {\n if (typeof v === \"string\") v.split(\" \").map((cls) => clsx.add(cls));\n else if (Array.isArray(v)) v.map((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n });\n };\n }\n});\n\n// directive/style.js\nvar init_style = __esm({\n \"directive/style.js\"() {\n init_core();\n init_signal();\n directive.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(\";\") ? \"\" : \"; \") + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == \"-\" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];\n }\n });\n };\n }\n});\n\n// directive/default.js\nvar mods, keys, attr, throttle, debounce, dashcase;\nvar init_default = __esm({\n \"directive/default.js\"() {\n init_core();\n init_signal();\n directive.default = (target, evaluate, state, name) => {\n if (!name.startsWith(\"on\")) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value);\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n const ctxs = name.split(\"..\").map((e) => {\n let ctx = { evt: \"\", target, test: () => true };\n ctx.evt = (e.startsWith(\"on\") ? e.slice(2) : e).replace(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]));\n let startFn, nextFn, off, idx = 0;\n const nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return effect(() => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null));\n function addListener(fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn);\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n }\n ;\n };\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 throttle(ctx, limit) {\n ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);\n },\n debounce(ctx, wait) {\n ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108);\n },\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char\n };\n keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\\xA0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key)\n };\n 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 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 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_default();\n init_signal();\n directive.value = (el, [getValue, setValue], state) => {\n const update = el.type === \"text\" || el.type === \"\" ? (value) => el.setAttribute(\"value\", el.value = value == null ? \"\" : value) : el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\" ? (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\n } : el.type === \"select-multiple\" ? (value) => {\n for (let o of el.options) o.removeAttribute(\"selected\");\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute(\"selected\", \"\");\n } : (value) => el.value = value;\n if (el.type?.startsWith(\"select\")) sprae(el, state);\n const handleChange = el.type === \"checkbox\" ? (e) => setValue(state, el.checked) : el.type === \"select-multiple\" ? (e) => setValue(state, [...el.selectedOptions].map((o) => o.value)) : (e) => setValue(state, el.value);\n el.oninput = el.onchange = handleChange;\n return effect(() => update(getValue(state)));\n };\n directive.value.parse = (expr) => {\n let evaluate = [parse(expr)];\n try {\n const set2 = parse(`${expr}=__;`);\n evaluate.push((state, value) => {\n state.__ = value;\n let result = set2(state, value);\n delete state.__;\n return result;\n });\n } catch (e) {\n }\n return evaluate;\n };\n }\n});\n\n// directive/fx.js\nvar init_fx = __esm({\n \"directive/fx.js\"() {\n init_core();\n init_signal();\n directive.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\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_html();\n init_text();\n init_class();\n init_style();\n init_value();\n init_fx();\n init_default();\n sprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });\n sprae_default = sprae;\n }\n});\n\n// directive/data.js\nvar data_exports = {};\nvar init_data = __esm({\n \"directive/data.js\"() {\n init_core();\n init_signal();\n directive[\"data\"] = (el, evaluate, state) => {\n return effect(() => {\n let value = evaluate(state);\n for (let key in value) el.dataset[key] = value[key];\n });\n };\n }\n});\n\n// directive/aria.js\nvar aria_exports = {};\nvar init_aria = __esm({\n \"directive/aria.js\"() {\n init_core();\n init_default();\n init_signal();\n directive[\"aria\"] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n };\n return effect(() => update(evaluate(state)));\n };\n }\n});\n\n// sprae.umd.cjs\nvar { default: sprae2 } = (init_sprae(), __toCommonJS(sprae_exports));\ninit_data();\ninit_aria();\ninit_html();\nmodule.exports = sprae2;\nvar init = document.currentScript?.getAttribute(\"init\") || null;\nif (init) sprae2(document.documentElement, JSON.parse(init));\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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",
|
|
4
|
+
"sourcesContent": ["(function (g, f) {if (\"object\" == typeof exports && \"object\" == typeof module) {module.exports = f();} else if (\"function\" == typeof define && define.amd) {define(\"sprae\", [], f);} else if (\"object\" == typeof exports) {exports[\"sprae\"] = f();} else {g[\"sprae\"] = f();}}(typeof self !== 'undefined' ? self : typeof globalThis !== 'undefined' ? globalThis : this, () => {var exports = {};var module = { exports };\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// signal.js\nfunction use(s) {\n signal = s.signal;\n effect = s.effect;\n computed = s.computed;\n batch = s.batch || ((fn) => fn());\n untracked = s.untracked || batch;\n}\nvar current, batched, signal, effect, computed, batch, untracked;\nvar init_signal = __esm({\n \"signal.js\"() {\n signal = (v, s, obs = /* @__PURE__ */ new Set()) => (s = {\n get value() {\n current?.deps.push(obs.add(current));\n return v;\n },\n set value(val) {\n if (val === v) return;\n v = val;\n for (let sub of obs) batched ? batched.add(sub) : 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) => {\n let fxs = batched;\n if (!fxs) batched = /* @__PURE__ */ new Set();\n try {\n fn();\n } finally {\n if (!fxs) {\n fxs = batched;\n batched = null;\n for (const fx of fxs) fx();\n }\n }\n };\n untracked = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);\n }\n});\n\n// store.js\nfunction store(values, parent) {\n if (!values) return values;\n if (values[_signals]) return values;\n if (Array.isArray(values)) return list(values);\n if (values.constructor !== Object || values[Symbol.toStringTag]) return values;\n let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);\n const state = new Proxy(signals, {\n get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),\n set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? ++_len.value, 1),\n // bump length for new signal\n deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),\n ownKeys() {\n _len.value;\n return Reflect.ownKeys(signals);\n }\n });\n for (let key in values) {\n const desc = Object.getOwnPropertyDescriptor(values, key);\n if (desc?.get) {\n (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);\n } else {\n signals[key] = void 0;\n set(signals, key, values[key]);\n }\n }\n return state;\n}\nfunction list(values) {\n let lastProp;\n if (values[_signals]) return values;\n let _len = signal(values.length), signals = Array(values.length).fill();\n const state = new Proxy(signals, {\n get(_, key) {\n if (typeof key === \"symbol\") return key === _change ? _len : key === _signals ? signals : signals[key];\n if (key === \"length\") return mut[lastProp] ? _len.peek() : _len.value;\n lastProp = key;\n if (signals[key]) return signals[key].valueOf();\n if (key < signals.length) return (signals[key] = signal(store(values[key]))).value;\n },\n set(_, key, v) {\n if (key === \"length\") {\n for (let i = v, l = signals.length; i < l; i++) delete state[i];\n _len.value = signals.length = v;\n return true;\n }\n set(signals, key, v);\n if (key >= _len.peek()) _len.value = signals.length = Number(key) + 1;\n return true;\n },\n deleteProperty: (_, key) => (signals[key] && del(signals, key), 1)\n });\n return state;\n}\nfunction set(signals, key, v) {\n let s = signals[key];\n if (key[0] === \"_\") signals[key] = v;\n else if (!s) {\n signals[key] = s = v?.peek ? v : signal(store(v));\n } else if (v === s.peek()) ;\n else if (s._set) s._set(v);\n else if (Array.isArray(v) && Array.isArray(s.peek())) {\n const cur = s.peek();\n if (cur[_change]) untracked(() => {\n batch(() => {\n let i = 0, l = v.length;\n for (; i < l; i++) cur[i] = v[i];\n cur.length = l;\n });\n });\n else {\n s.value = v;\n }\n } else {\n s.value = store(v);\n }\n}\nfunction del(signals, key) {\n const s = signals[key], del2 = s[Symbol.dispose];\n if (del2) delete s[Symbol.dispose];\n delete signals[key];\n del2?.();\n}\nvar _signals, _change, mut;\nvar init_store = __esm({\n \"store.js\"() {\n init_signal();\n _signals = Symbol(\"signals\");\n _change = Symbol(\"length\");\n mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 };\n }\n});\n\n// core.js\nfunction sprae(el, values) {\n if (!el?.childNodes) return;\n if (memo.has(el)) {\n return Object.assign(memo.get(el), values);\n }\n const state = store(values || {}), disposes = [];\n init2(el);\n if (!memo.has(el)) memo.set(el, state);\n el[_dispose] = () => {\n while (disposes.length) disposes.pop()();\n memo.delete(el);\n el[_dispose] = null;\n };\n return state;\n function init2(el2, parent = el2.parentNode) {\n if (!el2.childNodes) return;\n for (let i = 0; i < el2.attributes?.length; ) {\n let attr2 = el2.attributes[i];\n if (attr2.name[0] === \":\") {\n el2.removeAttribute(attr2.name);\n let names = attr2.name.slice(1).split(\":\");\n for (let name of names) {\n let dir = directive[name] || directive.default;\n let evaluate = (dir.parse || parse)(attr2.value);\n let dispose = dir(el2, evaluate, state, name);\n if (dispose) disposes.push(dispose);\n }\n if (memo.has(el2)) return el2[_dispose] && disposes.push(el2[_dispose]);\n if (el2.parentNode !== parent) return;\n } else i++;\n }\n for (let child of [...el2.childNodes]) init2(child, el2);\n }\n ;\n}\nvar _dispose, directive, memo, evalMemo, parse, err, compile, frag;\nvar init_core = __esm({\n \"core.js\"() {\n init_signal();\n init_store();\n _dispose = Symbol.dispose || (Symbol.dispose = Symbol(\"dispose\"));\n directive = {};\n memo = /* @__PURE__ */ new WeakMap();\n evalMemo = {};\n parse = (expr, dir, fn) => {\n if (fn = evalMemo[expr = expr.trim()]) return fn;\n try {\n fn = compile(expr);\n } catch (e) {\n err(e, dir, expr);\n }\n return evalMemo[expr] = fn;\n };\n err = (e, dir, expr = \"\") => {\n throw Object.assign(e, { message: `\\u2234 ${e.message}\n\n${dir}${expr ? `=\"${expr}\"\n\n` : \"\"}`, expr });\n };\n sprae.use = (s) => {\n s.signal && use(s);\n s.compile && (compile = s.compile);\n };\n frag = (tpl) => {\n if (!tpl.nodeType) return tpl;\n let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(\"\"), childNodes = (content.append(ref), [...content.childNodes]);\n return {\n 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 };\n };\n }\n});\n\n// directive/if.js\nvar _prevIf;\nvar init_if = __esm({\n \"directive/if.js\"() {\n init_core();\n init_signal();\n _prevIf = Symbol(\"if\");\n directive.if = (el, evaluate, state) => {\n let next = el.nextElementSibling, holder = document.createTextNode(\"\"), curEl, ifEl, elseEl;\n el.replaceWith(holder);\n ifEl = el.content ? frag(el) : el;\n memo.set(ifEl, null);\n if (next?.hasAttribute(\":else\")) {\n next.removeAttribute(\":else\");\n if (!next.hasAttribute(\":if\")) next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);\n }\n return effect(() => {\n const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;\n if (next) next[_prevIf] = newEl === ifEl;\n if (curEl != newEl) {\n if (curEl) curEl.remove(), curEl[Symbol.dispose]?.();\n if (curEl = newEl) {\n holder.before(curEl.content || curEl);\n memo.get(curEl) === null && memo.delete(curEl);\n sprae(curEl, state);\n }\n }\n });\n };\n }\n});\n\n// directive/each.js\nvar init_each = __esm({\n \"directive/each.js\"() {\n init_core();\n init_store();\n init_signal();\n directive.each = (tpl, [itemVar, idxVar, evaluate], state) => {\n const holder = document.createTextNode(\"\");\n tpl.replaceWith(holder);\n let cur, keys2, prevl = 0;\n const items = computed(() => {\n keys2 = null;\n let items2 = evaluate(state);\n if (typeof items2 === \"number\") items2 = Array.from({ length: items2 }, (_, i) => i + 1);\n if (items2?.constructor === Object) keys2 = Object.keys(items2), items2 = Object.values(items2);\n return items2 || [];\n });\n const update = () => {\n untracked(() => {\n var _a, _b;\n let i = 0, newItems = items.value, newl = newItems.length;\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) {\n s[Symbol.dispose]();\n }\n cur = null, prevl = 0;\n }\n if (newl < prevl) {\n cur.length = newl;\n } else {\n if (!cur) {\n cur = newItems;\n } else {\n for (; i < prevl; i++) {\n cur[i] = newItems[i];\n }\n }\n for (; i < newl; i++) {\n cur[i] = newItems[i];\n let idx = i, scope = store({\n [itemVar]: cur[_signals]?.[idx] || cur[idx],\n [idxVar]: keys2 ? keys2[idx] : idx\n }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n holder.before(el.content || el);\n sprae(el, scope);\n ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {\n el[Symbol.dispose]?.(), el.remove();\n };\n }\n }\n prevl = newl;\n });\n };\n let planned = 0;\n return effect(() => {\n items.value[_change]?.value;\n if (!planned) {\n update();\n queueMicrotask(() => (planned && update(), planned = 0));\n } else planned++;\n });\n };\n directive.each.parse = (expr) => {\n let [leftSide, itemsExpr] = expr.split(/\\s+in\\s+/);\n let [itemVar, idxVar = \"$\"] = leftSide.split(/\\s*,\\s*/);\n return [itemVar, idxVar, parse(itemsExpr)];\n };\n }\n});\n\n// directive/ref.js\nvar init_ref = __esm({\n \"directive/ref.js\"() {\n init_core();\n init_store();\n directive.ref = (el, expr, state) => {\n state[expr] = el;\n };\n directive.ref.parse = (expr) => expr;\n }\n});\n\n// directive/with.js\nvar init_with = __esm({\n \"directive/with.js\"() {\n init_core();\n init_store();\n init_signal();\n directive.with = (el, evaluate, rootState) => {\n let state;\n return effect(() => {\n let values = evaluate(rootState);\n sprae(el, state ? values : state = store(values, rootState));\n });\n };\n }\n});\n\n// directive/html.js\nvar html_exports = {};\nvar init_html = __esm({\n \"directive/html.js\"() {\n init_core();\n directive.html = (el, evaluate, state) => {\n let tpl = evaluate(state);\n if (!tpl) return;\n let content = (tpl.content || tpl).cloneNode(true);\n el.replaceChildren(content);\n sprae(el, state);\n };\n }\n});\n\n// directive/text.js\nvar init_text = __esm({\n \"directive/text.js\"() {\n init_core();\n init_signal();\n directive.text = (el, evaluate, state) => {\n if (el.content) el.replaceWith(el = frag(el).childNodes[0]);\n return effect(() => {\n let value = evaluate(state);\n el.textContent = value == null ? \"\" : value;\n });\n };\n }\n});\n\n// directive/class.js\nvar init_class = __esm({\n \"directive/class.js\"() {\n init_core();\n init_signal();\n directive.class = (el, evaluate, state) => {\n let cur = /* @__PURE__ */ new Set();\n return effect(() => {\n let v = evaluate(state);\n let clsx = /* @__PURE__ */ new Set();\n if (v) {\n if (typeof v === \"string\") v.split(\" \").map((cls) => clsx.add(cls));\n else if (Array.isArray(v)) v.map((v2) => v2 && clsx.add(v2));\n else Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));\n }\n for (let cls of cur) if (clsx.has(cls)) clsx.delete(cls);\n else el.classList.remove(cls);\n for (let cls of cur = clsx) el.classList.add(cls);\n });\n };\n }\n});\n\n// directive/style.js\nvar init_style = __esm({\n \"directive/style.js\"() {\n init_core();\n init_signal();\n directive.style = (el, evaluate, state) => {\n let initStyle = el.getAttribute(\"style\");\n return effect(() => {\n let v = evaluate(state);\n if (typeof v === \"string\") el.setAttribute(\"style\", initStyle + (initStyle.endsWith(\";\") ? \"\" : \"; \") + v);\n else {\n if (initStyle) el.setAttribute(\"style\", initStyle);\n for (let k in v) k[0] == \"-\" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];\n }\n });\n };\n }\n});\n\n// directive/default.js\nvar mods, keys, attr, throttle, debounce, dashcase;\nvar init_default = __esm({\n \"directive/default.js\"() {\n init_core();\n init_signal();\n directive.default = (target, evaluate, state, name) => {\n if (!name.startsWith(\"on\")) return effect(() => {\n let value = evaluate(state);\n if (name) attr(target, name, value);\n else for (let key in value) attr(target, dashcase(key), value[key]);\n });\n const ctxs = name.split(\"..\").map((e) => {\n let ctx = { evt: \"\", target, test: () => true };\n ctx.evt = (e.startsWith(\"on\") ? e.slice(2) : e).replace(\n /\\.(\\w+)?-?([-\\w]+)?/g,\n (match, mod, param = \"\") => (ctx.test = mods[mod]?.(ctx, ...param.split(\"-\")) || ctx.test, \"\")\n );\n return ctx;\n });\n if (ctxs.length == 1) return effect(() => addListener(evaluate(state), ctxs[0]));\n let startFn, nextFn, off, idx = 0;\n const nextListener = (fn) => {\n off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);\n };\n return effect(() => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null));\n function addListener(fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) {\n if (defer) fn = defer(fn);\n const cb = (e) => {\n try {\n test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e));\n } catch (error) {\n err(error, `:on${evt}`, fn);\n }\n };\n target2.addEventListener(evt, cb, opts);\n return () => target2.removeEventListener(evt, cb, opts);\n }\n ;\n };\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 throttle(ctx, limit) {\n ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);\n },\n debounce(ctx, wait) {\n ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108);\n },\n // test\n outside: (ctx) => (e) => {\n let target = ctx.target;\n if (target.contains(e.target)) return false;\n if (e.target.isConnected === false) return false;\n if (target.offsetWidth < 1 && target.offsetHeight < 1) return false;\n return true;\n },\n self: (ctx) => (e) => e.target === ctx.target,\n // keyboard\n ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),\n // NOTE: we don't expose up/left/right/down as too verbose: can and better be handled/differentiated at once\n arrow: () => keys.arrow,\n enter: () => keys.enter,\n esc: () => keys.esc,\n tab: () => keys.tab,\n space: () => keys.space,\n delete: () => keys.delete,\n digit: () => keys.digit,\n letter: () => keys.letter,\n char: () => keys.char\n };\n keys = {\n ctrl: (e) => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: (e) => e.shiftKey || e.key === \"Shift\",\n alt: (e) => e.altKey || e.key === \"Alt\",\n meta: (e) => e.metaKey || e.key === \"Meta\" || e.key === \"Command\",\n arrow: (e) => e.key.startsWith(\"Arrow\"),\n enter: (e) => e.key === \"Enter\",\n esc: (e) => e.key.startsWith(\"Esc\"),\n tab: (e) => e.key === \"Tab\",\n space: (e) => e.key === \"\\xA0\" || e.key === \"Space\" || e.key === \" \",\n delete: (e) => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: (e) => /^\\d$/.test(e.key),\n letter: (e) => /^\\p{L}$/gu.test(e.key),\n char: (e) => /^\\S$/.test(e.key)\n };\n 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 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 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_default();\n init_signal();\n directive.value = (el, [getValue, setValue], state) => {\n const update = el.type === \"text\" || el.type === \"\" ? (value) => el.setAttribute(\"value\", el.value = value == null ? \"\" : value) : el.tagName === \"TEXTAREA\" || el.type === \"text\" || el.type === \"\" ? (value, from, to) => (\n // we retain selection in input\n (from = el.selectionStart, to = el.selectionEnd, el.setAttribute(\"value\", el.value = value == null ? \"\" : value), from && el.setSelectionRange(from, to))\n ) : el.type === \"checkbox\" ? (value) => (el.checked = value, attr(el, \"checked\", value)) : el.type === \"select-one\" ? (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", \"\") : o.removeAttribute(\"selected\");\n el.value = value;\n } : el.type === \"select-multiple\" ? (value) => {\n for (let o of el.options) o.removeAttribute(\"selected\");\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute(\"selected\", \"\");\n } : (value) => el.value = value;\n if (el.type?.startsWith(\"select\")) sprae(el, state);\n const handleChange = el.type === \"checkbox\" ? (e) => setValue(state, el.checked) : el.type === \"select-multiple\" ? (e) => setValue(state, [...el.selectedOptions].map((o) => o.value)) : (e) => setValue(state, el.value);\n el.oninput = el.onchange = handleChange;\n return effect(() => update(getValue(state)));\n };\n directive.value.parse = (expr) => {\n let evaluate = [parse(expr)];\n try {\n const set2 = parse(`${expr}=__;`);\n evaluate.push((state, value) => {\n state.__ = value;\n let result = set2(state, value);\n delete state.__;\n return result;\n });\n } catch (e) {\n }\n return evaluate;\n };\n }\n});\n\n// directive/fx.js\nvar init_fx = __esm({\n \"directive/fx.js\"() {\n init_core();\n init_signal();\n directive.fx = (el, evaluate, state) => {\n return effect(() => evaluate(state));\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_html();\n init_text();\n init_class();\n init_style();\n init_value();\n init_fx();\n init_default();\n sprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });\n sprae_default = sprae;\n }\n});\n\n// directive/data.js\nvar data_exports = {};\nvar init_data = __esm({\n \"directive/data.js\"() {\n init_core();\n init_signal();\n directive[\"data\"] = (el, evaluate, state) => {\n return effect(() => {\n let value = evaluate(state);\n for (let key in value) el.dataset[key] = value[key];\n });\n };\n }\n});\n\n// directive/aria.js\nvar aria_exports = {};\nvar init_aria = __esm({\n \"directive/aria.js\"() {\n init_core();\n init_default();\n init_signal();\n directive[\"aria\"] = (el, evaluate, state) => {\n const update = (value) => {\n for (let key in value) attr(el, \"aria-\" + dashcase(key), value[key] == null ? null : value[key] + \"\");\n };\n return effect(() => update(evaluate(state)));\n };\n }\n});\n\n// sprae.umd.cjs\nvar { default: sprae2 } = (init_sprae(), __toCommonJS(sprae_exports));\ninit_data();\ninit_aria();\ninit_html();\nmodule.exports = sprae2;\nvar init = document.currentScript?.getAttribute(\"init\") || null;\nif (init) sprae2(document.documentElement, JSON.parse(init));\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
6
|
"names": ["g", "f", "exports", "module", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__hasOwnProp", "__esm", "fn", "res", "__export", "target", "all", "name", "__copyProps", "to", "from", "except", "desc", "key", "__toCommonJS", "mod", "use", "s", "signal", "effect", "computed", "batch", "untracked", "current", "batched", "init_signal", "v", "obs", "val", "sub", "teardown", "fx", "deps", "prev", "dep", "c", "e", "fxs", "store", "values", "parent", "_signals", "list", "signals", "_len", "state", "_", "_change", "set", "del", "lastProp", "mut", "i", "l", "cur", "del2", "init_store", "sprae", "el", "memo", "disposes", "init2", "_dispose", "el2", "attr2", "names", "dir", "directive", "evaluate", "parse", "dispose", "child", "evalMemo", "err", "compile", "frag", "init_core", "expr", "tpl", "content", "attributes", "ref", "childNodes", "a", "_prevIf", "init_if", "next", "holder", "curEl", "ifEl", "elseEl", "newEl", "init_each", "itemVar", "idxVar", "keys2", "prevl", "items", "items2", "update", "_a", "_b", "newItems", "newl", "idx", "scope", "planned", "leftSide", "itemsExpr", "init_ref", "init_with", "rootState", "html_exports", "init_html", "init_text", "value", "init_class", "clsx", "cls", "v2", "k", "init_style", "initStyle", "mods", "keys", "attr", "throttle", "debounce", "dashcase", "init_default", "ctxs", "ctx", "match", "param", "addListener", "startFn", "nextFn", "off", "nextListener", "evt", "target2", "test", "defer", "stop", "prevent", "immediate", "opts", "cb", "error", "limit", "wait", "p", "pause", "block", "timeout", "str", "init_value", "getValue", "setValue", "o", "handleChange", "set2", "result", "init_fx", "sprae_exports", "sprae_default", "init_sprae", "data_exports", "init_data", "aria_exports", "init_aria", "sprae2", "init", "__cp"]
|
|
7
7
|
}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -370,7 +370,7 @@ sprae.use({ compile })
|
|
|
370
370
|
|
|
371
371
|
* To prevent [FOUC](https://en.wikipedia.org/wiki/Flash_of_unstyled_content) add `<style>[:each],[:if],[:else] {visibility: hidden}</style>`.
|
|
372
372
|
* Attributes order matters, eg. `<li :each="el in els" :text="el.name"></li>` is not the same as `<li :text="el.name" :each="el in els"></li>`.
|
|
373
|
-
*
|
|
373
|
+
* Mind invalid self-closing tags, eg. `<a :text="item" />` will cause an error. Main valid self-closing tags are `li`, `p`, `dt`, `dd`, `option`, `tr`, `td`, `th`.
|
|
374
374
|
* Properties prefixed with `_` are untracked: `let state = sprae(el, {_x:2}); state._x++; // no effect`.
|
|
375
375
|
* To destroy state and detach sprae handlers, call `element[Symbol.dispose]()`.
|
|
376
376
|
* State getters/setters work as computed effects, eg. `sprae(el, { x:1, get x2(){ return this.x * 2} })`.
|
package/store.js
CHANGED
|
@@ -13,8 +13,8 @@ export default function store(values, parent) {
|
|
|
13
13
|
// redirect for optimized array store
|
|
14
14
|
if (Array.isArray(values)) return list(values)
|
|
15
15
|
|
|
16
|
-
// ignore non-objects
|
|
17
|
-
if (values.constructor !== Object) return values;
|
|
16
|
+
// ignore non-objects or custom objects
|
|
17
|
+
if (values.constructor !== Object || values[Symbol.toStringTag]) return values;
|
|
18
18
|
|
|
19
19
|
// NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly
|
|
20
20
|
let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length)
|