sprae 10.9.1 → 10.9.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
@@ -23,11 +23,650 @@ var module = { exports };(function (g, f) {
23
23
  }(this, () => {
24
24
  var exports = {};
25
25
  var module = { exports };
26
- var I=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.prototype.hasOwnProperty;var B=(e,r)=>{for(var t in r)I(e,t,{get:r[t],enumerable:!0})},re=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of ee(r))!te.call(e,s)&&s!==t&&I(e,s,{get:()=>r[s],enumerable:!(o=Y(r,s))||o.enumerable});return e};var oe=e=>re(I({},"__esModule",{value:!0}),e);var de={};B(de,{default:()=>me});module.exports=oe(de);var O,p,T,P,j;function H(e){O=e.signal,p=e.effect,j=e.computed,P=e.batch||(r=>r()),T=e.untracked||P}var x=Symbol("signals"),E=Symbol("length");function v(e,r){if(!e||e[x])return e;if(Array.isArray(e))return ne(e);if(e.constructor!==Object)return e;let t={...r?.[x]},o=O(Object.values(e).length),s=new Proxy(t,{get:(n,i)=>i===E?o:i===x?t:t[i]?.valueOf(),set:(n,i,c,a)=>(a=t[i],M(t,i,c),a??++o.value,1),deleteProperty:(n,i)=>(t[i]&&(V(t,i),o.value--),1),ownKeys(){return o.value,Reflect.ownKeys(t)}});for(let n in e){let i=Object.getOwnPropertyDescriptor(e,n);i?.get?(t[n]=j(i.get.bind(s)))._set=i.set?.bind(s):(t[n]=void 0,M(t,n,e[n]))}return s}var ie={push:1,pop:1,shift:1,unshift:1,splice:1};function ne(e){let r;if(e[x])return e;let t=O(e.length),o=Array(e.length).fill(),s=new Proxy(o,{get(n,i){if(typeof i=="symbol")return i===E?t:i===x?o:o[i];if(i==="length")return ie[r]?t.peek():t.value;if(r=i,o[i])return o[i].valueOf();if(i<o.length)return(o[i]=O(v(e[i]))).value},set(n,i,c){if(i==="length"){for(let a=c,y=o.length;a<y;a++)delete s[a];return t.value=o.length=c,!0}return M(o,i,c),i>=t.peek()&&(t.value=o.length=Number(i)+1),!0},deleteProperty:(n,i)=>(o[i]&&V(o,i),1)});return s}function M(e,r,t){let o=e[r];if(r[0]==="_")e[r]=t;else if(!o)e[r]=o=t?.peek?t:O(v(t));else if(t!==o.peek())if(o._set)o._set(t);else if(Array.isArray(t)&&Array.isArray(o.peek())){let s=o.peek();s[E]?T(()=>{P(()=>{let n=0,i=t.length;for(;n<i;n++)s[n]=t[n];s.length=i})}):o.value=t}else o.value=v(t)}function V(e,r){let t=e[r],o=t[Symbol.dispose];o&&delete t[Symbol.dispose],delete e[r],o?.()}var R=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),f={},g=new WeakMap;function d(e,r){if(!e?.childNodes)return;if(g.has(e))return Object.assign(g.get(e),r);let t=v(r||{}),o=[];return s(e),g.has(e)||g.set(e,t),e[R]=()=>{for(;o.length;)o.pop()();g.delete(e)},t;function s(n,i=n.parentNode){if(!!n.childNodes){for(let c=0;c<n.attributes?.length;){let a=n.attributes[c];if(a.name[0]===":"){n.removeAttribute(a.name);let y=a.name.slice(1).split(":");for(let k of y){let u=f[k]||f.default,l=(u.parse||W)(a.value),h=u(n,l,t,k);h&&o.push(h)}if(g.has(n))return n[R]&&o.push(n[R]);if(n.parentNode!==i)return}else c++}for(let c of[...n.childNodes])s(c,n)}}}var X={},W=(e,r,t)=>{if(t=X[e=e.trim()])return t;try{t=Z(e)}catch(o){F(o,r,e)}return X[e]=t},F=(e,r,t="")=>{throw Object.assign(e,{message:`\u2234 ${e.message}
26
+ var __defProp = Object.defineProperty;
27
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
28
+ var __getOwnPropNames = Object.getOwnPropertyNames;
29
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
30
+ var __export = (target, all) => {
31
+ for (var name in all)
32
+ __defProp(target, name, { get: all[name], enumerable: true });
33
+ };
34
+ var __copyProps = (to, from, except, desc) => {
35
+ if (from && typeof from === "object" || typeof from === "function") {
36
+ for (let key of __getOwnPropNames(from))
37
+ if (!__hasOwnProp.call(to, key) && key !== except)
38
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
39
+ }
40
+ return to;
41
+ };
42
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
43
 
28
- ${r}${t?`="${t}"
44
+ // sprae.js
45
+ var sprae_exports = {};
46
+ __export(sprae_exports, {
47
+ default: () => sprae_default
48
+ });
49
+ module.exports = __toCommonJS(sprae_exports);
29
50
 
30
- `:""}`,expr:t})},Z;d.use=e=>{e.signal&&H(e),e.compile&&(Z=e.compile)};var N=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],o=document.createTextNode(""),s=(r.append(o),[...r.childNodes]);return{childNodes:s,content:r,remove:()=>r.append(...s),replaceWith(n){n!==o&&(o.before(n),r.append(...s))},attributes:t,removeAttribute(n){t.splice(t.findIndex(i=>i.name===n),1)}}};var J={};B(J,{batch:()=>le,computed:()=>se,effect:()=>G,signal:()=>z,untracked:()=>ce});var w,$,z=(e,r,t=new Set)=>(r={get value(){return w?.deps.push(t.add(w)),e},set value(o){if(o!==e){e=o;for(let s of t)$?$.add(s):s()}},peek(){return e}},r.toJSON=r.then=r.toString=r.valueOf=()=>r.value,r),G=(e,r,t,o)=>(t=s=>{r?.call?.(),s=w,w=t;try{r=e()}finally{w=s}},o=t.deps=[],t(),s=>{for(r?.call?.();s=o.pop();)s.delete(t)}),se=(e,r=z(),t,o)=>(t={get value(){return o||(o=G(()=>r.value=e())),r.value},peek:r.peek},t.toJSON=t.then=t.toString=t.valueOf=()=>t.value,t),le=e=>{let r=$;r||($=new Set);try{e()}finally{if(!r){r=$,$=null;for(let t of r)t()}}},ce=(e,r,t)=>(r=w,w=null,t=e(),w=r,t);var Q=Symbol("if");f.if=(e,r,t)=>{let o=e.nextElementSibling,s=document.createTextNode(""),n,i,c;return e.replaceWith(s),i=e.content?N(e):e,g.set(i,null),o?.hasAttribute(":else")&&(o.removeAttribute(":else"),o.hasAttribute(":if")||(o.remove(),c=o.content?N(o):o,g.set(c,null))),p(()=>{let a=r(t)?i:e[Q]?null:c;o&&(o[Q]=a===i),n!=a&&(n?.remove(),(n=a)&&(s.before(n.content||n),g.get(n)===null&&g.delete(n),d(n,t)))})};f.each=(e,[r,t,o],s)=>{let n=document.createTextNode("");e.replaceWith(n);let i,c,a=0,y=j(()=>{c=null;let l=o(s);return typeof l=="number"&&(l=Array.from({length:l},(h,b)=>b+1)),l?.constructor===Object&&(c=Object.keys(l),l=Object.values(l)),l||[]}),k=()=>{T(()=>{var S,C;let l=0,h=y.value,b=h.length;if(i&&!i[E]){for(let A of i[x]||[])A[Symbol.dispose]();i=null,a=0}if(b<a)i.length=b;else{if(!i)i=h;else for(;l<a;l++)i[l]=h[l];for(;l<b;l++){i[l]=h[l];let A=l,K=v({[r]:i[x]?.[A]||i[A],[t]:c?c[A]:A},s),_=e.content?N(e):e.cloneNode(!0);n.before(_.content||_),d(_,K),((C=i[S=x]||(i[S]=[]))[l]||(C[l]={}))[Symbol.dispose]=()=>{_[Symbol.dispose](),_.remove()}}}a=b})},u=0;return p(()=>{y.value[E]?.value,u?u++:(k(),queueMicrotask(()=>(u&&k(),u=0)))})};f.each.parse=e=>{let[r,t]=e.split(/\s+in\s+/),[o,s="$"]=r.split(/\s*,\s*/);return[o,s,W(t)]};f.ref=(e,r,t)=>{t[r]=e};f.ref.parse=e=>e;f.with=(e,r,t)=>{let o;return p(()=>{let s=r(t);d(e,o?s:o=v(s,t))})};f.html=(e,r,t)=>{let o=r(t);if(!o)return;let s=(o.content||o).cloneNode(!0);e.replaceChildren(s),d(e,t)};f.text=(e,r,t)=>(e.content&&e.replaceWith(e=N(e).childNodes[0]),p(()=>{let o=r(t);e.textContent=o??""}));f.class=(e,r,t)=>{let o=new Set;return p(()=>{let s=r(t),n=new Set;s&&(typeof s=="string"?s.split(" ").map(i=>n.add(i)):Array.isArray(s)?s.map(i=>i&&n.add(i)):Object.entries(s).map(([i,c])=>c&&n.add(i)));for(let i of o)n.has(i)?n.delete(i):e.classList.remove(i);for(let i of o=n)e.classList.add(i)})};f.style=(e,r,t)=>{let o=e.getAttribute("style")||"";return o.endsWith(";")||(o+="; "),p(()=>{let s=r(t);if(typeof s=="string")e.setAttribute("style",o+s);else{e.setAttribute("style",o);for(let n in s)e.style.setProperty(n,e.style[n]=s[n])}})};f.default=(e,r,t,o)=>{if(!o.startsWith("on"))return p(()=>{let u=r(t);if(o)D(e,o,u);else for(let l in u)D(e,pe(l),u[l])});let s=o.split("..").map(u=>{let l={evt:"",target:e,test:()=>!0};return l.evt=(u.startsWith("on")?u.slice(2):u).replace(/\.(\w+)?-?([-\w]+)?/g,(h,b,S="")=>(l.test=ae[b]?.(l,...S.split("-"))||l.test,"")),l});if(s.length==1)return p(()=>k(r(t),s[0]));let n,i,c,a=0,y=u=>{c=k(l=>(c(),i=u?.(l),(a=++a%s.length)?y(i):n&&y(n)),s[a])};return p(()=>(n=r(t),!c&&y(n),()=>n=null));function k(u,{evt:l,target:h,test:b,defer:S,stop:C,prevent:A,immediate:K,..._}){S&&(u=S(u));let q=L=>{try{b(L)&&(C&&(K?L.stopImmediatePropagation():L.stopPropagation()),A&&L.preventDefault(),u?.(L))}catch(U){F(U,`:on${l}`,u)}};return h.addEventListener(l,q,_),()=>h.removeEventListener(l,q,_)}};var ae={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=>fe(t,r?Number(r)||0:108)},debounce(e,r){e.defer=t=>ue(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=>m.ctrl(t)&&r.every(o=>m[o]?m[o](t):t.key===o),shift:(e,...r)=>t=>m.shift(t)&&r.every(o=>m[o]?m[o](t):t.key===o),alt:(e,...r)=>t=>m.alt(t)&&r.every(o=>m[o]?m[o](t):t.key===o),meta:(e,...r)=>t=>m.meta(t)&&r.every(o=>m[o]?m[o](t):t.key===o),arrow:()=>m.arrow,enter:()=>m.enter,esc:()=>m.esc,tab:()=>m.tab,space:()=>m.space,delete:()=>m.delete,digit:()=>m.digit,letter:()=>m.letter,char:()=>m.char},m={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)},D=(e,r,t)=>{t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":typeof t=="number"||typeof t=="string"?t:"")},fe=(e,r)=>{let t,o,s=n=>{t=!0,setTimeout(()=>{if(t=!1,o)return o=!1,s(n),e(n)},r)};return n=>t?o=!0:(s(n),e(n))},ue=(e,r)=>{let t;return o=>{clearTimeout(t),t=setTimeout(()=>{t=null,e(o)},r)}},pe=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,r=>"-"+r.toLowerCase());f.value=(e,[r,t],o)=>{let s=e.type==="text"||e.type===""?i=>e.setAttribute("value",e.value=i??""):e.tagName==="TEXTAREA"||e.type==="text"||e.type===""?(i,c,a)=>(c=e.selectionStart,a=e.selectionEnd,e.setAttribute("value",e.value=i??""),c&&e.setSelectionRange(c,a)):e.type==="checkbox"?i=>(e.checked=i,D(e,"checked",i)):e.type==="select-one"?i=>{for(let c in e.options)c.removeAttribute("selected");e.value=i,e.selectedOptions[0]?.setAttribute("selected","")}:i=>e.value=i,n=e.type==="checkbox"?i=>t(o,e.checked):i=>t(o,e.value);return e.addEventListener("input",n),e.addEventListener("change",n),p(()=>s(r(o)))};f.value.parse=e=>{let r=[W(e)];try{r.push(W(`${e}=arguments[1];`))}catch{}return r};f.fx=(e,r,t)=>p(()=>r(t));d.use(J);d.use({compile:e=>d.constructor(`with (arguments[0]) { return ${e} };`)});var me=d;
51
+ // signal.js
52
+ var signal;
53
+ var effect;
54
+ var untracked;
55
+ var batch;
56
+ var computed;
57
+ function use(s) {
58
+ signal = s.signal;
59
+ effect = s.effect;
60
+ computed = s.computed;
61
+ batch = s.batch || ((fn) => fn());
62
+ untracked = s.untracked || batch;
63
+ }
64
+
65
+ // store.js
66
+ var _signals = Symbol("signals");
67
+ var _change = Symbol("length");
68
+ function store(values, parent) {
69
+ if (!values)
70
+ return values;
71
+ if (values[_signals])
72
+ return values;
73
+ if (Array.isArray(values))
74
+ return list(values);
75
+ if (values.constructor !== Object)
76
+ return values;
77
+ let signals = { ...parent?.[_signals] }, _len = signal(Object.values(values).length);
78
+ const state = new Proxy(signals, {
79
+ get: (_, key) => key === _change ? _len : key === _signals ? signals : signals[key]?.valueOf(),
80
+ set: (_, key, v, s) => (s = signals[key], set(signals, key, v), s ?? ++_len.value, 1),
81
+ deleteProperty: (_, key) => (signals[key] && (del(signals, key), _len.value--), 1),
82
+ ownKeys() {
83
+ _len.value;
84
+ return Reflect.ownKeys(signals);
85
+ }
86
+ });
87
+ for (let key in values) {
88
+ const desc = Object.getOwnPropertyDescriptor(values, key);
89
+ if (desc?.get) {
90
+ (signals[key] = computed(desc.get.bind(state)))._set = desc.set?.bind(state);
91
+ } else {
92
+ signals[key] = void 0;
93
+ set(signals, key, values[key]);
94
+ }
95
+ }
96
+ return state;
97
+ }
98
+ var mut = { push: 1, pop: 1, shift: 1, unshift: 1, splice: 1 };
99
+ function list(values) {
100
+ let lastProp;
101
+ if (values[_signals])
102
+ return values;
103
+ let _len = signal(values.length), signals = Array(values.length).fill();
104
+ const state = new Proxy(signals, {
105
+ get(_, key) {
106
+ if (typeof key === "symbol")
107
+ return key === _change ? _len : key === _signals ? signals : signals[key];
108
+ if (key === "length")
109
+ return mut[lastProp] ? _len.peek() : _len.value;
110
+ lastProp = key;
111
+ if (signals[key])
112
+ return signals[key].valueOf();
113
+ if (key < signals.length)
114
+ return (signals[key] = signal(store(values[key]))).value;
115
+ },
116
+ set(_, key, v) {
117
+ if (key === "length") {
118
+ for (let i = v, l = signals.length; i < l; i++)
119
+ delete state[i];
120
+ _len.value = signals.length = v;
121
+ return true;
122
+ }
123
+ set(signals, key, v);
124
+ if (key >= _len.peek())
125
+ _len.value = signals.length = Number(key) + 1;
126
+ return true;
127
+ },
128
+ deleteProperty: (_, key) => (signals[key] && del(signals, key), 1)
129
+ });
130
+ return state;
131
+ }
132
+ function set(signals, key, v) {
133
+ let s = signals[key];
134
+ if (key[0] === "_")
135
+ signals[key] = v;
136
+ else if (!s) {
137
+ signals[key] = s = v?.peek ? v : signal(store(v));
138
+ } else if (v === s.peek())
139
+ ;
140
+ else if (s._set)
141
+ s._set(v);
142
+ else if (Array.isArray(v) && Array.isArray(s.peek())) {
143
+ const cur = s.peek();
144
+ if (cur[_change])
145
+ untracked(() => {
146
+ batch(() => {
147
+ let i = 0, l = v.length;
148
+ for (; i < l; i++)
149
+ cur[i] = v[i];
150
+ cur.length = l;
151
+ });
152
+ });
153
+ else {
154
+ s.value = v;
155
+ }
156
+ } else {
157
+ s.value = store(v);
158
+ }
159
+ }
160
+ function del(signals, key) {
161
+ const s = signals[key], del2 = s[Symbol.dispose];
162
+ if (del2)
163
+ delete s[Symbol.dispose];
164
+ delete signals[key];
165
+ del2?.();
166
+ }
167
+
168
+ // core.js
169
+ var _dispose = Symbol.dispose || (Symbol.dispose = Symbol("dispose"));
170
+ var directive = {};
171
+ var memo = /* @__PURE__ */ new WeakMap();
172
+ function sprae(el, values) {
173
+ if (!el?.childNodes)
174
+ return;
175
+ if (memo.has(el)) {
176
+ return Object.assign(memo.get(el), values);
177
+ }
178
+ const state = store(values || {}), disposes = [];
179
+ init(el);
180
+ if (!memo.has(el))
181
+ memo.set(el, state);
182
+ el[_dispose] = () => {
183
+ while (disposes.length)
184
+ disposes.pop()();
185
+ memo.delete(el);
186
+ };
187
+ return state;
188
+ function init(el2, parent = el2.parentNode) {
189
+ if (!el2.childNodes)
190
+ return;
191
+ for (let i = 0; i < el2.attributes?.length; ) {
192
+ let attr2 = el2.attributes[i];
193
+ if (attr2.name[0] === ":") {
194
+ el2.removeAttribute(attr2.name);
195
+ let names = attr2.name.slice(1).split(":");
196
+ for (let name of names) {
197
+ let dir = directive[name] || directive.default;
198
+ let evaluate = (dir.parse || parse)(attr2.value);
199
+ let dispose = dir(el2, evaluate, state, name);
200
+ if (dispose)
201
+ disposes.push(dispose);
202
+ }
203
+ if (memo.has(el2))
204
+ return el2[_dispose] && disposes.push(el2[_dispose]);
205
+ if (el2.parentNode !== parent)
206
+ return;
207
+ } else
208
+ i++;
209
+ }
210
+ for (let child of [...el2.childNodes])
211
+ init(child, el2);
212
+ }
213
+ ;
214
+ }
215
+ var evalMemo = {};
216
+ var parse = (expr, dir, fn) => {
217
+ if (fn = evalMemo[expr = expr.trim()])
218
+ return fn;
219
+ try {
220
+ fn = compile(expr);
221
+ } catch (e) {
222
+ err(e, dir, expr);
223
+ }
224
+ return evalMemo[expr] = fn;
225
+ };
226
+ var err = (e, dir, expr = "") => {
227
+ throw Object.assign(e, { message: `\u2234 ${e.message}
228
+
229
+ ${dir}${expr ? `="${expr}"
230
+
231
+ ` : ""}`, expr });
232
+ };
233
+ var compile;
234
+ sprae.use = (s) => {
235
+ s.signal && use(s);
236
+ s.compile && (compile = s.compile);
237
+ };
238
+ var frag = (tpl) => {
239
+ if (!tpl.nodeType)
240
+ return tpl;
241
+ let content = tpl.content.cloneNode(true), attributes = [...tpl.attributes], ref = document.createTextNode(""), childNodes = (content.append(ref), [...content.childNodes]);
242
+ return {
243
+ childNodes,
244
+ content,
245
+ remove: () => content.append(...childNodes),
246
+ replaceWith(el) {
247
+ if (el === ref)
248
+ return;
249
+ ref.before(el);
250
+ content.append(...childNodes);
251
+ },
252
+ attributes,
253
+ removeAttribute(name) {
254
+ attributes.splice(attributes.findIndex((a) => a.name === name), 1);
255
+ }
256
+ };
257
+ };
258
+
259
+ // node_modules/ulive/dist/ulive.es.js
260
+ var ulive_es_exports = {};
261
+ __export(ulive_es_exports, {
262
+ batch: () => batch2,
263
+ computed: () => computed2,
264
+ effect: () => effect2,
265
+ signal: () => signal2,
266
+ untracked: () => untracked2
267
+ });
268
+ var current;
269
+ var batched;
270
+ var signal2 = (v, s, obs = /* @__PURE__ */ new Set()) => (s = {
271
+ get value() {
272
+ current?.deps.push(obs.add(current));
273
+ return v;
274
+ },
275
+ set value(val) {
276
+ if (val === v)
277
+ return;
278
+ v = val;
279
+ for (let sub of obs)
280
+ batched ? batched.add(sub) : sub();
281
+ },
282
+ peek() {
283
+ return v;
284
+ }
285
+ }, s.toJSON = s.then = s.toString = s.valueOf = () => s.value, s);
286
+ var effect2 = (fn, teardown, fx, deps) => (fx = (prev) => {
287
+ teardown?.call?.();
288
+ prev = current, current = fx;
289
+ try {
290
+ teardown = fn();
291
+ } finally {
292
+ current = prev;
293
+ }
294
+ }, deps = fx.deps = [], fx(), (dep) => {
295
+ teardown?.call?.();
296
+ while (dep = deps.pop())
297
+ dep.delete(fx);
298
+ });
299
+ var computed2 = (fn, s = signal2(), c, e) => (c = {
300
+ get value() {
301
+ e || (e = effect2(() => s.value = fn()));
302
+ return s.value;
303
+ },
304
+ peek: s.peek
305
+ }, c.toJSON = c.then = c.toString = c.valueOf = () => c.value, c);
306
+ var batch2 = (fn) => {
307
+ let fxs = batched;
308
+ if (!fxs)
309
+ batched = /* @__PURE__ */ new Set();
310
+ try {
311
+ fn();
312
+ } finally {
313
+ if (!fxs) {
314
+ fxs = batched;
315
+ batched = null;
316
+ for (const fx of fxs)
317
+ fx();
318
+ }
319
+ }
320
+ };
321
+ var untracked2 = (fn, prev, v) => (prev = current, current = null, v = fn(), current = prev, v);
322
+
323
+ // directive/if.js
324
+ var _prevIf = Symbol("if");
325
+ directive.if = (el, evaluate, state) => {
326
+ let next = el.nextElementSibling, holder = document.createTextNode(""), curEl, ifEl, elseEl;
327
+ el.replaceWith(holder);
328
+ ifEl = el.content ? frag(el) : el;
329
+ memo.set(ifEl, null);
330
+ if (next?.hasAttribute(":else")) {
331
+ next.removeAttribute(":else");
332
+ if (!next.hasAttribute(":if"))
333
+ next.remove(), elseEl = next.content ? frag(next) : next, memo.set(elseEl, null);
334
+ }
335
+ return effect(() => {
336
+ const newEl = evaluate(state) ? ifEl : el[_prevIf] ? null : elseEl;
337
+ if (next)
338
+ next[_prevIf] = newEl === ifEl;
339
+ if (curEl != newEl) {
340
+ curEl?.remove();
341
+ if (curEl = newEl) {
342
+ holder.before(curEl.content || curEl);
343
+ memo.get(curEl) === null && memo.delete(curEl);
344
+ sprae(curEl, state);
345
+ }
346
+ }
347
+ });
348
+ };
349
+
350
+ // directive/each.js
351
+ directive.each = (tpl, [itemVar, idxVar, evaluate], state) => {
352
+ const holder = document.createTextNode("");
353
+ tpl.replaceWith(holder);
354
+ let cur, keys2, prevl = 0;
355
+ const items = computed(() => {
356
+ keys2 = null;
357
+ let items2 = evaluate(state);
358
+ if (typeof items2 === "number")
359
+ items2 = Array.from({ length: items2 }, (_, i) => i + 1);
360
+ if (items2?.constructor === Object)
361
+ keys2 = Object.keys(items2), items2 = Object.values(items2);
362
+ return items2 || [];
363
+ });
364
+ const update = () => {
365
+ untracked(() => {
366
+ var _a, _b;
367
+ let i = 0, newItems = items.value, newl = newItems.length;
368
+ if (cur && !cur[_change]) {
369
+ for (let s of cur[_signals] || []) {
370
+ s[Symbol.dispose]();
371
+ }
372
+ cur = null, prevl = 0;
373
+ }
374
+ if (newl < prevl) {
375
+ cur.length = newl;
376
+ } else {
377
+ if (!cur) {
378
+ cur = newItems;
379
+ } else {
380
+ for (; i < prevl; i++) {
381
+ cur[i] = newItems[i];
382
+ }
383
+ }
384
+ for (; i < newl; i++) {
385
+ cur[i] = newItems[i];
386
+ let idx = i, scope = store({
387
+ [itemVar]: cur[_signals]?.[idx] || cur[idx],
388
+ [idxVar]: keys2 ? keys2[idx] : idx
389
+ }, state), el = tpl.content ? frag(tpl) : tpl.cloneNode(true);
390
+ holder.before(el.content || el);
391
+ sprae(el, scope);
392
+ ((_b = cur[_a = _signals] || (cur[_a] = []))[i] || (_b[i] = {}))[Symbol.dispose] = () => {
393
+ el[Symbol.dispose](), el.remove();
394
+ };
395
+ }
396
+ }
397
+ prevl = newl;
398
+ });
399
+ };
400
+ let planned = 0;
401
+ return effect(() => {
402
+ items.value[_change]?.value;
403
+ if (!planned) {
404
+ update();
405
+ queueMicrotask(() => (planned && update(), planned = 0));
406
+ } else
407
+ planned++;
408
+ });
409
+ };
410
+ directive.each.parse = (expr) => {
411
+ let [leftSide, itemsExpr] = expr.split(/\s+in\s+/);
412
+ let [itemVar, idxVar = "$"] = leftSide.split(/\s*,\s*/);
413
+ return [itemVar, idxVar, parse(itemsExpr)];
414
+ };
415
+
416
+ // directive/ref.js
417
+ directive.ref = (el, expr, state) => {
418
+ state[expr] = el;
419
+ };
420
+ directive.ref.parse = (expr) => expr;
421
+
422
+ // directive/with.js
423
+ directive.with = (el, evaluate, rootState) => {
424
+ let state;
425
+ return effect(() => {
426
+ let values = evaluate(rootState);
427
+ sprae(el, state ? values : state = store(values, rootState));
428
+ });
429
+ };
430
+
431
+ // directive/html.js
432
+ directive.html = (el, evaluate, state) => {
433
+ let tpl = evaluate(state);
434
+ if (!tpl)
435
+ return;
436
+ let content = (tpl.content || tpl).cloneNode(true);
437
+ el.replaceChildren(content);
438
+ sprae(el, state);
439
+ };
440
+
441
+ // directive/text.js
442
+ directive.text = (el, evaluate, state) => {
443
+ if (el.content)
444
+ el.replaceWith(el = frag(el).childNodes[0]);
445
+ return effect(() => {
446
+ let value = evaluate(state);
447
+ el.textContent = value == null ? "" : value;
448
+ });
449
+ };
450
+
451
+ // directive/class.js
452
+ directive.class = (el, evaluate, state) => {
453
+ let cur = /* @__PURE__ */ new Set();
454
+ return effect(() => {
455
+ let v = evaluate(state);
456
+ let clsx = /* @__PURE__ */ new Set();
457
+ if (v) {
458
+ if (typeof v === "string")
459
+ v.split(" ").map((cls) => clsx.add(cls));
460
+ else if (Array.isArray(v))
461
+ v.map((v2) => v2 && clsx.add(v2));
462
+ else
463
+ Object.entries(v).map(([k, v2]) => v2 && clsx.add(k));
464
+ }
465
+ for (let cls of cur)
466
+ if (clsx.has(cls))
467
+ clsx.delete(cls);
468
+ else
469
+ el.classList.remove(cls);
470
+ for (let cls of cur = clsx)
471
+ el.classList.add(cls);
472
+ });
473
+ };
474
+
475
+ // directive/style.js
476
+ directive.style = (el, evaluate, state) => {
477
+ let initStyle = el.getAttribute("style");
478
+ return effect(() => {
479
+ let v = evaluate(state);
480
+ if (typeof v === "string")
481
+ el.setAttribute("style", initStyle + (initStyle.endsWith(";") ? "" : "; ") + v);
482
+ else {
483
+ if (initStyle)
484
+ el.setAttribute("style", initStyle);
485
+ for (let k in v)
486
+ k[0] == "-" ? el.style.setProperty(k, v[k]) : el.style[k] = v[k];
487
+ }
488
+ });
489
+ };
490
+
491
+ // directive/default.js
492
+ directive.default = (target, evaluate, state, name) => {
493
+ if (!name.startsWith("on"))
494
+ return effect(() => {
495
+ let value = evaluate(state);
496
+ if (name)
497
+ attr(target, name, value);
498
+ else
499
+ for (let key in value)
500
+ attr(target, dashcase(key), value[key]);
501
+ });
502
+ const ctxs = name.split("..").map((e) => {
503
+ let ctx = { evt: "", target, test: () => true };
504
+ ctx.evt = (e.startsWith("on") ? e.slice(2) : e).replace(
505
+ /\.(\w+)?-?([-\w]+)?/g,
506
+ (match, mod, param = "") => (ctx.test = mods[mod]?.(ctx, ...param.split("-")) || ctx.test, "")
507
+ );
508
+ return ctx;
509
+ });
510
+ if (ctxs.length == 1)
511
+ return effect(() => addListener(evaluate(state), ctxs[0]));
512
+ let startFn, nextFn, off, idx = 0;
513
+ const nextListener = (fn) => {
514
+ off = addListener((e) => (off(), nextFn = fn?.(e), (idx = ++idx % ctxs.length) ? nextListener(nextFn) : startFn && nextListener(startFn)), ctxs[idx]);
515
+ };
516
+ return effect(() => (startFn = evaluate(state), !off && nextListener(startFn), () => startFn = null));
517
+ function addListener(fn, { evt, target: target2, test, defer, stop, prevent, immediate, ...opts }) {
518
+ if (defer)
519
+ fn = defer(fn);
520
+ const cb = (e) => {
521
+ try {
522
+ test(e) && (stop && (immediate ? e.stopImmediatePropagation() : e.stopPropagation()), prevent && e.preventDefault(), fn?.(e));
523
+ } catch (error) {
524
+ err(error, `:on${evt}`, fn);
525
+ }
526
+ };
527
+ target2.addEventListener(evt, cb, opts);
528
+ return () => target2.removeEventListener(evt, cb, opts);
529
+ }
530
+ ;
531
+ };
532
+ var mods = {
533
+ prevent(ctx) {
534
+ ctx.prevent = true;
535
+ },
536
+ stop(ctx) {
537
+ ctx.stop = true;
538
+ },
539
+ immediate(ctx) {
540
+ ctx.immediate = true;
541
+ },
542
+ once(ctx) {
543
+ ctx.once = true;
544
+ },
545
+ passive(ctx) {
546
+ ctx.passive = true;
547
+ },
548
+ capture(ctx) {
549
+ ctx.capture = true;
550
+ },
551
+ window(ctx) {
552
+ ctx.target = window;
553
+ },
554
+ document(ctx) {
555
+ ctx.target = document;
556
+ },
557
+ throttle(ctx, limit) {
558
+ ctx.defer = (fn) => throttle(fn, limit ? Number(limit) || 0 : 108);
559
+ },
560
+ debounce(ctx, wait) {
561
+ ctx.defer = (fn) => debounce(fn, wait ? Number(wait) || 0 : 108);
562
+ },
563
+ outside: (ctx) => (e) => {
564
+ let target = ctx.target;
565
+ if (target.contains(e.target))
566
+ return false;
567
+ if (e.target.isConnected === false)
568
+ return false;
569
+ if (target.offsetWidth < 1 && target.offsetHeight < 1)
570
+ return false;
571
+ return true;
572
+ },
573
+ self: (ctx) => (e) => e.target === ctx.target,
574
+ ctrl: (_, ...param) => (e) => keys.ctrl(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),
575
+ shift: (_, ...param) => (e) => keys.shift(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),
576
+ alt: (_, ...param) => (e) => keys.alt(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),
577
+ meta: (_, ...param) => (e) => keys.meta(e) && param.every((p) => keys[p] ? keys[p](e) : e.key === p),
578
+ arrow: () => keys.arrow,
579
+ enter: () => keys.enter,
580
+ esc: () => keys.esc,
581
+ tab: () => keys.tab,
582
+ space: () => keys.space,
583
+ delete: () => keys.delete,
584
+ digit: () => keys.digit,
585
+ letter: () => keys.letter,
586
+ char: () => keys.char
587
+ };
588
+ var keys = {
589
+ ctrl: (e) => e.ctrlKey || e.key === "Control" || e.key === "Ctrl",
590
+ shift: (e) => e.shiftKey || e.key === "Shift",
591
+ alt: (e) => e.altKey || e.key === "Alt",
592
+ meta: (e) => e.metaKey || e.key === "Meta" || e.key === "Command",
593
+ arrow: (e) => e.key.startsWith("Arrow"),
594
+ enter: (e) => e.key === "Enter",
595
+ esc: (e) => e.key.startsWith("Esc"),
596
+ tab: (e) => e.key === "Tab",
597
+ space: (e) => e.key === "\xA0" || e.key === "Space" || e.key === " ",
598
+ delete: (e) => e.key === "Delete" || e.key === "Backspace",
599
+ digit: (e) => /^\d$/.test(e.key),
600
+ letter: (e) => /^\p{L}$/gu.test(e.key),
601
+ char: (e) => /^\S$/.test(e.key)
602
+ };
603
+ var attr = (el, name, v) => {
604
+ if (v == null || v === false)
605
+ el.removeAttribute(name);
606
+ else
607
+ el.setAttribute(name, v === true ? "" : typeof v === "number" || typeof v === "string" ? v : "");
608
+ };
609
+ var throttle = (fn, limit) => {
610
+ let pause, planned, block = (e) => {
611
+ pause = true;
612
+ setTimeout(() => {
613
+ pause = false;
614
+ if (planned)
615
+ return planned = false, block(e), fn(e);
616
+ }, limit);
617
+ };
618
+ return (e) => {
619
+ if (pause)
620
+ return planned = true;
621
+ block(e);
622
+ return fn(e);
623
+ };
624
+ };
625
+ var debounce = (fn, wait) => {
626
+ let timeout;
627
+ return (e) => {
628
+ clearTimeout(timeout);
629
+ timeout = setTimeout(() => {
630
+ timeout = null;
631
+ fn(e);
632
+ }, wait);
633
+ };
634
+ };
635
+ var dashcase = (str) => {
636
+ return str.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g, (match) => "-" + match.toLowerCase());
637
+ };
638
+
639
+ // directive/value.js
640
+ directive.value = (el, [getValue, setValue], state) => {
641
+ 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) => (from = el.selectionStart, to = el.selectionEnd, el.setAttribute("value", el.value = value == null ? "" : value), from && el.setSelectionRange(from, to)) : el.type === "checkbox" ? (value) => (el.checked = value, attr(el, "checked", value)) : el.type === "select-one" ? (value) => {
642
+ for (let option in el.options)
643
+ option.removeAttribute("selected");
644
+ el.value = value;
645
+ el.selectedOptions[0]?.setAttribute("selected", "");
646
+ } : (value) => el.value = value;
647
+ const handleChange = el.type === "checkbox" ? (e) => setValue(state, el.checked) : (e) => setValue(state, el.value);
648
+ el.addEventListener("input", handleChange);
649
+ el.addEventListener("change", handleChange);
650
+ return effect(() => update(getValue(state)));
651
+ };
652
+ directive.value.parse = (expr) => {
653
+ let evaluate = [parse(expr)];
654
+ try {
655
+ evaluate.push(parse(`${expr}=arguments[1];`));
656
+ } catch (e) {
657
+ }
658
+ return evaluate;
659
+ };
660
+
661
+ // directive/fx.js
662
+ directive.fx = (el, evaluate, state) => {
663
+ return effect(() => evaluate(state));
664
+ };
665
+
666
+ // sprae.js
667
+ sprae.use(ulive_es_exports);
668
+ sprae.use({ compile: (expr) => sprae.constructor(`with (arguments[0]) { return ${expr} };`) });
669
+ var sprae_default = sprae;
31
670
  if (document?.currentScript?.hasAttribute('init')) sprae(document.documentElement)if (typeof module.exports == "object" && typeof exports == "object") {
32
671
  var __cp = (to, from, except, desc) => {
33
672
  if ((from && typeof from === "object") || typeof from === "function") {