sprae 12.2.1 → 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,828 +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.0",
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("add");
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 = [], fn, on = () => !offs && (offs = fx.map((fn2) => fn2())), off = () => (offs?.map((off2) => off2()), offs = null);
116
- el[_on] = on;
117
- el[_off] = off;
118
- el[_dispose] || (el[_dispose] = () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_state] = el[_add] = null));
119
- const add = (el2, _attrs = el2.attributes) => {
120
- if (_attrs) for (let i = 0; i < _attrs.length; ) {
121
- let { name, value } = _attrs[i];
122
- if (name.startsWith(prefix)) {
123
- el2.removeAttribute(name);
124
- if (fn = initDirective(el2, name, value, state)) fx.push(fn), offs.push(fn());
125
- if (_state in el2) return;
126
- } else i++;
127
- }
128
- for (let child of [...el2.childNodes]) child.nodeType == 1 && add(child);
129
- };
130
- el[_add] = add;
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 && el.isConnected) {
188
- for (const attr2 of el.attributes) {
189
- if (attr2.name.startsWith(prefix)) {
190
- root[_add](el);
191
- break;
192
- }
193
- }
194
- }
195
- }
196
- }
197
- });
198
- mo.observe(root, { childList: true, subtree: true });
199
- return state;
200
- };
201
- parse = (expr, prepare, _fn) => {
202
- if (_fn = parse.cache[expr]) return _fn;
203
- let _expr = expr.trim() || "undefined";
204
- if (prepare) _expr = prepare(_expr);
205
- if (/^(if|let|const)\b/.test(_expr) || /;(?![^{]*})/.test(_expr)) ;
206
- else _expr = `return ${_expr}`;
207
- if (/\bawait\s/.test(_expr)) _expr = `return (async()=>{ ${_expr} })()`;
208
- try {
209
- _fn = compile(_expr);
210
- Object.defineProperty(_fn, "name", { value: `\u2234 ${expr}` });
211
- } catch (e) {
212
- console.error(`\u2234 ${e}
213
-
214
- ${prefix + currentDir}="${expr}"`);
215
- }
216
- return parse.cache[expr] = (state, cb, _out) => {
217
- try {
218
- let result = _fn?.(state);
219
- if (cb) return result?.then ? result.then((v) => _out = cb(v)) : _out = cb(result), () => call(_out);
220
- else return result;
221
- } catch (e) {
222
- console.error(`\u2234 ${e}
223
-
224
- ${prefix + currentDir}="${expr}"`);
225
- }
226
- };
227
- };
228
- parse.cache = {};
229
- applyMods = (fn, mods) => {
230
- while (mods.length) {
231
- let [name, ...params] = mods.pop().split("-");
232
- fn = sx(modifier[name]?.(fn, ...params) ?? fn, fn);
233
- }
234
- return fn;
235
- };
236
- sx = (a, b) => {
237
- if (a != b) for (let k in b) a[k] ?? (a[k] = b[k]);
238
- return a;
239
- };
240
- frag = (tpl) => {
241
- if (!tpl.nodeType) return tpl;
242
- let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(""), childNodes = (content.append(ref), [...content.childNodes]);
243
- return {
244
- // get parentNode() { return childNodes[0].parentNode },
245
- childNodes,
246
- content,
247
- remove: () => content.append(...childNodes),
248
- replaceWith(el) {
249
- if (el === ref) return;
250
- ref.before(el);
251
- content.append(...childNodes);
252
- },
253
- attributes,
254
- removeAttribute(name) {
255
- attributes.splice(attributes.findIndex((a) => a.name === name), 1);
256
- }
257
- // setAttributeNode() { }
258
- };
259
- };
260
- call = (v, arg) => typeof v === "function" ? v(arg) : v;
261
- dashcase = (str) => str.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g, (match, i) => (i ? "-" : "") + match.toLowerCase());
262
- attr = (el, name, v) => v == null || v === false ? el.removeAttribute(name) : el.setAttribute(name, v === true ? "" : v);
263
- 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(" ");
264
- throttle = (fn, schedule = queueMicrotask) => {
265
- let _planned = 0;
266
- const throttled = (e) => {
267
- if (!_planned++) fn(e), schedule((_dirty = _planned > 1) => (_planned = 0, _dirty && throttled(e)));
268
- };
269
- return throttled;
270
- };
271
- debounce = (fn, schedule = queueMicrotask, _count = 0) => (arg, _planned = ++_count) => schedule(() => _planned == _count && fn(arg));
272
- core_default = sprae;
273
- }
274
- });
275
-
276
- // store.js
277
- var _signals, _change, _set, sandbox, store, list, create, set, store_default;
278
- var init_store = __esm({
279
- "store.js"() {
280
- init_core();
281
- _signals = Symbol("signals");
282
- _change = Symbol("change");
283
- _set = Symbol("set");
284
- sandbox = true;
285
- store = (values, parent) => {
286
- if (!values) return values;
287
- if (values[Symbol.toStringTag]) return values;
288
- if (values[_signals]) return values;
289
- if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values;
290
- let keyCount = Object.keys(values).length, signals = {};
291
- let state = new Proxy(Object.assign(signals, {
292
- [_change]: signal(keyCount),
293
- [_signals]: signals
294
- }), {
295
- get: (_, k) => {
296
- if (k in signals) return signals[k] ? signals[k].valueOf() : signals[k];
297
- return parent ? parent[k] : globalThis[k];
298
- },
299
- set: (_, k, v, _s) => {
300
- if (k in signals) return set(signals, k, v), 1;
301
- sandbox = false;
302
- if (parent && k in parent) {
303
- parent[k] = v;
304
- } else {
305
- create(signals, k, v);
306
- signals[_change].value = ++keyCount;
307
- }
308
- sandbox = true;
309
- return 1;
310
- },
311
- // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?
312
- deleteProperty: (_, k) => {
313
- k in signals && (k[0] != "_" && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount);
314
- return 1;
315
- },
316
- // subscribe to length when spreading
317
- ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),
318
- // sandbox prevents writing to global
319
- has: (_, k) => {
320
- if (k in signals) return true;
321
- if (parent) return k in parent;
322
- return sandbox;
323
- }
324
- });
325
- const descs = Object.getOwnPropertyDescriptors(values);
326
- for (let k in values) {
327
- if (descs[k]?.get)
328
- (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);
329
- else create(signals, k, values[k]);
330
- }
331
- return state;
332
- };
333
- list = (values, parent = globalThis) => {
334
- let signals = Array(values.length).fill(null), isMut = false, mut = (fn) => function() {
335
- isMut = true;
336
- return fn.apply(this, arguments);
337
- }, length = signal(values.length), state = new Proxy(
338
- Object.assign(signals, {
339
- [_change]: length,
340
- [_signals]: signals,
341
- // patch mutators
342
- push: mut(signals.push),
343
- pop: mut(signals.pop),
344
- shift: mut(signals.shift),
345
- unshift: mut(signals.unshift),
346
- splice: mut(signals.splice)
347
- }),
348
- {
349
- get(_, k) {
350
- if (k === "length") return isMut ? (isMut = false, signals.length) : length.value;
351
- if (typeof k === "symbol" || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];
352
- return (signals[k] ?? (signals[k] = signal(store(values[k])))).valueOf();
353
- },
354
- set(_, k, v) {
355
- if (k === "length") {
356
- for (let i = v; i < signals.length; i++) delete state[i];
357
- length.value = signals.length = v;
358
- } else if (k >= signals.length) create(signals, k, v), state.length = +k + 1;
359
- else signals[k] ? set(signals, k, v) : create(signals, k, v);
360
- return 1;
361
- },
362
- // dispose notifies any signal deps, like :each
363
- deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1)
364
- }
365
- );
366
- return state;
367
- };
368
- create = (signals, k, v) => signals[k] = k[0] == "_" || v?.peek ? v : signal(store(v));
369
- set = (signals, k, v, _s, _v) => {
370
- return k[0] === "_" ? signals[k] = v : v !== (_v = (_s = signals[k]).peek()) && // stashed _set for value with getter/setter
371
- (_s[_set] ? _s[_set](v) : (
372
- // patch array
373
- Array.isArray(v) && Array.isArray(_v) ? (
374
- // if we update plain array (stored in signal) - take over value instead
375
- // since input value can be store, we have to make sure we don't subscribe to its length or values
376
- // FIXME: generalize to objects
377
- _change in _v ? untracked(() => batch(() => {
378
- for (let i = 0; i < v.length; i++) _v[i] = v[i];
379
- _v.length = v.length;
380
- })) : _s.value = v
381
- ) : (
382
- // .x = y
383
- _s.value = store(v)
384
- )
385
- ));
386
- };
387
- store_default = store;
388
- }
389
- });
390
-
391
- // signal.js
392
- var current, depth, batched, signal2, effect2, computed2, batch2, untracked2;
393
- var init_signal = __esm({
394
- "signal.js"() {
395
- depth = 0;
396
- signal2 = (v, _s, _obs = /* @__PURE__ */ new Set(), _v = () => _s.value) => _s = {
397
- get value() {
398
- current?.deps.push(_obs.add(current));
399
- return v;
400
- },
401
- set value(val) {
402
- if (val === v) return;
403
- v = val;
404
- for (let sub of _obs) batched ? batched.add(sub) : sub();
405
- },
406
- peek() {
407
- return v;
408
- },
409
- toJSON: _v,
410
- then: _v,
411
- toString: _v,
412
- valueOf: _v
413
- };
414
- effect2 = (fn, _teardown, _fx, _deps, __tmp) => (_fx = (prev) => {
415
- __tmp = _teardown;
416
- _teardown = null;
417
- __tmp?.call?.();
418
- prev = current, current = _fx;
419
- if (depth++ > 10) throw "Cycle detected";
420
- try {
421
- _teardown = fn();
422
- } finally {
423
- current = prev;
424
- depth--;
425
- }
426
- }, _deps = _fx.deps = [], _fx(), (dep) => {
427
- _teardown?.call?.();
428
- while (dep = _deps.pop()) dep.delete(_fx);
429
- });
430
- computed2 = (fn, _s = signal2(), _c, _e, _v = () => _c.value) => _c = {
431
- get value() {
432
- _e || (_e = effect2(() => _s.value = fn()));
433
- return _s.value;
434
- },
435
- peek: _s.peek,
436
- toJSON: _v,
437
- then: _v,
438
- toString: _v,
439
- valueOf: _v
440
- };
441
- batch2 = (fn, _first = !batched) => {
442
- batched ?? (batched = /* @__PURE__ */ new Set());
443
- try {
444
- fn();
445
- } finally {
446
- if (_first) {
447
- for (const fx of batched) fx();
448
- batched = null;
449
- }
450
- }
451
- };
452
- untracked2 = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v);
453
- }
454
- });
455
-
456
- // directive/if.js
457
- var if_default;
458
- var init_if = __esm({
459
- "directive/if.js"() {
460
- init_core();
461
- if_default = (el, state, _holder, _el, _match) => {
462
- var _a;
463
- if (!el._holder) {
464
- el[_a = _state] ?? (el[_a] = null);
465
- _el = el.content ? frag(el) : el;
466
- el.replaceWith(_holder = document.createTextNode(""));
467
- _el._holder = _holder._holder = _holder;
468
- _holder._clauses = [_el._clause = [_el, false]];
469
- _holder.update = throttle(() => {
470
- let match = _holder._clauses.find(([, s]) => s);
471
- if (match != _match) {
472
- _match?.[0].remove();
473
- _match?.[0][_off]?.();
474
- if (_match = match) {
475
- _holder.before(_match[0].content || _match[0]);
476
- !_match[0][_state] ? (delete _match[0][_state], core_default(_match[0], state)) : _match[0][_on]?.();
477
- }
478
- }
479
- });
480
- } else core_default(_el = el, state);
481
- return (value) => {
482
- _el._clause[1] = value;
483
- _el._holder.update();
484
- };
485
- };
486
- }
487
- });
488
-
489
- // directive/else.js
490
- var else_default;
491
- var init_else = __esm({
492
- "directive/else.js"() {
493
- init_core();
494
- else_default = (el, state, _el, _, _prev = el) => {
495
- _el = el.content ? frag(el) : el;
496
- while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling;
497
- el.remove();
498
- el[_state] = null;
499
- _el._holder._clauses.push(_el._clause = [_el, true]);
500
- return _el._holder.update;
501
- };
502
- }
503
- });
504
-
505
- // directive/text.js
506
- var text_default;
507
- var init_text = __esm({
508
- "directive/text.js"() {
509
- init_core();
510
- text_default = (el) => (
511
- // <template :text="a"/> or previously initialized template
512
- (el.content && el.replaceWith(el = frag(el).childNodes[0]), (v) => (v = call(v, el.textContent), el.textContent = v == null ? "" : v))
513
- );
514
- }
515
- });
516
-
517
- // directive/class.js
518
- var class_default;
519
- var init_class = __esm({
520
- "directive/class.js"() {
521
- init_core();
522
- class_default = (el, _cur, _new) => (_cur = /* @__PURE__ */ new Set(), (v) => {
523
- _new = /* @__PURE__ */ new Set();
524
- if (v) clsx(call(v, el.className)).split(" ").map((c) => c && _new.add(c));
525
- for (let c of _cur) if (_new.has(c)) _new.delete(c);
526
- else el.classList.remove(c);
527
- for (let c of _cur = _new) el.classList.add(c);
528
- });
529
- }
530
- });
531
-
532
- // directive/style.js
533
- var style_default;
534
- var init_style = __esm({
535
- "directive/style.js"() {
536
- init_core();
537
- style_default = (el, _static) => (_static = el.getAttribute("style"), (v) => {
538
- v = call(v, el.style);
539
- if (typeof v === "string") attr(el, "style", _static + "; " + v);
540
- else {
541
- if (_static) attr(el, "style", _static);
542
- for (let k in v) k[0] == "-" ? el.style.setProperty(k, v[k]) : k[0] > "A" && (el.style[k] = v[k]);
543
- }
544
- });
545
- }
546
- });
547
-
548
- // directive/fx.js
549
- var fx_default;
550
- var init_fx = __esm({
551
- "directive/fx.js"() {
552
- init_core();
553
- fx_default = () => call;
554
- }
555
- });
556
-
557
- // directive/value.js
558
- var setter, value_default;
559
- var init_value = __esm({
560
- "directive/value.js"() {
561
- init_core();
562
- setter = (expr, _set2 = parse(`${expr}=__`)) => (target, value) => {
563
- target.__ = value;
564
- _set2(target), delete target.__;
565
- };
566
- value_default = (el, state, expr, name) => {
567
- try {
568
- const set2 = setter(expr);
569
- 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);
570
- el.oninput = el.onchange = handleChange;
571
- if (el.type?.startsWith("select")) {
572
- new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });
573
- core_default(el, state);
574
- }
575
- parse(expr)(state) ?? handleChange();
576
- } catch {
577
- }
578
- 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) => (
579
- // we retain selection in input
580
- (from = el.selectionStart, to = el.selectionEnd, el.setAttribute("value", el.value = value == null ? "" : value), from && el.setSelectionRange(from, to))
581
- ) : 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) => {
582
- for (let o of el.options)
583
- o.value == value ? o.setAttribute("selected", "") : o.removeAttribute("selected");
584
- el.value = value;
585
- } : el.type === "select-multiple" ? (value) => {
586
- for (let o of el.options) o.removeAttribute("selected");
587
- for (let v of value) el.querySelector(`[value="${v}"]`).setAttribute("selected", "");
588
- } : (value) => el.value = value;
589
- };
590
- }
591
- });
592
-
593
- // directive/ref.js
594
- var ref_default;
595
- var init_ref = __esm({
596
- "directive/ref.js"() {
597
- init_core();
598
- ref_default = (el, state, expr, name, _prev, _set2) => {
599
- if (typeof parse(expr)(state) == "function") return (v) => v(el);
600
- Object.defineProperty(state, expr, { value: el, configurable: true });
601
- };
602
- }
603
- });
604
-
605
- // directive/scope.js
606
- var scope_default;
607
- var init_scope = __esm({
608
- "directive/scope.js"() {
609
- init_core();
610
- scope_default = (el, rootState) => {
611
- let subscope = el[_state] = store({}, rootState), init = false;
612
- return (values) => {
613
- values = call(values, subscope);
614
- if (values !== subscope) {
615
- for (let k in values) {
616
- let v = typeof values[k] === "function" ? values[k].bind(subscope) : values[k];
617
- if (k in subscope[_signals]) subscope[k] = v;
618
- else subscope[_signals][k] = k[0] == "_" || v?.peek ? v : signal(store(v));
619
- }
620
- }
621
- return !init && (init = true, delete el[_state], untracked(() => core_default(el, subscope)));
622
- };
623
- };
624
- }
625
- });
626
-
627
- // directive/each.js
628
- var each, each_default;
629
- var init_each = __esm({
630
- "directive/each.js"() {
631
- init_core();
632
- each = (tpl, state, expr) => {
633
- let [itemVar, idxVar = "$"] = expr.split(/\bin\b/)[0].trim().replace(/\(|\)/g, "").split(/\s*,\s*/);
634
- let holder = document.createTextNode("");
635
- let cur2, keys2, items, prevl = 0;
636
- let update = throttle(() => {
637
- var _a, _b;
638
- let i = 0, newItems = items, newl = newItems.length;
639
- if (cur2 && !cur2[_change]) {
640
- for (let s of cur2[_signals] || []) s[Symbol.dispose]();
641
- cur2 = null, prevl = 0;
642
- }
643
- if (newl < prevl) cur2.length = newl;
644
- else {
645
- if (!cur2) cur2 = newItems;
646
- else while (i < prevl) cur2[i] = newItems[i++];
647
- for (; i < newl; i++) {
648
- cur2[i] = newItems[i];
649
- let idx = i, subscope = Object.create(state, {
650
- [itemVar]: { get: () => cur2[idx] },
651
- [idxVar]: { value: keys2 ? keys2[idx] : idx }
652
- });
653
- let el = tpl.content ? frag(tpl) : tpl.cloneNode(true);
654
- holder.before(el.content || el);
655
- core_default(el, subscope);
656
- let _prev = ((_b = cur2[_a = _signals] || (cur2[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose];
657
- cur2[_signals][i][Symbol.dispose] = () => {
658
- _prev?.(), el[Symbol.dispose]?.(), el.remove();
659
- };
660
- }
661
- }
662
- prevl = newl;
663
- });
664
- tpl.replaceWith(holder);
665
- tpl[_state] = null;
666
- return (value) => {
667
- keys2 = null;
668
- if (typeof value === "number") items = Array.from({ length: value }, (_, i) => i + 1);
669
- else if (value?.constructor === Object) keys2 = Object.keys(value), items = Object.values(value);
670
- else items = value || [];
671
- return effect(() => {
672
- items[_change]?.value;
673
- update();
674
- });
675
- };
676
- };
677
- each.parse = (str) => str.split(/\bin\b/)[1].trim();
678
- each_default = each;
679
- }
680
- });
681
-
682
- // directive/default.js
683
- var default_default;
684
- var init_default = __esm({
685
- "directive/default.js"() {
686
- init_core();
687
- default_default = (el, st, ex, name) => (v) => attr(el, name, call(v, el.getAttribute(name)));
688
- }
689
- });
690
-
691
- // directive/spread.js
692
- var spread_default;
693
- var init_spread = __esm({
694
- "directive/spread.js"() {
695
- init_core();
696
- spread_default = (target) => (value) => {
697
- for (let key in value) attr(target, dashcase(key), value[key]);
698
- };
699
- }
700
- });
701
-
702
- // sprae.js
703
- var sprae_exports = {};
704
- __export(sprae_exports, {
705
- batch: () => batch2,
706
- computed: () => computed2,
707
- default: () => sprae_default,
708
- effect: () => effect2,
709
- signal: () => signal2,
710
- sprae: () => core_default,
711
- start: () => start,
712
- store: () => store_default,
713
- untracked: () => untracked2,
714
- use: () => use
715
- });
716
- var keys, sprae_default;
717
- var init_sprae = __esm({
718
- "sprae.js"() {
719
- init_store();
720
- init_signal();
721
- init_core();
722
- init_if();
723
- init_else();
724
- init_text();
725
- init_class();
726
- init_style();
727
- init_fx();
728
- init_value();
729
- init_ref();
730
- init_scope();
731
- init_each();
732
- init_default();
733
- init_spread();
734
- Object.assign(directive, {
735
- // :x="x"
736
- "*": default_default,
737
- // FIXME
738
- // 'on*': _on,
739
- // :="{a,b,c}"
740
- "": spread_default,
741
- // :class="[a, b, c]"
742
- class: class_default,
743
- // :text="..."
744
- text: text_default,
745
- // :style="..."
746
- style: style_default,
747
- // :fx="..."
748
- fx: fx_default,
749
- // :value - 2 way binding like x-model
750
- value: value_default,
751
- // :ref="..."
752
- ref: ref_default,
753
- // :scope creates variables scope for a subtree
754
- scope: scope_default,
755
- if: if_default,
756
- else: else_default,
757
- // :each="v,k in src"
758
- each: each_default
759
- });
760
- Object.assign(modifier, {
761
- debounce: (fn, _how = 250, _schedule = _how === "tick" ? queueMicrotask : _how === "raf" ? requestAnimationFrame : _how === "idle" ? requestIdleCallback : (fn2) => setTimeout(fn2, _how), _count = 0) => debounce(fn, _schedule),
762
- throttle: (fn, _how = 250, _schedule = _how === "tick" ? queueMicrotask : _how === "raf" ? requestAnimationFrame : (fn2) => setTimeout(fn2, _how)) => throttle(fn, _schedule),
763
- once: (fn, _done, _fn) => Object.assign((e) => !_done && (_done = 1, fn(e)), { once: true }),
764
- // event modifiers
765
- // actions
766
- prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),
767
- stop: (fn) => (e) => (e?.stopPropagation(), fn(e)),
768
- immediate: (fn) => (e) => (e?.stopImmediatePropagation(), fn(e)),
769
- // options
770
- passive: (fn) => (fn.passive = true, fn),
771
- capture: (fn) => (fn.capture = true, fn),
772
- // target
773
- window: (fn) => (fn.target = fn.target.ownerDocument.defaultView, fn),
774
- document: (fn) => (fn.target = fn.target.ownerDocument, fn),
775
- root: (fn) => (fn.target = fn.target.ownerDocument.documentElement, fn),
776
- body: (fn) => (fn.target = fn.target.ownerDocument.body, fn),
777
- parent: (fn) => (fn.target = fn.target.parentNode, fn),
778
- // testers
779
- self: (fn) => (e) => e.target === fn.target && fn(e),
780
- outside: (fn) => (e, _target) => (_target = fn.target, !_target.contains(e.target) && e.target.isConnected && (_target.offsetWidth || _target.offsetHeight))
781
- });
782
- keys = {
783
- ctrl: (e) => e.ctrlKey || e.key === "Control" || e.key === "Ctrl",
784
- shift: (e) => e.shiftKey || e.key === "Shift",
785
- alt: (e) => e.altKey || e.key === "Alt",
786
- meta: (e) => e.metaKey || e.key === "Meta" || e.key === "Command",
787
- arrow: (e) => e.key.startsWith("Arrow"),
788
- enter: (e) => e.key === "Enter",
789
- esc: (e) => e.key.startsWith("Esc"),
790
- tab: (e) => e.key === "Tab",
791
- space: (e) => e.key === "\xA0" || e.key === "Space" || e.key === " ",
792
- delete: (e) => e.key === "Delete" || e.key === "Backspace",
793
- digit: (e) => /^\d$/.test(e.key),
794
- letter: (e) => /^\p{L}$/gu.test(e.key),
795
- char: (e) => /^\S$/.test(e.key)
796
- };
797
- for (let k in keys) modifier[k] = (fn, ...params) => (e) => keys[k](e) && params.every((k2) => keys[k2]?.(e) ?? e.key === k2) && fn(e);
798
- use({
799
- compile: (expr) => {
800
- return core_default.constructor(`with (arguments[0]) { ${expr} }`);
801
- },
802
- // signals
803
- signal: signal2,
804
- effect: effect2,
805
- computed: computed2,
806
- batch: batch2,
807
- untracked: untracked2
808
- });
809
- core_default.use = use;
810
- core_default.store = store_default;
811
- core_default.directive = directive;
812
- core_default.modifier = modifier;
813
- core_default.start = start;
814
- sprae_default = core_default;
815
- }
816
- });
817
-
818
- // <stdin>
819
- var sprae2 = (init_sprae(), __toCommonJS(sprae_exports)).default;
820
- module.exports = sprae2;
821
- var cur = document.currentScript;
822
- var prefix2 = cur.getAttribute("prefix") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;
823
- var start2 = cur.getAttribute("start") ?? cur.dataset.start ?? cur.dataset.spraeStart;
824
- if (prefix2) sprae2.use({ prefix: prefix2 });
825
- 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));
826
7
  ;if (typeof module.exports == "object" && typeof exports == "object") {
827
8
  var __cp = (to, from, except, desc) => {
828
9
  if ((from && typeof from === "object") || typeof from === "function") {