sprae 12.2.2 → 12.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/sprae.umd.js CHANGED
@@ -1,823 +1,9 @@
1
1
  (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 };
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __esm = (fn, res) => function __init() {
7
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
8
- };
9
- var __export = (target, all) => {
10
- for (var name in all)
11
- __defProp(target, name, { get: all[name], enumerable: true });
12
- };
13
- var __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from === "object" || typeof from === "function") {
15
- for (let key of __getOwnPropNames(from))
16
- if (!__hasOwnProp.call(to, key) && key !== except)
17
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
- }
19
- return to;
20
- };
21
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
+ var oe=Object.defineProperty;var et=Object.getOwnPropertyDescriptor;var tt=Object.getOwnPropertyNames;var rt=Object.prototype.hasOwnProperty;var d=(e,r)=>()=>(e&&(r=e(e=0)),r);var ot=(e,r)=>{for(var t in r)oe(e,t,{get:r[t],enumerable:!0})},st=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of tt(r))!rt.call(e,o)&&o!==t&&oe(e,o,{get:()=>r[o],enumerable:!(s=et(r,o))||s.enumerable});return e};var it=e=>st(oe({},"__esModule",{value:!0}),e);var be,he=d(()=>{be={name:"sprae",description:"DOM microhydration",version:"12.2.2",main:"./sprae.js",module:"./sprae.js","umd:main":"dist/sprae.umd.js",unpkg:"dist/sprae.umd.js",types:"dist/sprae.d.ts",type:"module",files:["core.js","sprae.js","store.js","signal.js","micro.js","directive","dist"],devDependencies:{"@preact/signals":"^2.0.4","@preact/signals-core":"^1.8.0","@webreflection/signal":"^2.1.2","es-module-shims":"^1.10.0",esbuild:"^0.23.0","esbuild-plugin-umd-wrapper":"^2.0.3",hyperf:"^1.7.0",jsdom:"^27.0.0",requestidlecallback:"^0.3.0","signal-polyfill":"^0.1.1",subscript:"^9.1.0",tst:"^7.2.0",ulive:"^1.0.7",usignal:"^0.9.0","wait-please":"^3.1.0"},scripts:{test:"node -r ./test/register.cjs test/test.js",build:"node .esbuild.js"},repository:{type:"git",url:"git+https://github.com/dy/sprae.git"},keywords:["hydration","progressive","progressive enhancement","signals","directives","preact-signals","reactive","template-parts","petit-vue","alpinejs","templating"],author:"Dmitry Iv <df.creative@gmail.com>",license:"MIT",bugs:{url:"https://github.com/dy/sprae/issues"},homepage:"https://github.com/dy/sprae#readme"}});var Z,l,G,F,se,L,k,J,ne,Q,B,W,H,ie,ae,at,U,ue,Se,O,xe,z,D,m,Ae,A,ce,q,je,f,y=d(()=>{Y();he();Y();Z=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),l=Symbol("state"),G=Symbol("on"),F=Symbol("off"),se=Symbol("init"),L=":",Q=e=>e(),B=Q,W={},H={},ie=null,ae=(e=document.body,r)=>{if(e[l])return Object.assign(e[l],r);r=v(r||{});let t=[],s=[];e[G]=()=>!s&&(s=t.map(i=>i())),e[F]=()=>(s?.map(i=>i()),s=null),e[Z]||(e[Z]=()=>(e[F](),e[F]=e[G]=e[Z]=e[se]=e[l]=null));let o=e[se]=i=>{let n=i.attributes,a;if(n)for(let u=0;u<n.length;){let{name:p,value:h}=n[u];if(p.startsWith(L)){if(i.removeAttribute(p),(a=at(i,p,h,r))&&(t.push(a),s.push(a())),l in i)return}else u++}for(let u of[...i.childNodes])u.nodeType==1&&o(u)};return o(e),e[l]===void 0&&(e[l]=r),r};ae.version=be.version;at=(e,r,t,s)=>{let o,i,n=r.slice(L.length).split("..").map((a,u,{length:p})=>a.split(L).reduce((h,c)=>{let[g,...b]=c.split("."),C=O(t,W[ie=g]?.parse);if(g.startsWith("on")){let R=g.slice(2),V=xe(z(p==1?P=>C(s,re=>m(re,P)):P=>(o=(u?o:re=>m(C(s),re))(P),i(),i=n[(u+1)%p]()),{target:e}),b);return P=>(P=h?.(),V.target.addEventListener(R,V,V),()=>(P?.(),V.target.removeEventListener(R,V)))}let N,x,$,S;b.length?($=k(-1),S=-1,N=xe(z(q(()=>{++$.value||(x=J(()=>M&&($.value==S?N():(S=$.value,C(s,M)))))}),{target:e}),b)):N=z(()=>x=J(()=>C(s,M)),{target:e});let M=(W[g]||W["*"])(N.target,s,t,g);if(M)return e[l]&&(s=e[l]),R=>(R=h?.(),N(),()=>(R?.(),x?.(),$&&($.value=-1,S=x=null)))},null));return()=>i=n[0]?.()},U=e=>(e.compile&&(Se=e.compile),e.prefix&&(L=e.prefix),e.signal&&(k=e.signal),e.effect&&(J=e.effect),e.computed&&(ne=e.computed),e.batch&&(Q=e.batch),e.untracked&&(B=e.untracked)),ue=(e=document.body,r)=>{let t=v(r);return ae(e,t),new MutationObserver(o=>{for(let i of o)for(let n of i.addedNodes)n.nodeType===1&&n[l]===void 0&&e.contains(n)&&e[se](n)}).observe(e,{childList:!0,subtree:!0}),t},O=(e,r,t)=>{if(t=O.cache[e])return t;let s=e.trim()||"undefined";r&&(s=r(s)),/^(if|let|const)\b/.test(s)||/;(?![^{]*})/.test(s)||(s=`return ${s}`),/\bawait\s/.test(s)&&(s=`return (async()=>{ ${s} })()`);try{t=Se(s),Object.defineProperty(t,"name",{value:`\u2234 ${e}`})}catch(o){console.error(`\u2234 ${o}
22
3
 
23
- // package.json
24
- var package_default;
25
- var init_package = __esm({
26
- "package.json"() {
27
- package_default = {
28
- name: "sprae",
29
- description: "DOM microhydration",
30
- version: "12.2.1",
31
- main: "./sprae.js",
32
- module: "./sprae.js",
33
- "umd:main": "dist/sprae.umd.js",
34
- unpkg: "dist/sprae.umd.js",
35
- types: "dist/sprae.d.ts",
36
- type: "module",
37
- files: [
38
- "core.js",
39
- "sprae.js",
40
- "store.js",
41
- "signal.js",
42
- "micro.js",
43
- "directive",
44
- "dist"
45
- ],
46
- devDependencies: {
47
- "@preact/signals": "^2.0.4",
48
- "@preact/signals-core": "^1.8.0",
49
- "@webreflection/signal": "^2.1.2",
50
- "es-module-shims": "^1.10.0",
51
- esbuild: "^0.23.0",
52
- "esbuild-plugin-umd-wrapper": "^2.0.3",
53
- hyperf: "^1.7.0",
54
- jsdom: "^27.0.0",
55
- requestidlecallback: "^0.3.0",
56
- "signal-polyfill": "^0.1.1",
57
- subscript: "^9.1.0",
58
- tst: "^7.2.0",
59
- ulive: "^1.0.7",
60
- usignal: "^0.9.0",
61
- "wait-please": "^3.1.0"
62
- },
63
- scripts: {
64
- test: "node -r ./test/register.cjs test/test.js",
65
- build: "node .esbuild.js"
66
- },
67
- repository: {
68
- type: "git",
69
- url: "git+https://github.com/dy/sprae.git"
70
- },
71
- keywords: [
72
- "hydration",
73
- "progressive",
74
- "progressive enhancement",
75
- "signals",
76
- "directives",
77
- "preact-signals",
78
- "reactive",
79
- "template-parts",
80
- "petit-vue",
81
- "alpinejs",
82
- "templating"
83
- ],
84
- author: "Dmitry Iv <df.creative@gmail.com>",
85
- license: "MIT",
86
- bugs: {
87
- url: "https://github.com/dy/sprae/issues"
88
- },
89
- homepage: "https://github.com/dy/sprae#readme"
90
- };
91
- }
92
- });
4
+ ${L+ie}="${e}"`)}return O.cache[e]=(o,i,n)=>{try{let a=t?.(o);return i?(a?.then?a.then(u=>n=i(u)):n=i(a),()=>m(n)):a}catch(a){console.error(`\u2234 ${a}
93
5
 
94
- // core.js
95
- var _dispose, _state, _on, _off, _add, prefix, signal, effect, computed, batch, untracked, directive, modifier, currentDir, sprae, initDirective, use, start, compile, parse, applyMods, sx, frag, call, dashcase, attr, clsx, throttle, debounce, core_default;
96
- var init_core = __esm({
97
- "core.js"() {
98
- init_store();
99
- init_package();
100
- init_store();
101
- _dispose = Symbol.dispose || (Symbol.dispose = Symbol("dispose"));
102
- _state = Symbol("state");
103
- _on = Symbol("on");
104
- _off = Symbol("off");
105
- _add = Symbol("init");
106
- prefix = ":";
107
- batch = (fn) => fn();
108
- untracked = batch;
109
- directive = {};
110
- modifier = {};
111
- currentDir = null;
112
- sprae = (el = document.body, state) => {
113
- if (el[_state]) return Object.assign(el[_state], state);
114
- state = store_default(state || {});
115
- let fx = [], offs = [];
116
- el[_on] = () => !offs && (offs = fx.map((fn) => fn()));
117
- el[_off] = () => (offs?.map((off) => off()), offs = null);
118
- el[_dispose] || (el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null));
119
- const add = el[_add] = (el2) => {
120
- let _attrs = el2.attributes, fn;
121
- if (_attrs) for (let i = 0; i < _attrs.length; ) {
122
- let { name, value } = _attrs[i];
123
- if (name.startsWith(prefix)) {
124
- el2.removeAttribute(name);
125
- if (fn = initDirective(el2, name, value, state)) fx.push(fn), offs.push(fn());
126
- if (_state in el2) return;
127
- } else i++;
128
- }
129
- for (let child of [...el2.childNodes]) child.nodeType == 1 && add(child);
130
- };
131
- add(el);
132
- if (el[_state] === void 0) el[_state] = state;
133
- return state;
134
- };
135
- sprae.version = package_default.version;
136
- initDirective = (el, dirName, expr, state) => {
137
- let cur2, off;
138
- let steps = dirName.slice(prefix.length).split("..").map((step, i, { length }) => (
139
- // multiple attributes like :id:for=""
140
- step.split(prefix).reduce((prev, str) => {
141
- let [name, ...mods] = str.split(".");
142
- let evaluate = parse(expr, directive[currentDir = name]?.parse);
143
- if (name.startsWith("on")) {
144
- let type = name.slice(2), fn2 = applyMods(
145
- sx(
146
- // single event vs chain
147
- length == 1 ? (e) => evaluate(state, (fn3) => call(fn3, e)) : (e) => (cur2 = (!i ? (e2) => call(evaluate(state), e2) : cur2)(e), off(), off = steps[(i + 1) % length]()),
148
- { target: el }
149
- ),
150
- mods
151
- );
152
- return (_poff) => (_poff = prev?.(), fn2.target.addEventListener(type, fn2, fn2), () => (_poff?.(), fn2.target.removeEventListener(type, fn2)));
153
- }
154
- let fn, dispose, change, count;
155
- if (mods.length) {
156
- change = signal(-1), // signal authorized to trigger effect: 0 = init; >0 = trigger
157
- count = -1;
158
- fn = applyMods(sx(throttle(() => {
159
- if (++change.value) return;
160
- dispose = effect(() => update && (change.value == count ? fn() : (
161
- // plan update: separate tick (via throttle) makes sure planner effect call is finished before eval call
162
- (count = change.value, evaluate(state, update))
163
- )));
164
- }), { target: el }), mods);
165
- } else {
166
- fn = sx(() => dispose = effect(() => evaluate(state, update)), { target: el });
167
- }
168
- let update = (directive[name] || directive["*"])(fn.target, state, expr, name);
169
- if (!update) return;
170
- if (el[_state]) state = el[_state];
171
- return (_poff) => (_poff = prev?.(), // console.log('ON', name),
172
- fn(), () => (
173
- // console.log('OFF', name, el),
174
- (_poff?.(), dispose?.(), change && (change.value = -1, count = dispose = null))
175
- ));
176
- }, null)
177
- ));
178
- return () => off = steps[0]?.();
179
- };
180
- use = (s) => (s.compile && (compile = s.compile), s.prefix && (prefix = s.prefix), s.signal && (signal = s.signal), s.effect && (effect = s.effect), s.computed && (computed = s.computed), s.batch && (batch = s.batch), s.untracked && (untracked = s.untracked));
181
- start = (root = document.body, values) => {
182
- const state = store_default(values);
183
- sprae(root, state);
184
- const mo = new MutationObserver((mutations) => {
185
- for (const m of mutations) {
186
- for (const el of m.addedNodes) {
187
- if (el.nodeType === 1 && el[_state] === void 0 && root.contains(el)) {
188
- root[_add](el);
189
- }
190
- }
191
- }
192
- });
193
- mo.observe(root, { childList: true, subtree: true });
194
- return state;
195
- };
196
- parse = (expr, prepare, _fn) => {
197
- if (_fn = parse.cache[expr]) return _fn;
198
- let _expr = expr.trim() || "undefined";
199
- if (prepare) _expr = prepare(_expr);
200
- if (/^(if|let|const)\b/.test(_expr) || /;(?![^{]*})/.test(_expr)) ;
201
- else _expr = `return ${_expr}`;
202
- if (/\bawait\s/.test(_expr)) _expr = `return (async()=>{ ${_expr} })()`;
203
- try {
204
- _fn = compile(_expr);
205
- Object.defineProperty(_fn, "name", { value: `\u2234 ${expr}` });
206
- } catch (e) {
207
- console.error(`\u2234 ${e}
208
-
209
- ${prefix + currentDir}="${expr}"`);
210
- }
211
- return parse.cache[expr] = (state, cb, _out) => {
212
- try {
213
- let result = _fn?.(state);
214
- if (cb) return result?.then ? result.then((v) => _out = cb(v)) : _out = cb(result), () => call(_out);
215
- else return result;
216
- } catch (e) {
217
- console.error(`\u2234 ${e}
218
-
219
- ${prefix + currentDir}="${expr}"`);
220
- }
221
- };
222
- };
223
- parse.cache = {};
224
- applyMods = (fn, mods) => {
225
- while (mods.length) {
226
- let [name, ...params] = mods.pop().split("-");
227
- fn = sx(modifier[name]?.(fn, ...params) ?? fn, fn);
228
- }
229
- return fn;
230
- };
231
- sx = (a, b) => {
232
- if (a != b) for (let k in b) a[k] ?? (a[k] = b[k]);
233
- return a;
234
- };
235
- frag = (tpl) => {
236
- if (!tpl.nodeType) return tpl;
237
- let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(""), childNodes = (content.append(ref), [...content.childNodes]);
238
- return {
239
- // get parentNode() { return childNodes[0].parentNode },
240
- childNodes,
241
- content,
242
- remove: () => content.append(...childNodes),
243
- replaceWith(el) {
244
- if (el === ref) return;
245
- ref.before(el);
246
- content.append(...childNodes);
247
- },
248
- attributes,
249
- removeAttribute(name) {
250
- attributes.splice(attributes.findIndex((a) => a.name === name), 1);
251
- }
252
- // setAttributeNode() { }
253
- };
254
- };
255
- call = (v, arg) => typeof v === "function" ? v(arg) : v;
256
- dashcase = (str) => str.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g, (match, i) => (i ? "-" : "") + match.toLowerCase());
257
- attr = (el, name, v) => v == null || v === false ? el.removeAttribute(name) : el.setAttribute(name, v === true ? "" : v);
258
- clsx = (c, _out = []) => !c ? "" : typeof c === "string" ? c : (Array.isArray(c) ? c.map(clsx) : Object.entries(c).reduce((s, [k, v]) => !v ? s : [...s, k], [])).join(" ");
259
- throttle = (fn, schedule = queueMicrotask) => {
260
- let _planned = 0;
261
- const throttled = (e) => {
262
- if (!_planned++) fn(e), schedule((_dirty = _planned > 1) => (_planned = 0, _dirty && throttled(e)));
263
- };
264
- return throttled;
265
- };
266
- debounce = (fn, schedule = queueMicrotask, _count = 0) => (arg, _planned = ++_count) => schedule(() => _planned == _count && fn(arg));
267
- core_default = sprae;
268
- }
269
- });
270
-
271
- // store.js
272
- var _signals, _change, _set, sandbox, store, list, create, set, store_default;
273
- var init_store = __esm({
274
- "store.js"() {
275
- init_core();
276
- _signals = Symbol("signals");
277
- _change = Symbol("change");
278
- _set = Symbol("set");
279
- sandbox = true;
280
- store = (values, parent) => {
281
- if (!values) return values;
282
- if (values[Symbol.toStringTag]) return values;
283
- if (values[_signals]) return values;
284
- if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values;
285
- let keyCount = Object.keys(values).length, signals = {};
286
- let state = new Proxy(Object.assign(signals, {
287
- [_change]: signal(keyCount),
288
- [_signals]: signals
289
- }), {
290
- get: (_, k) => {
291
- if (k in signals) return signals[k] ? signals[k].valueOf() : signals[k];
292
- return parent ? parent[k] : globalThis[k];
293
- },
294
- set: (_, k, v, _s) => {
295
- if (k in signals) return set(signals, k, v), 1;
296
- sandbox = false;
297
- if (parent && k in parent) {
298
- parent[k] = v;
299
- } else {
300
- create(signals, k, v);
301
- signals[_change].value = ++keyCount;
302
- }
303
- sandbox = true;
304
- return 1;
305
- },
306
- // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?
307
- deleteProperty: (_, k) => {
308
- k in signals && (k[0] != "_" && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount);
309
- return 1;
310
- },
311
- // subscribe to length when spreading
312
- ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),
313
- // sandbox prevents writing to global
314
- has: (_, k) => {
315
- if (k in signals) return true;
316
- if (parent) return k in parent;
317
- return sandbox;
318
- }
319
- });
320
- const descs = Object.getOwnPropertyDescriptors(values);
321
- for (let k in values) {
322
- if (descs[k]?.get)
323
- (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);
324
- else create(signals, k, values[k]);
325
- }
326
- return state;
327
- };
328
- list = (values, parent = globalThis) => {
329
- let signals = Array(values.length).fill(null), isMut = false, mut = (fn) => function() {
330
- isMut = true;
331
- return fn.apply(this, arguments);
332
- }, length = signal(values.length), state = new Proxy(
333
- Object.assign(signals, {
334
- [_change]: length,
335
- [_signals]: signals,
336
- // patch mutators
337
- push: mut(signals.push),
338
- pop: mut(signals.pop),
339
- shift: mut(signals.shift),
340
- unshift: mut(signals.unshift),
341
- splice: mut(signals.splice)
342
- }),
343
- {
344
- get(_, k) {
345
- if (k === "length") return isMut ? (isMut = false, signals.length) : length.value;
346
- if (typeof k === "symbol" || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];
347
- return (signals[k] ?? (signals[k] = signal(store(values[k])))).valueOf();
348
- },
349
- set(_, k, v) {
350
- if (k === "length") {
351
- for (let i = v; i < signals.length; i++) delete state[i];
352
- length.value = signals.length = v;
353
- } else if (k >= signals.length) create(signals, k, v), state.length = +k + 1;
354
- else signals[k] ? set(signals, k, v) : create(signals, k, v);
355
- return 1;
356
- },
357
- // dispose notifies any signal deps, like :each
358
- deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1)
359
- }
360
- );
361
- return state;
362
- };
363
- create = (signals, k, v) => signals[k] = k[0] == "_" || v?.peek ? v : signal(store(v));
364
- set = (signals, k, v, _s, _v) => {
365
- return k[0] === "_" ? signals[k] = v : v !== (_v = (_s = signals[k]).peek()) && // stashed _set for value with getter/setter
366
- (_s[_set] ? _s[_set](v) : (
367
- // patch array
368
- Array.isArray(v) && Array.isArray(_v) ? (
369
- // if we update plain array (stored in signal) - take over value instead
370
- // since input value can be store, we have to make sure we don't subscribe to its length or values
371
- // FIXME: generalize to objects
372
- _change in _v ? untracked(() => batch(() => {
373
- for (let i = 0; i < v.length; i++) _v[i] = v[i];
374
- _v.length = v.length;
375
- })) : _s.value = v
376
- ) : (
377
- // .x = y
378
- _s.value = store(v)
379
- )
380
- ));
381
- };
382
- store_default = store;
383
- }
384
- });
385
-
386
- // signal.js
387
- var current, depth, batched, signal2, effect2, computed2, batch2, untracked2;
388
- var init_signal = __esm({
389
- "signal.js"() {
390
- depth = 0;
391
- signal2 = (v, _s, _obs = /* @__PURE__ */ new Set(), _v = () => _s.value) => _s = {
392
- get value() {
393
- current?.deps.push(_obs.add(current));
394
- return v;
395
- },
396
- set value(val) {
397
- if (val === v) return;
398
- v = val;
399
- for (let sub of _obs) batched ? batched.add(sub) : sub();
400
- },
401
- peek() {
402
- return v;
403
- },
404
- toJSON: _v,
405
- then: _v,
406
- toString: _v,
407
- valueOf: _v
408
- };
409
- effect2 = (fn, _teardown, _fx, _deps, __tmp) => (_fx = (prev) => {
410
- __tmp = _teardown;
411
- _teardown = null;
412
- __tmp?.call?.();
413
- prev = current, current = _fx;
414
- if (depth++ > 10) throw "Cycle detected";
415
- try {
416
- _teardown = fn();
417
- } finally {
418
- current = prev;
419
- depth--;
420
- }
421
- }, _deps = _fx.deps = [], _fx(), (dep) => {
422
- _teardown?.call?.();
423
- while (dep = _deps.pop()) dep.delete(_fx);
424
- });
425
- computed2 = (fn, _s = signal2(), _c, _e, _v = () => _c.value) => _c = {
426
- get value() {
427
- _e || (_e = effect2(() => _s.value = fn()));
428
- return _s.value;
429
- },
430
- peek: _s.peek,
431
- toJSON: _v,
432
- then: _v,
433
- toString: _v,
434
- valueOf: _v
435
- };
436
- batch2 = (fn, _first = !batched) => {
437
- batched ?? (batched = /* @__PURE__ */ new Set());
438
- try {
439
- fn();
440
- } finally {
441
- if (_first) {
442
- for (const fx of batched) fx();
443
- batched = null;
444
- }
445
- }
446
- };
447
- untracked2 = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v);
448
- }
449
- });
450
-
451
- // directive/if.js
452
- var if_default;
453
- var init_if = __esm({
454
- "directive/if.js"() {
455
- init_core();
456
- if_default = (el, state, _holder, _el, _match) => {
457
- var _a;
458
- if (!el._holder) {
459
- el[_a = _state] ?? (el[_a] = null);
460
- _el = el.content ? frag(el) : el;
461
- el.replaceWith(_holder = document.createTextNode(""));
462
- _el._holder = _holder._holder = _holder;
463
- _holder._clauses = [_el._clause = [_el, false]];
464
- _holder.update = throttle(() => {
465
- let match = _holder._clauses.find(([, s]) => s);
466
- if (match != _match) {
467
- _match?.[0].remove();
468
- _match?.[0][_off]?.();
469
- if (_match = match) {
470
- _holder.before(_match[0].content || _match[0]);
471
- !_match[0][_state] ? (delete _match[0][_state], core_default(_match[0], state)) : _match[0][_on]?.();
472
- }
473
- }
474
- });
475
- } else core_default(_el = el, state);
476
- return (value) => {
477
- _el._clause[1] = value;
478
- _el._holder.update();
479
- };
480
- };
481
- }
482
- });
483
-
484
- // directive/else.js
485
- var else_default;
486
- var init_else = __esm({
487
- "directive/else.js"() {
488
- init_core();
489
- else_default = (el, state, _el, _, _prev = el) => {
490
- _el = el.content ? frag(el) : el;
491
- while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling;
492
- el.remove();
493
- el[_state] = null;
494
- _el._holder._clauses.push(_el._clause = [_el, true]);
495
- return _el._holder.update;
496
- };
497
- }
498
- });
499
-
500
- // directive/text.js
501
- var text_default;
502
- var init_text = __esm({
503
- "directive/text.js"() {
504
- init_core();
505
- text_default = (el) => (
506
- // <template :text="a"/> or previously initialized template
507
- (el.content && el.replaceWith(el = frag(el).childNodes[0]), (v) => (v = call(v, el.textContent), el.textContent = v == null ? "" : v))
508
- );
509
- }
510
- });
511
-
512
- // directive/class.js
513
- var class_default;
514
- var init_class = __esm({
515
- "directive/class.js"() {
516
- init_core();
517
- class_default = (el, _cur, _new) => (_cur = /* @__PURE__ */ new Set(), (v) => {
518
- _new = /* @__PURE__ */ new Set();
519
- if (v) clsx(call(v, el.className)).split(" ").map((c) => c && _new.add(c));
520
- for (let c of _cur) if (_new.has(c)) _new.delete(c);
521
- else el.classList.remove(c);
522
- for (let c of _cur = _new) el.classList.add(c);
523
- });
524
- }
525
- });
526
-
527
- // directive/style.js
528
- var style_default;
529
- var init_style = __esm({
530
- "directive/style.js"() {
531
- init_core();
532
- style_default = (el, _static) => (_static = el.getAttribute("style"), (v) => {
533
- v = call(v, el.style);
534
- if (typeof v === "string") attr(el, "style", _static + "; " + v);
535
- else {
536
- if (_static) attr(el, "style", _static);
537
- for (let k in v) k[0] == "-" ? el.style.setProperty(k, v[k]) : k[0] > "A" && (el.style[k] = v[k]);
538
- }
539
- });
540
- }
541
- });
542
-
543
- // directive/fx.js
544
- var fx_default;
545
- var init_fx = __esm({
546
- "directive/fx.js"() {
547
- init_core();
548
- fx_default = () => call;
549
- }
550
- });
551
-
552
- // directive/value.js
553
- var setter, value_default;
554
- var init_value = __esm({
555
- "directive/value.js"() {
556
- init_core();
557
- setter = (expr, _set2 = parse(`${expr}=__`)) => (target, value) => {
558
- target.__ = value;
559
- _set2(target), delete target.__;
560
- };
561
- value_default = (el, state, expr, name) => {
562
- try {
563
- const set2 = setter(expr);
564
- const handleChange = el.type === "checkbox" ? () => set2(state, el.checked) : el.type === "select-multiple" ? () => set2(state, [...el.selectedOptions].map((o) => o.value)) : () => set2(state, el.selectedIndex < 0 ? null : el.value);
565
- el.oninput = el.onchange = handleChange;
566
- if (el.type?.startsWith("select")) {
567
- new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });
568
- core_default(el, state);
569
- }
570
- parse(expr)(state) ?? handleChange();
571
- } catch {
572
- }
573
- return 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) => (
574
- // we retain selection in input
575
- (from = el.selectionStart, to = el.selectionEnd, el.setAttribute("value", el.value = value == null ? "" : value), from && el.setSelectionRange(from, to))
576
- ) : el.type === "checkbox" ? (value) => (el.checked = value, attr(el, "checked", value)) : el.type === "radio" ? (value) => el.value === value && (el.checked = value, attr(el, "checked", value)) : el.type === "select-one" ? (value) => {
577
- for (let o of el.options)
578
- o.value == value ? o.setAttribute("selected", "") : o.removeAttribute("selected");
579
- el.value = value;
580
- } : el.type === "select-multiple" ? (value) => {
581
- for (let o of el.options) o.removeAttribute("selected");
582
- for (let v of value) el.querySelector(`[value="${v}"]`).setAttribute("selected", "");
583
- } : (value) => el.value = value;
584
- };
585
- }
586
- });
587
-
588
- // directive/ref.js
589
- var ref_default;
590
- var init_ref = __esm({
591
- "directive/ref.js"() {
592
- init_core();
593
- ref_default = (el, state, expr, name, _prev, _set2) => {
594
- if (typeof parse(expr)(state) == "function") return (v) => v(el);
595
- Object.defineProperty(state, expr, { value: el, configurable: true });
596
- };
597
- }
598
- });
599
-
600
- // directive/scope.js
601
- var scope_default;
602
- var init_scope = __esm({
603
- "directive/scope.js"() {
604
- init_core();
605
- scope_default = (el, rootState) => {
606
- let subscope = el[_state] = store({}, rootState), init = false;
607
- return (values) => {
608
- values = call(values, subscope);
609
- if (values !== subscope) {
610
- for (let k in values) {
611
- let v = typeof values[k] === "function" ? values[k].bind(subscope) : values[k];
612
- if (k in subscope[_signals]) subscope[k] = v;
613
- else subscope[_signals][k] = k[0] == "_" || v?.peek ? v : signal(store(v));
614
- }
615
- }
616
- return !init && (init = true, delete el[_state], untracked(() => core_default(el, subscope)));
617
- };
618
- };
619
- }
620
- });
621
-
622
- // directive/each.js
623
- var each, each_default;
624
- var init_each = __esm({
625
- "directive/each.js"() {
626
- init_core();
627
- each = (tpl, state, expr) => {
628
- let [itemVar, idxVar = "$"] = expr.split(/\bin\b/)[0].trim().replace(/\(|\)/g, "").split(/\s*,\s*/);
629
- let holder = document.createTextNode("");
630
- let cur2, keys2, items, prevl = 0;
631
- let update = throttle(() => {
632
- var _a, _b;
633
- let i = 0, newItems = items, newl = newItems.length;
634
- if (cur2 && !cur2[_change]) {
635
- for (let s of cur2[_signals] || []) s[Symbol.dispose]();
636
- cur2 = null, prevl = 0;
637
- }
638
- if (newl < prevl) cur2.length = newl;
639
- else {
640
- if (!cur2) cur2 = newItems;
641
- else while (i < prevl) cur2[i] = newItems[i++];
642
- for (; i < newl; i++) {
643
- cur2[i] = newItems[i];
644
- let idx = i, subscope = Object.create(state, {
645
- [itemVar]: { get: () => cur2[idx] },
646
- [idxVar]: { value: keys2 ? keys2[idx] : idx }
647
- });
648
- let el = tpl.content ? frag(tpl) : tpl.cloneNode(true);
649
- holder.before(el.content || el);
650
- core_default(el, subscope);
651
- let _prev = ((_b = cur2[_a = _signals] || (cur2[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose];
652
- cur2[_signals][i][Symbol.dispose] = () => {
653
- _prev?.(), el[Symbol.dispose]?.(), el.remove();
654
- };
655
- }
656
- }
657
- prevl = newl;
658
- });
659
- tpl.replaceWith(holder);
660
- tpl[_state] = null;
661
- return (value) => {
662
- keys2 = null;
663
- if (typeof value === "number") items = Array.from({ length: value }, (_, i) => i + 1);
664
- else if (value?.constructor === Object) keys2 = Object.keys(value), items = Object.values(value);
665
- else items = value || [];
666
- return effect(() => {
667
- items[_change]?.value;
668
- update();
669
- });
670
- };
671
- };
672
- each.parse = (str) => str.split(/\bin\b/)[1].trim();
673
- each_default = each;
674
- }
675
- });
676
-
677
- // directive/default.js
678
- var default_default;
679
- var init_default = __esm({
680
- "directive/default.js"() {
681
- init_core();
682
- default_default = (el, st, ex, name) => (v) => attr(el, name, call(v, el.getAttribute(name)));
683
- }
684
- });
685
-
686
- // directive/spread.js
687
- var spread_default;
688
- var init_spread = __esm({
689
- "directive/spread.js"() {
690
- init_core();
691
- spread_default = (target) => (value) => {
692
- for (let key in value) attr(target, dashcase(key), value[key]);
693
- };
694
- }
695
- });
696
-
697
- // sprae.js
698
- var sprae_exports = {};
699
- __export(sprae_exports, {
700
- batch: () => batch2,
701
- computed: () => computed2,
702
- default: () => sprae_default,
703
- effect: () => effect2,
704
- signal: () => signal2,
705
- sprae: () => core_default,
706
- start: () => start,
707
- store: () => store_default,
708
- untracked: () => untracked2,
709
- use: () => use
710
- });
711
- var keys, sprae_default;
712
- var init_sprae = __esm({
713
- "sprae.js"() {
714
- init_store();
715
- init_signal();
716
- init_core();
717
- init_if();
718
- init_else();
719
- init_text();
720
- init_class();
721
- init_style();
722
- init_fx();
723
- init_value();
724
- init_ref();
725
- init_scope();
726
- init_each();
727
- init_default();
728
- init_spread();
729
- Object.assign(directive, {
730
- // :x="x"
731
- "*": default_default,
732
- // FIXME
733
- // 'on*': _on,
734
- // :="{a,b,c}"
735
- "": spread_default,
736
- // :class="[a, b, c]"
737
- class: class_default,
738
- // :text="..."
739
- text: text_default,
740
- // :style="..."
741
- style: style_default,
742
- // :fx="..."
743
- fx: fx_default,
744
- // :value - 2 way binding like x-model
745
- value: value_default,
746
- // :ref="..."
747
- ref: ref_default,
748
- // :scope creates variables scope for a subtree
749
- scope: scope_default,
750
- if: if_default,
751
- else: else_default,
752
- // :each="v,k in src"
753
- each: each_default
754
- });
755
- Object.assign(modifier, {
756
- debounce: (fn, _how = 250, _schedule = _how === "tick" ? queueMicrotask : _how === "raf" ? requestAnimationFrame : _how === "idle" ? requestIdleCallback : (fn2) => setTimeout(fn2, _how), _count = 0) => debounce(fn, _schedule),
757
- throttle: (fn, _how = 250, _schedule = _how === "tick" ? queueMicrotask : _how === "raf" ? requestAnimationFrame : (fn2) => setTimeout(fn2, _how)) => throttle(fn, _schedule),
758
- once: (fn, _done, _fn) => Object.assign((e) => !_done && (_done = 1, fn(e)), { once: true }),
759
- // event modifiers
760
- // actions
761
- prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),
762
- stop: (fn) => (e) => (e?.stopPropagation(), fn(e)),
763
- immediate: (fn) => (e) => (e?.stopImmediatePropagation(), fn(e)),
764
- // options
765
- passive: (fn) => (fn.passive = true, fn),
766
- capture: (fn) => (fn.capture = true, fn),
767
- // target
768
- window: (fn) => (fn.target = fn.target.ownerDocument.defaultView, fn),
769
- document: (fn) => (fn.target = fn.target.ownerDocument, fn),
770
- root: (fn) => (fn.target = fn.target.ownerDocument.documentElement, fn),
771
- body: (fn) => (fn.target = fn.target.ownerDocument.body, fn),
772
- parent: (fn) => (fn.target = fn.target.parentNode, fn),
773
- // testers
774
- self: (fn) => (e) => e.target === fn.target && fn(e),
775
- outside: (fn) => (e, _target) => (_target = fn.target, !_target.contains(e.target) && e.target.isConnected && (_target.offsetWidth || _target.offsetHeight))
776
- });
777
- keys = {
778
- ctrl: (e) => e.ctrlKey || e.key === "Control" || e.key === "Ctrl",
779
- shift: (e) => e.shiftKey || e.key === "Shift",
780
- alt: (e) => e.altKey || e.key === "Alt",
781
- meta: (e) => e.metaKey || e.key === "Meta" || e.key === "Command",
782
- arrow: (e) => e.key.startsWith("Arrow"),
783
- enter: (e) => e.key === "Enter",
784
- esc: (e) => e.key.startsWith("Esc"),
785
- tab: (e) => e.key === "Tab",
786
- space: (e) => e.key === "\xA0" || e.key === "Space" || e.key === " ",
787
- delete: (e) => e.key === "Delete" || e.key === "Backspace",
788
- digit: (e) => /^\d$/.test(e.key),
789
- letter: (e) => /^\p{L}$/gu.test(e.key),
790
- char: (e) => /^\S$/.test(e.key)
791
- };
792
- for (let k in keys) modifier[k] = (fn, ...params) => (e) => keys[k](e) && params.every((k2) => keys[k2]?.(e) ?? e.key === k2) && fn(e);
793
- use({
794
- compile: (expr) => {
795
- return core_default.constructor(`with (arguments[0]) { ${expr} }`);
796
- },
797
- // signals
798
- signal: signal2,
799
- effect: effect2,
800
- computed: computed2,
801
- batch: batch2,
802
- untracked: untracked2
803
- });
804
- core_default.use = use;
805
- core_default.store = store_default;
806
- core_default.directive = directive;
807
- core_default.modifier = modifier;
808
- core_default.start = start;
809
- sprae_default = core_default;
810
- }
811
- });
812
-
813
- // <stdin>
814
- var sprae2 = (init_sprae(), __toCommonJS(sprae_exports)).default;
815
- module.exports = sprae2;
816
- var cur = document.currentScript;
817
- var prefix2 = cur.getAttribute("prefix") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;
818
- var start2 = cur.getAttribute("start") ?? cur.dataset.start ?? cur.dataset.spraeStart;
819
- if (prefix2) sprae2.use({ prefix: prefix2 });
820
- if (start2 != null && start2 !== "false") (start2 && start2 !== "true" ? document.querySelectorAll(start2) : [document.body || document.documentElement]).forEach((el) => sprae2.start(el));
6
+ ${L+ie}="${e}"`)}}};O.cache={};xe=(e,r)=>{for(;r.length;){let[t,...s]=r.pop().split("-");e=z(H[t]?.(e,...s)??e,e)}return e},z=(e,r)=>{if(e!=r)for(let t in r)e[t]??(e[t]=r[t]);return e},D=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],s=document.createTextNode(""),o=(r.append(s),[...r.childNodes]);return{childNodes:o,content:r,remove:()=>r.append(...o),replaceWith(i){i!==s&&(s.before(i),r.append(...o))},attributes:t,removeAttribute(i){t.splice(t.findIndex(n=>n.name===i),1)}}},m=(e,r)=>typeof e=="function"?e(r):e,Ae=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase()),A=(e,r,t)=>t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":t),ce=(e,r=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(ce):Object.entries(e).reduce((t,[s,o])=>o?[...t,s]:t,[])).join(" "):"",q=(e,r=queueMicrotask)=>{let t=0,s=o=>{t++||(e(o),r((i=t>1)=>(t=0,i&&s(o))))};return s},je=(e,r=queueMicrotask,t=0)=>(s,o=++t)=>r(()=>o==t&&e(s)),f=ae});var j,w,pe,le,E,ut,_,Oe,v,Y=d(()=>{y();j=Symbol("signals"),w=Symbol("change"),pe=Symbol("set"),le=!0,E=(e,r)=>{if(!e||e[Symbol.toStringTag]||e[j])return e;if(e.constructor!==Object)return Array.isArray(e)?ut(e):e;let t=Object.keys(e).length,s={},o=new Proxy(Object.assign(s,{[w]:k(t),[j]:s}),{get:(n,a)=>a in s?s[a]?s[a].valueOf():s[a]:r?r[a]:globalThis[a],set:(n,a,u,p)=>a in s?(Oe(s,a,u),1):(le=!1,r&&a in r?r[a]=u:(_(s,a,u),s[w].value=++t),le=!0,1),deleteProperty:(n,a)=>(a in s&&(a[0]!="_"&&s[a]?.[Symbol.dispose]?.(),delete s[a],s[w].value=--t),1),ownKeys:()=>(s[w].value,Reflect.ownKeys(s)),has:(n,a)=>a in s?!0:r?a in r:le}),i=Object.getOwnPropertyDescriptors(e);for(let n in e)i[n]?.get?(s[n]=ne(i[n].get.bind(o)))[pe]=i[n].set?.bind(o):_(s,n,e[n]);return o},ut=(e,r=globalThis)=>{let t=Array(e.length).fill(null),s=!1,o=a=>function(){return s=!0,a.apply(this,arguments)},i=k(e.length),n=new Proxy(Object.assign(t,{[w]:i,[j]:t,push:o(t.push),pop:o(t.pop),shift:o(t.shift),unshift:o(t.unshift),splice:o(t.splice)}),{get(a,u){return u==="length"?s?(s=!1,t.length):i.value:typeof u=="symbol"||isNaN(u)?t[u]?.valueOf()??r[u]:(t[u]??(t[u]=k(E(e[u])))).valueOf()},set(a,u,p){if(u==="length"){for(let h=p;h<t.length;h++)delete n[h];i.value=t.length=p}else u>=t.length?(_(t,u,p),n.length=+u+1):t[u]?Oe(t,u,p):_(t,u,p);return 1},deleteProperty:(a,u)=>(t[u]?.[Symbol.dispose]?.(),delete t[u],1)});return n},_=(e,r,t)=>e[r]=r[0]=="_"||t?.peek?t:k(E(t)),Oe=(e,r,t,s,o)=>r[0]==="_"?e[r]=t:t!==(o=(s=e[r]).peek())&&(s[pe]?s[pe](t):Array.isArray(t)&&Array.isArray(o)?w in o?B(()=>Q(()=>{for(let i=0;i<t.length;i++)o[i]=t[i];o.length=t.length})):s.value=t:s.value=E(t)),v=E});var T,ke,I,ee,te,fe,de,me,we=d(()=>{ke=0,ee=(e,r,t=new Set,s=()=>r.value)=>r={get value(){return T?.deps.push(t.add(T)),e},set value(o){if(o!==e){e=o;for(let i of t)I?I.add(i):i()}},peek(){return e},toJSON:s,then:s,toString:s,valueOf:s},te=(e,r,t,s,o)=>(t=i=>{if(o=r,r=null,o?.call?.(),i=T,T=t,ke++>10)throw"Cycle detected";try{r=e()}finally{T=i,ke--}},s=t.deps=[],t(),i=>{for(r?.call?.();i=s.pop();)i.delete(t)}),fe=(e,r=ee(),t,s,o=()=>t.value)=>t={get value(){return s||(s=te(()=>r.value=e())),r.value},peek:r.peek,toJSON:o,then:o,toString:o,valueOf:o},de=(e,r=!I)=>{I??(I=new Set);try{e()}finally{if(r){for(let t of I)t();I=null}}},me=(e,r,t)=>(r=T,T=null,t=e(),T=r,t)});var Ne,$e=d(()=>{y();Ne=(e,r,t,s,o)=>{var i;return e._holder?f(s=e,r):(e[i=l]??(e[i]=null),s=e.content?D(e):e,e.replaceWith(t=document.createTextNode("")),s._holder=t._holder=t,t._clauses=[s._clause=[s,!1]],t.update=q(()=>{let n=t._clauses.find(([,a])=>a);n!=o&&(o?.[0].remove(),o?.[0][F]?.(),(o=n)&&(t.before(o[0].content||o[0]),o[0][l]?o[0][G]?.():(delete o[0][l],f(o[0],r))))})),n=>{s._clause[1]=n,s._holder.update()}}});var De,Te=d(()=>{y();De=(e,r,t,s,o=e)=>{for(t=e.content?D(e):e;o&&!(t._holder=o._holder);)o=o.previousSibling;return e.remove(),e[l]=null,t._holder._clauses.push(t._clause=[t,!0]),t._holder.update}});var Ce,qe=d(()=>{y();Ce=e=>(e.content&&e.replaceWith(e=D(e).childNodes[0]),r=>(r=m(r,e.textContent),e.textContent=r??""))});var Ee,Me=d(()=>{y();Ee=(e,r,t)=>(r=new Set,s=>{t=new Set,s&&ce(m(s,e.className)).split(" ").map(o=>o&&t.add(o));for(let o of r)t.has(o)?t.delete(o):e.classList.remove(o);for(let o of r=t)e.classList.add(o)})});var Pe,We=d(()=>{y();Pe=(e,r)=>(r=e.getAttribute("style"),t=>{if(t=m(t,e.style),typeof t=="string")A(e,"style",r+"; "+t);else{r&&A(e,"style",r);for(let s in t)s[0]=="-"?e.style.setProperty(s,t[s]):s[0]>"A"&&(e.style[s]=t[s])}})});var Le,ve=d(()=>{y();Le=()=>m});var ct,Ie,Ke=d(()=>{y();ct=(e,r=O(`${e}=__`))=>(t,s)=>{t.__=s,r(t),delete t.__},Ie=(e,r,t,s)=>{try{let o=ct(t),i=e.type==="checkbox"?()=>o(r,e.checked):e.type==="select-multiple"?()=>o(r,[...e.selectedOptions].map(n=>n.value)):()=>o(r,e.selectedIndex<0?null:e.value);e.oninput=e.onchange=i,e.type?.startsWith("select")&&(new MutationObserver(i).observe(e,{childList:!0,subtree:!0,attributes:!0}),f(e,r)),O(t)(r)??i()}catch{}return e.type==="text"||e.type===""?o=>e.setAttribute("value",e.value=o??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(o,i,n)=>(i=e.selectionStart,n=e.selectionEnd,e.setAttribute("value",e.value=o??""),i&&e.setSelectionRange(i,n)):e.type==="checkbox"?o=>(e.checked=o,A(e,"checked",o)):e.type==="radio"?o=>e.value===o&&(e.checked=o,A(e,"checked",o)):e.type==="select-one"?o=>{for(let i of e.options)i.value==o?i.setAttribute("selected",""):i.removeAttribute("selected");e.value=o}:e.type==="select-multiple"?o=>{for(let i of e.options)i.removeAttribute("selected");for(let i of o)e.querySelector(`[value="${i}"]`).setAttribute("selected","")}:o=>e.value=o}});var Re,Ve=d(()=>{y();Re=(e,r,t,s,o,i)=>{if(typeof O(t)(r)=="function")return n=>n(e);Object.defineProperty(r,t,{value:e,configurable:!0})}});var Fe,Je=d(()=>{y();Fe=(e,r)=>{let t=e[l]=E({},r),s=!1;return o=>{if(o=m(o,t),o!==t)for(let i in o){let n=typeof o[i]=="function"?o[i].bind(t):o[i];i in t[j]?t[i]=n:t[j][i]=i[0]=="_"||n?.peek?n:k(E(n))}return!s&&(s=!0,delete e[l],B(()=>f(e,t)))}}});var Be,He,Xe=d(()=>{y();Be=(e,r,t)=>{let[s,o="$"]=t.split(/\bin\b/)[0].trim().replace(/\(|\)/g,"").split(/\s*,\s*/),i=document.createTextNode(""),n,a,u,p=0,h=q(()=>{var C,N;let c=0,g=u,b=g.length;if(n&&!n[w]){for(let x of n[j]||[])x[Symbol.dispose]();n=null,p=0}if(b<p)n.length=b;else{if(!n)n=g;else for(;c<p;)n[c]=g[c++];for(;c<b;c++){n[c]=g[c];let x=c,$=Object.create(r,{[s]:{get:()=>n[x]},[o]:{value:a?a[x]:x}}),S=e.content?D(e):e.cloneNode(!0);i.before(S.content||S),f(S,$);let M=((N=n[C=j]||(n[C]=[]))[c]||(N[c]={}))[Symbol.dispose];n[j][c][Symbol.dispose]=()=>{M?.(),S[Symbol.dispose]?.(),S.remove()}}}p=b});return e.replaceWith(i),e[l]=null,c=>(a=null,typeof c=="number"?u=Array.from({length:c},(g,b)=>b+1):c?.constructor===Object?(a=Object.keys(c),u=Object.values(c)):u=c||[],J(()=>{u[w]?.value,h()}))};Be.parse=e=>e.split(/\bin\b/)[1].trim();He=Be});var Ze,ze=d(()=>{y();Ze=(e,r,t,s)=>o=>A(e,s,m(o,e.getAttribute(s)))});var Ge,Qe=d(()=>{y();Ge=e=>r=>{for(let t in r)A(e,Ae(t),r[t])}});var Ue={};ot(Ue,{batch:()=>de,computed:()=>fe,default:()=>lt,effect:()=>te,signal:()=>ee,sprae:()=>f,start:()=>ue,store:()=>v,untracked:()=>me,use:()=>U});var ye,lt,Ye=d(()=>{Y();we();y();$e();Te();qe();Me();We();ve();Ke();Ve();Je();Xe();ze();Qe();Object.assign(W,{"*":Ze,"":Ge,class:Ee,text:Ce,style:Pe,fx:Le,value:Ie,ref:Re,scope:Fe,if:Ne,else:De,each:He});Object.assign(H,{debounce:(e,r=250,t=r==="tick"?queueMicrotask:r==="raf"?requestAnimationFrame:r==="idle"?requestIdleCallback:o=>setTimeout(o,r),s=0)=>je(e,t),throttle:(e,r=250,t=r==="tick"?queueMicrotask:r==="raf"?requestAnimationFrame:s=>setTimeout(s,r))=>q(e,t),once:(e,r,t)=>Object.assign(s=>!r&&(r=1,e(s)),{once:!0}),prevent:e=>r=>(r?.preventDefault(),e(r)),stop:e=>r=>(r?.stopPropagation(),e(r)),immediate:e=>r=>(r?.stopImmediatePropagation(),e(r)),passive:e=>(e.passive=!0,e),capture:e=>(e.capture=!0,e),window:e=>(e.target=e.target.ownerDocument.defaultView,e),document:e=>(e.target=e.target.ownerDocument,e),root:e=>(e.target=e.target.ownerDocument.documentElement,e),body:e=>(e.target=e.target.ownerDocument.body,e),parent:e=>(e.target=e.target.parentNode,e),self:e=>r=>r.target===e.target&&e(r),outside:e=>(r,t)=>(t=e.target,!t.contains(r.target)&&r.target.isConnected&&(t.offsetWidth||t.offsetHeight))});ye={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)};for(let e in ye)H[e]=(r,...t)=>s=>ye[e](s)&&t.every(o=>ye[o]?.(s)??s.key===o)&&r(s);U({compile:e=>f.constructor(`with (arguments[0]) { ${e} }`),signal:ee,effect:te,computed:fe,batch:de,untracked:me});f.use=U;f.store=v;f.directive=W;f.modifier=H;f.start=ue;lt=f});var ge=(Ye(),it(Ue)).default;module.exports=ge;var K=document.currentScript,_e=K.getAttribute("prefix")??K.dataset.prefix??K.dataset.spraePrefix,X=K.getAttribute("start")??K.dataset.start??K.dataset.spraeStart;_e&&ge.use({prefix:_e});X!=null&&X!=="false"&&(X&&X!=="true"?document.querySelectorAll(X):[document.body||document.documentElement]).forEach(e=>ge.start(e));
821
7
  ;if (typeof module.exports == "object" && typeof exports == "object") {
822
8
  var __cp = (to, from, except, desc) => {
823
9
  if ((from && typeof from === "object") || typeof from === "function") {