sprae 12.3.6 → 12.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core.js CHANGED
@@ -98,7 +98,7 @@ export const parse = (expr) => {
98
98
  // if, const, let - no return
99
99
  if (/^(if|let|const)\b/.test(_expr));
100
100
  // first-level semicolons - no return
101
- else if (/^(?:[^{};]|\{[^}]*\})*;/.test(_expr));
101
+ else if (hasSemi(_expr));
102
102
  else _expr = `return ${_expr}`
103
103
 
104
104
  // async expression
@@ -124,6 +124,14 @@ export const parse = (expr) => {
124
124
  }
125
125
  const cache = {};
126
126
 
127
+ const hasSemi = s => {
128
+ for (let d=0,i=0;i<s.length;i++) {
129
+ if (s[i]=='{') d++
130
+ else if (s[i]=='}') d--
131
+ else if (s[i]==';' && !d) return true
132
+ }
133
+ return false
134
+ }
127
135
 
128
136
 
129
137
  /**
package/directive/ref.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { parse } from "../core.js"
2
- // import { setter } from "./value.js"
2
+ import { setter } from "./value.js"
3
3
 
4
4
  export default (el, state, expr) => {
5
5
  let fn = parse(expr)(state)
@@ -7,6 +7,6 @@ export default (el, state, expr) => {
7
7
  if (typeof fn == 'function') return {[Symbol.dispose]:fn(el)}
8
8
 
9
9
  // NOTE: we have to set element statically (outside of effect) to avoid parasitic sub - multiple els with same :ref can cause recursion (eg. :each :ref="x")
10
- // FIXME: do via (setter(expr)(state, el))
11
- else Object.defineProperty(state, expr, { value: el, configurable: true })
10
+ // Object.defineProperty(state, expr, { value: el, configurable: true })
11
+ setter(expr)(state, el)
12
12
  }
package/dist/sprae.js CHANGED
@@ -1,5 +1,5 @@
1
- var we=Object.defineProperty;var Ne=(e,r)=>{for(var t in r)we(e,t,{get:r[t],enumerable:!0})};var D=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),f=Symbol("state"),V=Symbol("on"),W=Symbol("off"),F=Symbol("init"),Z=":",g,M,J,K=e=>e(),L=K,I={},$={},z=null,je=(e=document.body,r)=>{if(e[f])return Object.assign(e[f],r);r=R(r||{});let t=[],o=[];e[V]=()=>!o&&(o=t.map(i=>i())),e[W]=()=>(o?.map(i=>i()),o=null),e[D]||(e[D]=()=>(e[W](),e[W]=e[V]=e[D]=e[F]=e[f]=null));let n=e[F]=i=>{let s=i.attributes,a;if(s)for(let c=0;c<s.length;){let{name:l,value:d}=s[c];if(l.startsWith(Z)){if(i.removeAttribute(l),z=l,t.push(a=ee(i,l.slice(Z.length),d,r)),o.push(a()),f in i)return}else c++}for(let c of[...i.childNodes])c.nodeType==1&&n(c)};return n(e),e[f]===void 0&&(e[f]=r),r},ee,te,m=e=>{let r=v[e=e.trim()];if(r)return r;let t=e||"undefined";/^(if|let|const)\b/.test(t)||/^(?:[^{};]|\{[^}]*\})*;/.test(t)||(t=`return ${t}`),/\bawait\s/.test(t)&&(t=`return (async()=>{ ${t} })()`);try{r=te(t)}catch(o){console.error(`\u2234 ${o}
1
+ var Ne=Object.defineProperty;var je=(e,r)=>{for(var t in r)Ne(e,t,{get:r[t],enumerable:!0})};var D=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),f=Symbol("state"),V=Symbol("on"),W=Symbol("off"),F=Symbol("init"),Z=":",g,M,J,K=e=>e(),L=K,I={},$={},z=null,Te=(e=document.body,r)=>{if(e[f])return Object.assign(e[f],r);r=R(r||{});let t=[],o=[];e[V]=()=>!o&&(o=t.map(i=>i())),e[W]=()=>(o?.map(i=>i()),o=null),e[D]||(e[D]=()=>(e[W](),e[W]=e[V]=e[D]=e[F]=e[f]=null));let n=e[F]=i=>{let s=i.attributes,a;if(s)for(let c=0;c<s.length;){let{name:l,value:d}=s[c];if(l.startsWith(Z)){if(i.removeAttribute(l),z=l,t.push(a=te(i,l.slice(Z.length),d,r)),o.push(a()),f in i)return}else c++}for(let c of[...i.childNodes])c.nodeType==1&&n(c)};return n(e),e[f]===void 0&&(e[f]=r),r},te,re,m=e=>{let r=ee[e=e.trim()];if(r)return r;let t=e||"undefined";/^(if|let|const)\b/.test(t)||ke(t)||(t=`return ${t}`),/\bawait\s/.test(t)&&(t=`return (async()=>{ ${t} })()`);try{r=re(t)}catch(o){console.error(`\u2234 ${o}
2
2
 
3
- ${z}="${e}"`)}return v[e]=function(o,n,i){try{let s=r?.call(this,o);return n?s?.then?(s.then(a=>i=n(a)),()=>typeof i=="function"&&i()):n(s):s}catch(s){console.error(`\u2234 ${s}
3
+ ${z}="${e}"`)}return ee[e]=function(o,n,i){try{let s=r?.call(this,o);return n?s?.then?(s.then(a=>i=n(a)),()=>typeof i=="function"&&i()):n(s):s}catch(s){console.error(`\u2234 ${s}
4
4
 
5
- ${z}="${e}"`)}}},v={},G=e=>(e.compile&&(te=e.compile),e.prefix&&(Z=e.prefix),e.signal&&(g=e.signal),e.effect&&(M=e.effect),e.computed&&(J=e.computed),e.batch&&(K=e.batch),e.untracked&&(L=e.untracked),e.dir&&(ee=e.dir)),h=(e,r)=>{for(;r.length;){let[t,...o]=r.pop().split("-"),n=$[t],i;if(n&&(i=n(e,...o))!==e){for(let s in e)i[s]??(i[s]=e[s]);e=i}}return e},j=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],o=document.createTextNode(""),n=(r.append(o),[...r.childNodes]);return{childNodes:n,content:r,remove:()=>r.append(...n),replaceWith(i){i!==o&&(o.before(i),r.append(...n))},attributes:t,removeAttribute(i){t.splice(t.findIndex(s=>s.name===i),1)}}},re=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase()),b=(e,r,t)=>t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":t),H=(e,r=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(H):Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[])).join(" "):"",C=(e,r=queueMicrotask)=>{let t=0,o,n=i=>{o=i,t++||(e(o),r((s=t>1)=>(t=0,s&&n(o))))};return n},oe=(e,r=queueMicrotask,t=0)=>(o,n=++t)=>r(()=>n==t&&e(o)),p=je;var x=Symbol("signals"),O=Symbol("change"),U=Symbol("set"),Q=!0,E=(e,r)=>{if(!e||e[Symbol.toStringTag]||e[x])return e;if(e.constructor!==Object)return Array.isArray(e)?Te(e):e;let t=Object.keys(e).length,o={},n=new Proxy(Object.assign(o,{[O]:g(t),[x]:o}),{get:(s,a)=>a in o?o[a]?o[a].valueOf():o[a]:r?r[a]:typeof globalThis[a]=="function"&&!globalThis[a].prototype?globalThis[a].bind(globalThis):globalThis[a],set:(s,a,c,l)=>a in o?(ne(o,a,c),1):(Q=!1,r&&a in r?r[a]=c:(B(o,a,c),o[O].value=++t),Q=!0,1),deleteProperty:(s,a)=>(a in o&&(a[0]!="_"&&o[a]?.[Symbol.dispose]?.(),delete o[a],o[O].value=--t),1),ownKeys:()=>(o[O].value,Reflect.ownKeys(o)),has:(s,a)=>a in o?!0:r?a in r:Q}),i=Object.getOwnPropertyDescriptors(e);for(let s in e)i[s]?.get?(o[s]=J(i[s].get.bind(n)))[U]=i[s].set?.bind(n):B(o,s,e[s]);return n},Te=(e,r=globalThis)=>{let t=Array(e.length).fill(null),o=!1,n=a=>function(){return o=!0,a.apply(this,arguments)},i=g(e.length),s=new Proxy(Object.assign(t,{[O]:i,[x]:t,push:n(t.push),pop:n(t.pop),shift:n(t.shift),unshift:n(t.unshift),splice:n(t.splice)}),{get(a,c){return c==="length"?o?(o=!1,t.length):i.value:typeof c=="symbol"||isNaN(c)?t[c]?.valueOf()??r[c]:(t[c]??(t[c]=g(E(e[c])))).valueOf()},set(a,c,l){if(c==="length"){for(let d=l;d<t.length;d++)delete s[d];i.value=t.length=l}else c>=t.length?(B(t,c,l),s.length=+c+1):t[c]?ne(t,c,l):B(t,c,l);return 1},deleteProperty:(a,c)=>(t[c]?.[Symbol.dispose]?.(),delete t[c],1)});return s},B=(e,r,t)=>e[r]=r[0]=="_"||t?.peek?t:g(E(t)),ne=(e,r,t,o,n)=>r[0]==="_"?e[r]=t:t!==(n=(o=e[r]).peek())&&(o[U]?o[U](t):Array.isArray(t)&&Array.isArray(n)?O in n?L(()=>K(()=>{for(let i=0;i<t.length;i++)n[i]=t[i];n.length=t.length})):o.value=t:o.value=E(t)),R=E;var Y={};Ne(Y,{batch:()=>De,computed:()=>ke,effect:()=>ae,signal:()=>se,untracked:()=>$e});var T,ie=0,P,se=(e,r,t=new Set,o=()=>r.value)=>r={get value(){return T?.deps.add(t.add(T)),e},set value(n){if(n!==e){e=n;for(let i of t)P?P.add(i):i()}},peek(){return e},toJSON:o,toString:o,valueOf:o},ae=(e,r,t,o)=>(t=n=>{let i=r;if(r=null,i?.call?.(),n=T,T=t,ie++>10)throw"Cycle detected";try{r=e()}finally{T=n,ie--}},t.fn=e,o=t.deps=new Set,t(),n=>{r?.call?.();for(n of o)n.delete(t);o.clear()}),ke=(e,r=se(),t,o,n=()=>t.value)=>t={get value(){return o||(o=ae(()=>r.value=e())),r.value},peek:r.peek,toJSON:n,toString:n,valueOf:n},De=(e,r=!P,t)=>{P??(P=new Set);try{e()}finally{if(r){[P,t]=[null,P];for(let o of t)o()}}},$e=(e,r,t)=>(r=T,T=null,t=e(),T=r,t);var ce=(e,r)=>{var i;let t,o,n;return e._holder?p(o=e,r):(e[i=f]??(e[i]=null),o=e.content?j(e):e,e.replaceWith(t=document.createTextNode("")),o._holder=t._holder=t,t._clauses=[o._clause=[o,!1]],t.update=C(()=>{let s=t._clauses.find(([,a])=>a);s!=n&&(n?.[0].remove(),n?.[0][W]?.(),(n=s)&&(t.before(n[0].content||n[0]),n[0][f]?n[0][V]?.():(delete n[0][f],p(n[0],r))))})),s=>{o._clause[1]=s,o._holder.update()}};var le=e=>{let r,t=e;for(r=e.content?j(e):e;t&&!(r._holder=t._holder);)t=t.previousSibling;return e.remove(),e[f]=null,r._holder._clauses.push(r._clause=[r,!0]),r._holder.update};var ue=e=>(e.content&&e.replaceWith(e=j(e).childNodes[0]),r=>(r=typeof r=="function"?r(e.textContent):r,e.textContent=r??""));var fe=(e,r,t,o)=>{let n=new Set,i;return o.includes(".")&&(e=h({target:e},o.split(".").slice(1)).target??e),s=>{i=new Set,s&&H(typeof s=="function"?s(e.className):s).split(" ").map(a=>a&&i.add(a));for(let a of n)i.has(a)?i.delete(a):e.classList.remove(a);for(let a of n=i)e.classList.add(a)}};var pe=(e,r,t,o)=>{let n;return o.includes(".")&&(e=h({target:e},o.split(".").slice(1)).target??e),i=>{if(n||(n=e.getAttribute("style")),i=typeof i=="function"?i(e.style):i,typeof i=="string")b(e,"style",n+"; "+i);else{n&&b(e,"style",n);for(let s in i)s[0]=="-"?e.style.setProperty(s,i[s]):s[0]>"A"&&(e.style[s]=i[s])}}};var de=()=>e=>typeof e=="function"&&e();var Ce=(e,r=m(`${e}=__`))=>(t,o)=>{t.__=o,r(t),delete t.__},me=(e,r,t)=>{try{let o=Ce(t),n=e.type==="checkbox"?()=>o(r,e.checked):e.type==="select-multiple"?()=>o(r,[...e.selectedOptions].map(i=>i.value)):()=>o(r,e.selectedIndex<0?null:isNaN(e.valueAsNumber)?e.value:e.valueAsNumber);e.oninput=e.onchange=n,e.type?.startsWith("select")&&(new MutationObserver(n).observe(e,{childList:!0,subtree:!0,attributes:!0}),p(e,r)),m(t)(r)??n()}catch{}return e.type==="text"||e.type===""||e.tagName==="TEXTAREA"?(o,n,i)=>(n=e.selectionStart,i=e.selectionEnd,e.setAttribute("value",e.value=o??""),n&&e.setSelectionRange(n,i)):e.type==="checkbox"?o=>(e.checked=o,b(e,"checked",o)):e.type==="radio"?o=>e.value===o&&(e.checked=o,b(e,"checked",o)):e.type==="select-one"?o=>{for(let n of e.options)n.value==o?n.setAttribute("selected",""):n.removeAttribute("selected");e.value=o}:e.type==="select-multiple"?o=>{for(let n of e.options)n.removeAttribute("selected");for(let n of o)e.querySelector(`[value="${n}"]`).setAttribute("selected","")}:o=>e.value=o};var ye=(e,r,t)=>{let o=m(t)(r);if(typeof o=="function")return{[Symbol.dispose]:o(e)};Object.defineProperty(r,t,{value:e,configurable:!0})};var ge=(e,r)=>{let t=e[f]=E({},r),o=!1;return n=>{if(n=typeof n=="function"?n(t):n,n!==t)for(let i in n){let s=typeof n[i]=="function"?n[i].bind(t):n[i];i in t[x]?t[i]=s:t[x][i]=i[0]=="_"||s?.peek?s:g(E(s))}return!o&&(o=!0,delete e[f],L(()=>p(e,t)))}};var he=(e,r,t)=>{let[o,n]=t.split(/\bin|of\b/),[i,s="$"]=o.trim().replace(/\(|\)/g,"").split(/\s*,\s*/),a=document.createTextNode(""),c,l,d,w=0,_=C(()=>{var N,y;let u=0,k=d,S=k.length;if(c&&!c[O]){for(let A of c[x]||[])A[Symbol.dispose]();c=null,w=0}if(S<w)c.length=S;else{if(!c)c=k;else for(;u<w;)c[u]=k[u++];for(;u<S;u++){c[u]=k[u];let A=u,Ae=Object.create(r,{[i]:{get:()=>c[A]},[s]:{value:l?l[A]:A}}),q=e.content?j(e):e.cloneNode(!0);a.before(q.content||q),p(q,Ae);let Oe=((y=c[N=x]||(c[N]=[]))[u]||(y[u]={}))[Symbol.dispose];c[x][u][Symbol.dispose]=()=>{Oe?.(),q[Symbol.dispose]?.(),q.remove()}}}w=S});return e.replaceWith(a),e[f]=null,Object.assign(u=>(l=null,typeof u=="number"?d=Array.from({length:u},(k,S)=>S+1):u?.constructor===Object?(l=Object.keys(u),d=Object.values(u)):d=u||[],M(()=>{d[O]?.value,_()})),{eval:m(n)})};var be=(e,r,t,o)=>n=>b(e,o,typeof n=="function"?n(e.getAttribute(o)):n);var xe=e=>r=>{for(let t in r)b(e,re(t),r[t])};var _e=(e,r,t,o)=>{let[n,...i]=o.slice(2).split("."),s=m(t).bind(e),a=h(Object.assign(c=>s(r,l=>typeof l=="function"?l(c):l),{target:e}),i);return a.target.addEventListener(n,a,a),{[Symbol.dispose](){a.target.removeEventListener(n,a)}}};var Se=(e,r,t,o)=>{let n,i,s=o.split("..").map((a,c,{length:l})=>a.split(":").reduce((d,w)=>{let[_,...u]=w.slice(2).split("."),k=m(t).bind(e),S=(y,A)=>n=typeof y=="function"?y(A):y,N=h(Object.assign(y=>(c?S(n,y):k(r,A=>S(A,y)),i(),i=s[(c+1)%l]()),{target:e}),u);return y=>(y=d?.(),N.target.addEventListener(_,N,N),()=>(y?.(),N.target.removeEventListener(_,N)))},null));return i=s[0](),{[Symbol.dispose](){i?.()}}};Object.assign(I,{_:(e,r,t,o)=>(o.startsWith("on")?_e:be)(e,r,t,o),"":xe,class:fe,text:ue,style:pe,fx:de,value:me,ref:ye,scope:ge,if:ce,else:le,each:he});var Ee=(e,r,t,o)=>{let[n,...i]=r.split("."),s=I[n]||I._;return()=>{let a=s(e,o,t,r);if(!a?.call)return a?.[D];let c=h(Object.assign(C(()=>l.value++),{target:e}),i),l=g(0),d=0,w=a.eval??m(t).bind(e),_,u=()=>(typeof _=="function"&&_(),_=null);return o=e[f]??o,M(()=>(l.value==d?c():(d=l.value,_=w(o,a)),u))}};Object.assign($,{debounce:(e,r)=>oe(e,(r||(r=0),r?r==="raf"?requestAnimationFrame:t=>setTimeout(t,r):void 0)),throttle:(e,r)=>C(e,(r||(r=0),r?r==="raf"?requestAnimationFrame:t=>setTimeout(t,r):void 0)),delay:(e,r)=>r?t=>setTimeout(()=>e(t),r):t=>queueMicrotask(()=>e(t)),tick:e=>(console.warn("Deprecated"),r=>queueMicrotask(()=>e(r))),raf:e=>(console.warn("Deprecated"),r=>requestAnimationFrame(()=>e(r))),once:(e,r,t)=>(t=o=>!r&&(r=1,e(o)),t.once=!0,t),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),away:e=>Object.assign(r=>!e.target.contains(r.target)&&r.target.isConnected&&e(r),{target:e.target.ownerDocument}),prevent:e=>r=>(r?.preventDefault(),e(r)),stop:(e,r)=>t=>(r?.[0]==="i"?t?.stopImmediatePropagation():t?.stopPropagation(),e(t)),immediate:e=>(console.warn("Deprecated"),r=>(r?.stopImmediatePropagation(),e(r))),passive:e=>(e.passive=!0,e),capture:e=>(e.capture=!0,e)});$.outside=$.away;var X={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",cmd:e=>e.metaKey||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 X)$[e]=(r,t,o)=>n=>X[e](n)&&(!t||X[t]?.(n))&&(!o||X[o]?.(n))&&r(n);G({compile:e=>p.constructor(`with(arguments[0]){${e}}`),dir:(e,r,t,o)=>r.includes("..")?()=>Se(e,o,t,r)[D]:r.split(":").reduce((n,i)=>{let s=Ee(e,i,t,o);return n?(a,c)=>(a=n(),c=s(),()=>{a(),c()}):s},null),...Y});p.use=G;p.store=R;p.directive=I;p.modifier=$;var It=p.start=(e=document.body,r)=>{let t=R(r);return p(e,t),new MutationObserver(n=>{for(let i of n)for(let s of i.addedNodes)s.nodeType===1&&s[f]===void 0&&e.contains(s)&&e[F](s)}).observe(e,{childList:!0,subtree:!0}),t};p.version="12.3.5";var Rt=p;export{K as batch,J as computed,Rt as default,M as effect,g as signal,p as sprae,It as start,R as store,L as untracked,G as use};
5
+ ${z}="${e}"`)}}},ee={},ke=e=>{for(let r=0,t=0;t<e.length;t++)if(e[t]=="{")r++;else if(e[t]=="}")r--;else if(e[t]==";"&&!r)return!0;return!1},G=e=>(e.compile&&(re=e.compile),e.prefix&&(Z=e.prefix),e.signal&&(g=e.signal),e.effect&&(M=e.effect),e.computed&&(J=e.computed),e.batch&&(K=e.batch),e.untracked&&(L=e.untracked),e.dir&&(te=e.dir)),h=(e,r)=>{for(;r.length;){let[t,...o]=r.pop().split("-"),n=$[t],i;if(n&&(i=n(e,...o))!==e){for(let s in e)i[s]??(i[s]=e[s]);e=i}}return e},j=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],o=document.createTextNode(""),n=(r.append(o),[...r.childNodes]);return{childNodes:n,content:r,remove:()=>r.append(...n),replaceWith(i){i!==o&&(o.before(i),r.append(...n))},attributes:t,removeAttribute(i){t.splice(t.findIndex(s=>s.name===i),1)}}},oe=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase()),b=(e,r,t)=>t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":t),H=(e,r=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(H):Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[])).join(" "):"",C=(e,r=queueMicrotask)=>{let t=0,o,n=i=>{o=i,t++||(e(o),r((s=t>1)=>(t=0,s&&n(o))))};return n},ne=(e,r=queueMicrotask,t=0)=>(o,n=++t)=>r(()=>n==t&&e(o)),p=Te;var x=Symbol("signals"),O=Symbol("change"),U=Symbol("set"),Q=!0,E=(e,r)=>{if(!e||e[Symbol.toStringTag]||e[x])return e;if(e.constructor!==Object)return Array.isArray(e)?De(e):e;let t=Object.keys(e).length,o={},n=new Proxy(Object.assign(o,{[O]:g(t),[x]:o}),{get:(s,a)=>a in o?o[a]?o[a].valueOf():o[a]:r?r[a]:typeof globalThis[a]=="function"&&!globalThis[a].prototype?globalThis[a].bind(globalThis):globalThis[a],set:(s,a,c,l)=>a in o?(ie(o,a,c),1):(Q=!1,r&&a in r?r[a]=c:(B(o,a,c),o[O].value=++t),Q=!0,1),deleteProperty:(s,a)=>(a in o&&(a[0]!="_"&&o[a]?.[Symbol.dispose]?.(),delete o[a],o[O].value=--t),1),ownKeys:()=>(o[O].value,Reflect.ownKeys(o)),has:(s,a)=>a in o?!0:r?a in r:Q}),i=Object.getOwnPropertyDescriptors(e);for(let s in e)i[s]?.get?(o[s]=J(i[s].get.bind(n)))[U]=i[s].set?.bind(n):B(o,s,e[s]);return n},De=(e,r=globalThis)=>{let t=Array(e.length).fill(null),o=!1,n=a=>function(){return o=!0,a.apply(this,arguments)},i=g(e.length),s=new Proxy(Object.assign(t,{[O]:i,[x]:t,push:n(t.push),pop:n(t.pop),shift:n(t.shift),unshift:n(t.unshift),splice:n(t.splice)}),{get(a,c){return c==="length"?o?(o=!1,t.length):i.value:typeof c=="symbol"||isNaN(c)?t[c]?.valueOf()??r[c]:(t[c]??(t[c]=g(E(e[c])))).valueOf()},set(a,c,l){if(c==="length"){for(let d=l;d<t.length;d++)delete s[d];i.value=t.length=l}else c>=t.length?(B(t,c,l),s.length=+c+1):t[c]?ie(t,c,l):B(t,c,l);return 1},deleteProperty:(a,c)=>(t[c]?.[Symbol.dispose]?.(),delete t[c],1)});return s},B=(e,r,t)=>e[r]=r[0]=="_"||t?.peek?t:g(E(t)),ie=(e,r,t,o,n)=>r[0]==="_"?e[r]=t:t!==(n=(o=e[r]).peek())&&(o[U]?o[U](t):Array.isArray(t)&&Array.isArray(n)?O in n?L(()=>K(()=>{for(let i=0;i<t.length;i++)n[i]=t[i];n.length=t.length})):o.value=t:o.value=E(t)),R=E;var Y={};je(Y,{batch:()=>Ce,computed:()=>$e,effect:()=>ce,signal:()=>ae,untracked:()=>Ee});var T,se=0,q,ae=(e,r,t=new Set,o=()=>r.value)=>r={get value(){return T?.deps.add(t.add(T)),e},set value(n){if(n!==e){e=n;for(let i of t)q?q.add(i):i()}},peek(){return e},toJSON:o,toString:o,valueOf:o},ce=(e,r,t,o)=>(t=n=>{let i=r;if(r=null,i?.call?.(),n=T,T=t,se++>10)throw"Cycle detected";try{r=e()}finally{T=n,se--}},t.fn=e,o=t.deps=new Set,t(),n=>{r?.call?.();for(n of o)n.delete(t);o.clear()}),$e=(e,r=ae(),t,o,n=()=>t.value)=>t={get value(){return o||(o=ce(()=>r.value=e())),r.value},peek:r.peek,toJSON:n,toString:n,valueOf:n},Ce=(e,r=!q,t)=>{q??(q=new Set);try{e()}finally{if(r){[q,t]=[null,q];for(let o of t)o()}}},Ee=(e,r,t)=>(r=T,T=null,t=e(),T=r,t);var le=(e,r)=>{var i;let t,o,n;return e._holder?p(o=e,r):(e[i=f]??(e[i]=null),o=e.content?j(e):e,e.replaceWith(t=document.createTextNode("")),o._holder=t._holder=t,t._clauses=[o._clause=[o,!1]],t.update=C(()=>{let s=t._clauses.find(([,a])=>a);s!=n&&(n?.[0].remove(),n?.[0][W]?.(),(n=s)&&(t.before(n[0].content||n[0]),n[0][f]?n[0][V]?.():(delete n[0][f],p(n[0],r))))})),s=>{o._clause[1]=s,o._holder.update()}};var ue=e=>{let r,t=e;for(r=e.content?j(e):e;t&&!(r._holder=t._holder);)t=t.previousSibling;return e.remove(),e[f]=null,r._holder._clauses.push(r._clause=[r,!0]),r._holder.update};var fe=e=>(e.content&&e.replaceWith(e=j(e).childNodes[0]),r=>(r=typeof r=="function"?r(e.textContent):r,e.textContent=r??""));var pe=(e,r,t,o)=>{let n=new Set,i;return o.includes(".")&&(e=h({target:e},o.split(".").slice(1)).target??e),s=>{i=new Set,s&&H(typeof s=="function"?s(e.className):s).split(" ").map(a=>a&&i.add(a));for(let a of n)i.has(a)?i.delete(a):e.classList.remove(a);for(let a of n=i)e.classList.add(a)}};var de=(e,r,t,o)=>{let n;return o.includes(".")&&(e=h({target:e},o.split(".").slice(1)).target??e),i=>{if(n||(n=e.getAttribute("style")),i=typeof i=="function"?i(e.style):i,typeof i=="string")b(e,"style",n+"; "+i);else{n&&b(e,"style",n);for(let s in i)s[0]=="-"?e.style.setProperty(s,i[s]):s[0]>"A"&&(e.style[s]=i[s])}}};var me=()=>e=>typeof e=="function"&&e();var v=(e,r=m(`${e}=__`))=>(t,o)=>{t.__=o,r(t),delete t.__},ye=(e,r,t)=>{try{let o=v(t),n=e.type==="checkbox"?()=>o(r,e.checked):e.type==="select-multiple"?()=>o(r,[...e.selectedOptions].map(i=>i.value)):()=>o(r,e.selectedIndex<0?null:isNaN(e.valueAsNumber)?e.value:e.valueAsNumber);e.oninput=e.onchange=n,e.type?.startsWith("select")&&(new MutationObserver(n).observe(e,{childList:!0,subtree:!0,attributes:!0}),p(e,r)),m(t)(r)??n()}catch{}return e.type==="text"||e.type===""||e.tagName==="TEXTAREA"?(o,n,i)=>(n=e.selectionStart,i=e.selectionEnd,e.setAttribute("value",e.value=o??""),n&&e.setSelectionRange(n,i)):e.type==="checkbox"?o=>(e.checked=o,b(e,"checked",o)):e.type==="radio"?o=>e.value===o&&(e.checked=o,b(e,"checked",o)):e.type==="select-one"?o=>{for(let n of e.options)n.value==o?n.setAttribute("selected",""):n.removeAttribute("selected");e.value=o}:e.type==="select-multiple"?o=>{for(let n of e.options)n.removeAttribute("selected");for(let n of o)e.querySelector(`[value="${n}"]`).setAttribute("selected","")}:o=>e.value=o};var ge=(e,r,t)=>{let o=m(t)(r);if(typeof o=="function")return{[Symbol.dispose]:o(e)};v(t)(r,e)};var he=(e,r)=>{let t=e[f]=E({},r),o=!1;return n=>{if(n=typeof n=="function"?n(t):n,n!==t)for(let i in n){let s=typeof n[i]=="function"?n[i].bind(t):n[i];i in t[x]?t[i]=s:t[x][i]=i[0]=="_"||s?.peek?s:g(E(s))}return!o&&(o=!0,delete e[f],L(()=>p(e,t)))}};var be=(e,r,t)=>{let[o,n]=t.split(/\bin|of\b/),[i,s="$"]=o.trim().replace(/\(|\)/g,"").split(/\s*,\s*/),a=document.createTextNode(""),c,l,d,w=0,_=C(()=>{var N,y;let u=0,k=d,S=k.length;if(c&&!c[O]){for(let A of c[x]||[])A[Symbol.dispose]();c=null,w=0}if(S<w)c.length=S;else{if(!c)c=k;else for(;u<w;)c[u]=k[u++];for(;u<S;u++){c[u]=k[u];let A=u,Oe=Object.create(r,{[i]:{get:()=>c[A]},[s]:{value:l?l[A]:A}}),P=e.content?j(e):e.cloneNode(!0);a.before(P.content||P),p(P,Oe);let we=((y=c[N=x]||(c[N]=[]))[u]||(y[u]={}))[Symbol.dispose];c[x][u][Symbol.dispose]=()=>{we?.(),P[Symbol.dispose]?.(),P.remove()}}}w=S});return e.replaceWith(a),e[f]=null,Object.assign(u=>(l=null,typeof u=="number"?d=Array.from({length:u},(k,S)=>S+1):u?.constructor===Object?(l=Object.keys(u),d=Object.values(u)):d=u||[],M(()=>{d[O]?.value,_()})),{eval:m(n)})};var xe=(e,r,t,o)=>n=>b(e,o,typeof n=="function"?n(e.getAttribute(o)):n);var _e=e=>r=>{for(let t in r)b(e,oe(t),r[t])};var Se=(e,r,t,o)=>{let[n,...i]=o.slice(2).split("."),s=m(t).bind(e),a=h(Object.assign(c=>s(r,l=>typeof l=="function"?l(c):l),{target:e}),i);return a.target.addEventListener(n,a,a),{[Symbol.dispose](){a.target.removeEventListener(n,a)}}};var Ae=(e,r,t,o)=>{let n,i,s=o.split("..").map((a,c,{length:l})=>a.split(":").reduce((d,w)=>{let[_,...u]=w.slice(2).split("."),k=m(t).bind(e),S=(y,A)=>n=typeof y=="function"?y(A):y,N=h(Object.assign(y=>(c?S(n,y):k(r,A=>S(A,y)),i(),i=s[(c+1)%l]()),{target:e}),u);return y=>(y=d?.(),N.target.addEventListener(_,N,N),()=>(y?.(),N.target.removeEventListener(_,N)))},null));return i=s[0](),{[Symbol.dispose](){i?.()}}};Object.assign(I,{_:(e,r,t,o)=>(o.startsWith("on")?Se:xe)(e,r,t,o),"":_e,class:pe,text:fe,style:de,fx:me,value:ye,ref:ge,scope:he,if:le,else:ue,each:be});var Le=(e,r,t,o)=>{let[n,...i]=r.split("."),s=I[n]||I._;return()=>{let a=s(e,o,t,r);if(!a?.call)return a?.[D];let c=h(Object.assign(C(()=>l.value++),{target:e}),i),l=g(0),d=0,w=a.eval??m(t).bind(e),_,u=()=>(typeof _=="function"&&_(),_=null);return o=e[f]??o,M(()=>(l.value==d?c():(d=l.value,_=w(o,a)),u))}};Object.assign($,{debounce:(e,r)=>ne(e,(r||(r=0),r?r==="raf"?requestAnimationFrame:t=>setTimeout(t,r):void 0)),throttle:(e,r)=>C(e,(r||(r=0),r?r==="raf"?requestAnimationFrame:t=>setTimeout(t,r):void 0)),delay:(e,r)=>r?t=>setTimeout(()=>e(t),r):t=>queueMicrotask(()=>e(t)),tick:e=>(console.warn("Deprecated"),r=>queueMicrotask(()=>e(r))),raf:e=>(console.warn("Deprecated"),r=>requestAnimationFrame(()=>e(r))),once:(e,r,t)=>(t=o=>!r&&(r=1,e(o)),t.once=!0,t),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),away:e=>Object.assign(r=>!e.target.contains(r.target)&&r.target.isConnected&&e(r),{target:e.target.ownerDocument}),prevent:e=>r=>(r?.preventDefault(),e(r)),stop:(e,r)=>t=>(r?.[0]==="i"?t?.stopImmediatePropagation():t?.stopPropagation(),e(t)),immediate:e=>(console.warn("Deprecated"),r=>(r?.stopImmediatePropagation(),e(r))),passive:e=>(e.passive=!0,e),capture:e=>(e.capture=!0,e)});$.outside=$.away;var X={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",cmd:e=>e.metaKey||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 X)$[e]=(r,t,o)=>n=>X[e](n)&&(!t||X[t]?.(n))&&(!o||X[o]?.(n))&&r(n);G({compile:e=>p.constructor(`with(arguments[0]){${e}}`),dir:(e,r,t,o)=>r.includes("..")?()=>Ae(e,o,t,r)[D]:r.split(":").reduce((n,i)=>{let s=Le(e,i,t,o);return n?(a,c)=>(a=n(),c=s(),()=>{a(),c()}):s},null),...Y});p.use=G;p.store=R;p.directive=I;p.modifier=$;var Vt=p.start=(e=document.body,r)=>{let t=R(r);return p(e,t),new MutationObserver(n=>{for(let i of n)for(let s of i.addedNodes)s.nodeType===1&&s[f]===void 0&&e.contains(s)&&e[F](s)}).observe(e,{childList:!0,subtree:!0}),t};p.version="12.3.7";var Ft=p;export{K as batch,J as computed,Ft as default,M as effect,g as signal,p as sprae,Vt as start,R as store,L as untracked,G as use};
package/dist/sprae.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../core.js", "../store.js", "../signal.js", "../directive/if.js", "../directive/else.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/fx.js", "../directive/value.js", "../directive/ref.js", "../directive/scope.js", "../directive/each.js", "../directive/_.js", "../directive/spread.js", "../directive/event.js", "../directive/sequence.js", "../sprae.js"],
4
- "sourcesContent": ["import store, { _change, _signals } from \"./store.js\";\n\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\")),\n _state = Symbol(\"state\"),\n _on = Symbol('on'),\n _off = Symbol('off'),\n _add = Symbol('init');\n\nexport let prefix = ':', signal, effect, computed, batch = (fn) => fn(), untracked = batch;\n\nexport let directive = {}, modifier = {}\n\nlet currentDir = null;\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object|store} [state] - Initial state values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nconst sprae = (el = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], state)\n\n // console.group('sprae', el)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => (!offs && (offs = fx.map(fn => fn())))\n el[_off] = () => (offs?.map(off => off()), offs = null)\n\n // destroy\n el[_dispose] ||= () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null)\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n // we iterate live collection (subsprae can init args)\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n currentDir = name;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae like :each, :if, :scope etc.\n if (_state in el) return\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // for (let i = 0, child; i < (el.childNodes.length); i++) child = el.childNodes[i], child.nodeType == 1 && add(child)\n for (let child of [...el.childNodes]) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n if (el[_state] === undefined) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n// directive initializer\nexport let dir\n\n/**\n * Compiles an expression into an evaluator function.\n * @type {(dir:string, expr: string, clean?: string => string) => Function}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr The expression to parse and compile into a function.\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n let _expr = expr || 'undefined'\n\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(_expr));\n // first-level semicolons - no return\n else if (/^(?:[^{};]|\\{[^}]*\\})*;/.test(_expr));\n else _expr = `return ${_expr}`\n\n // async expression\n if (/\\bawait\\s/.test(_expr)) _expr = `return (async()=>{ ${_expr} })()`\n\n // static time errors\n try {\n fn = compile(_expr)\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then ? (result.then(v => _out = cb(v)), () => typeof _out === 'function' && _out()) : cb(result)\n else return result\n } catch (e) {\n console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`)\n }\n }\n}\nconst cache = {};\n\n\n\n/**\n * Configure sprae\n */\nexport const use = (s) => (\n s.compile && (compile = s.compile),\n s.prefix && (prefix = s.prefix),\n s.signal && (signal = s.signal),\n s.effect && (effect = s.effect),\n s.computed && (computed = s.computed),\n s.batch && (batch = s.batch),\n s.untracked && (untracked = s.untracked),\n s.dir && (dir = s.dir)\n)\n\n// modifier applier\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n // get parentNode() { return childNodes[0].parentNode },\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n // setAttributeNode() { }\n }\n}\n\n// camel to kebab\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n// set attr\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) : el.setAttribute(name, v === true ? \"\" : v);\n\n// convert any-arg to className string\nexport const clsx = (c, _out = []) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => !v ? s : [...s, k], [])\n).join(' ')\n\n// throttle function to (once per tick or other custom scheduler)\nexport const throttle = (fn, schedule = queueMicrotask) => {\n let _planned = 0, arg;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule((_dirty = _planned > 1) => (\n _planned = 0, _dirty && throttled(arg)\n ));\n }\n return throttled;\n}\n\nexport const debounce = (fn, schedule = queueMicrotask, _count = 0) => (arg, _planned = ++_count) => schedule(() => (_planned == _count && fn(arg)))\n\nexport * from './store.js';\n\nexport default sprae\n", "// signals-based proxy\nimport { signal, computed, batch, untracked } from './core.js'\n\n\n// _signals allows both storing signals and checking instance, which would be difficult with WeakMap\nexport const _signals = Symbol('signals'),\n // _change is a signal that tracks changes to the object keys or array length\n _change = Symbol('change'),\n // _set is stashed setter for computed values\n _set = Symbol('set')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n// object store is not lazy\n// parent defines parent scope or sandbox\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals\n }), {\n get: (_, k) => {\n if (k in signals) return (signals[k] ? signals[k].valueOf() : signals[k])\n return parent ? parent[k] : (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v, _s) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n// array store - signals are lazy since arrays can be very large & expensive\nconst list = (values, parent = globalThis) => {\n\n // gotta fill with null since proto methods like .reduce may fail\n let signals = Array(values.length).fill(null),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // create signal (lazy)\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n return (signals[k] ??= signal(store(values[k]))).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v) : create(signals, k, v)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n\n return state\n}\n\n// create signal value, skip untracked\nconst create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n\n// set/update signal value\nconst set = (signals, k, v, _s, _v) => {\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n return k[0] === '_' ? (signals[k] = v) :\n (v !== (_v = (_s = signals[k]).peek())) && (\n // stashed _set for value with getter/setter\n _s[_set] ? _s[_set](v) :\n // patch array\n Array.isArray(v) && Array.isArray(_v) ?\n // if we update plain array (stored in signal) - take over value instead\n // since input value can be store, we have to make sure we don't subscribe to its length or values\n // FIXME: generalize to objects\n _change in _v ?\n untracked(() => batch(() => {\n for (let i = 0; i < v.length; i++) _v[i] = v[i]\n _v.length = v.length // forces deleting tail signals\n })) :\n (_s.value = v) :\n // .x = y\n (_s.value = store(v))\n )\n}\n\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\n// NOTE: we don't need since we force proxy sandbox\n// export const ensure = (state, expr, _name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => _name && (state[_signals][_name[0]] ??= null)\n\nexport default store\n", "// preact-signals minimal implementation\nlet current, depth = 0, batched;\n\n// default signals impl\n\nexport const signal = (v, _s, _obs = new Set, _v = () => _s.value) => (\n _s = {\n get value() {\n current?.deps.add(_obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of _obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\nexport const effect = (fn, _teardown, _fx, _deps) => (\n _fx = (prev) => {\n let tmp = _teardown;\n _teardown = null; // we null _teardown to avoid repeated call in case of recursive update\n tmp?.call?.();\n prev = current, current = _fx\n if (depth++ > 10) throw 'Cycle detected';\n try { _teardown = fn() } finally { current = prev; depth-- }\n },\n _fx.fn = fn,\n _deps = _fx.deps = new Set(),\n\n _fx(),\n (dep) => { _teardown?.call?.(); for (dep of _deps) dep.delete(_fx); _deps.clear() }\n)\n\nexport const computed = (fn, _s = signal(), _c, _e, _v = () => _c.value) => (\n _c = {\n get value() {\n _e ||= effect(() => _s.value = fn());\n return _s.value\n },\n peek: _s.peek,\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\nexport const batch = (fn, _first = !batched, _list) => {\n batched ??= new Set;\n try { fn(); }\n finally { if (_first) { [batched, _list] = [null, batched]; for (const fx of _list) fx(); } }\n}\n\nexport const untracked = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v)\n", "// \"centralized\" version of :if\nimport sprae, { throttle, _on, _off, _state, frag } from '../core.js';\n\n// :if=\"a\"\nexport default (el, state) => {\n let _holder, _el, _match\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n\n el.replaceWith(_holder = document.createTextNode(''))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _match) {\n _match?.[0].remove()\n _match?.[0][_off]?.()\n if (_match = match) {\n _holder.before(_match[0].content || _match[0])\n // there's no :else after :if, so lazy-sprae here doesn't risk adding own destructor to own list of destructors\n !_match[0][_state] ? (delete _match[0][_state], sprae(_match[0], state)) : _match[0][_on]?.()\n }\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n return value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n\n// NOTE: we can reach :else counterpart whereas prev :else :if is on hold\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => (v = typeof v === 'function' ? v(el.textContent) : v, el.textContent = v == null ? \"\" : v)\n)\n", "import { clsx, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _cur = new Set, _new\n\n // redefine target, if modifiers have one\n name.includes('.') && (el = decorate({target:el}, name.split('.').slice(1)).target ?? el)\n\n return (v) => {\n _new = new Set\n if (v) clsx(typeof v === 'function' ? v(el.className) : v).split(' ').map(c => c && _new.add(c))\n for (let c of _cur) if (_new.has(c)) _new.delete(c); else el.classList.remove(c);\n for (let c of _cur = _new) el.classList.add(c)\n }\n}\n", "import { attr, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _static;\n\n // redefine target, if modifiers have one\n if (name.includes('.')) el = decorate({target:el}, name.split('.').slice(1)).target ?? el;\n\n return v => {\n if (!_static) { _static = el.getAttribute(\"style\") }\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static + '; ' + v);\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] > 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "export default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, parse, _state } from \"../core.js\";\n\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n // save value to stash\n target.__ = value; _set(target), delete target.__\n}\n\nexport default (el, state, expr) => {\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber);\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n\n // initial state value - setter has already cached it, so parse is fast\n parse(expr)(state) ?? handleChange()\n } catch { }\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n // we retain selection in input\n (_from = el.selectionStart),\n (_to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.value === value && ((el.checked = value), attr(el, 'checked', value))\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n}\n", "import { parse } from \"../core.js\"\n// import { setter } from \"./value.js\"\n\nexport default (el, state, expr) => {\n let fn = parse(expr)(state)\n\n if (typeof fn == 'function') return {[Symbol.dispose]:fn(el)}\n\n // NOTE: we have to set element statically (outside of effect) to avoid parasitic sub - multiple els with same :ref can cause recursion (eg. :each :ref=\"x\")\n // FIXME: do via (setter(expr)(state, el))\n else Object.defineProperty(state, expr, { value: el, configurable: true })\n}\n", "import sprae, { store, untracked, _state, _signals, signal } from '../core.js'\n\nexport default (el, rootState) => {\n // 0 run pre-creates state to provide scope for the first effect - it can write vars in it, so we should already have it\n // el[_state] even replaces own :scope effect state\n let state = el[_state] = store({}, rootState), init = false;\n\n // 1st run spraes subtree with values from scope, it can be postponed by modifiers (we isolate reads from parent effect)\n // 2nd+ runs update subscope\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n // we bind to subscope to alleviate friction using scope method directly\n // also returned props should force-create signals in subscope, not overwriting parent\n if (values !== state) {\n for (let k in values) {\n // _add forces new prop, instead of checking parent\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n // update\n if (k in state[_signals]) state[k] = v\n // create\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n // Object.assign(subscope, call(values, subscope))\n return !init && (init = true, delete el[_state], untracked(() => sprae(el, state)))\n }\n}\n", "import sprae, { store, parse, _state, effect, _change, _signals, frag, throttle, debounce } from \"../core.js\";\n\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/);\n\n // we need :if to be able to replace holder instead of tpl for :if :each case\n let holder = document.createTextNode(\"\");\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n // FIXME: pass items to update instead of global\n let update = throttle(() => {\n let i = 0, newItems = items, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]()\n cur = null, prevl = 0\n }\n\n\n // delete\n if (newl < prevl) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n\n let idx = i,\n // inherited state must be cheaper in terms of memory and faster in terms of performance, compared to creating a proxy store\n // subscope = store({\n // // NOTE: since we simulate signal, we have to make sure it's actual signal, not fake one\n // // FIXME: try to avoid this, we also have issue with wrongly calling dispose in store on delete\n // [itemVar]: cur[_signals]?.[idx]?.peek ? cur[_signals]?.[idx] : cur[idx],\n // [idxVar]: keys ? keys[idx] : idx\n // }, state)\n subscope = Object.create(state, {\n [itemVar]: { get: () => cur[idx] },\n [idxVar]: { value: keys ? keys[idx] : idx }\n })\n\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, subscope);\n\n // signal/holder disposal removes element\n let _prev = ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose]\n cur[_signals][i][Symbol.dispose] = () => {\n _prev?.(), el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n\n tpl.replaceWith(holder);\n tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n return Object.assign(value => {\n // resolve new items\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact signals unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n update()\n })\n }, {eval:parse(rhs)})\n}\n", "import { attr } from \"../core.js\";\n\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase } from \"../core.js\";\n\nexport default (target) => value => { for (let key in value) attr(target, dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n }\n }\n}\n", "// events directive with enabled aliases and sequences like :onclick.ctrl.once..keyup.enter\nimport { _dispose, parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, names) => {\n let cur, // current step callback\n off // current step disposal\n\n let steps = names.split('..').map((step, i, { length }) => step.split(':').reduce(\n (prev, str) => {\n const [name, ...mods] = str.slice(2).split('.')\n\n const evaluate = parse(expr).bind(el)\n\n const next = (fn, e) => cur = typeof fn === 'function' ? fn(e) : fn\n const trigger = decorate(Object.assign(\n e => (!i ? evaluate(state, (fn) => next(fn, e)) : next(cur, e), off(), off = steps[(i + 1) % length]()),\n { target: el }\n ), mods)\n\n\n return (_poff) => (\n _poff = prev?.(),\n trigger.target.addEventListener(name, trigger, trigger),\n () => (_poff?.(), trigger.target.removeEventListener(name, trigger))\n )\n }, null)\n )\n\n off = steps[0]()\n\n return {\n [Symbol.dispose]() {\n off?.()\n }\n }\n}\n", "import store from \"./store.js\";\nimport { batch, computed, effect, signal, untracked } from './core.js';\nimport * as signals from './signal.js';\nimport sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add } from './core.js';\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\nimport _seq from \"./directive/sequence.js\";\n\n\nObject.assign(directive, {\n _: (el, state, expr, name) => (name.startsWith('on') ? _event : _default)(el, state, expr, name),\n '': _spread,\n class: _class,\n text: _text,\n style: _style,\n fx: _fx,\n value: _value,\n ref: _ref,\n scope: _scope,\n if: _if,\n else: _else,\n each: _each\n})\n\n\n/**\n * Directive initializer (with modifiers support)\n * @type {(el: HTMLElement, name:string, value:string, state:Object) => Function}\n * */\nconst dir = (target, name, expr, state) => {\n let [dirName, ...mods] = name.split('.'), create = directive[dirName] || directive._\n\n return () => {\n let update = create(target, state, expr, name)\n\n if (!update?.call) return update?.[_dispose]\n\n // throttle prevents multiple updates within one tick as well as isolates stack for each update\n let trigger = decorate(Object.assign(throttle(() => change.value++), { target }), mods),\n change = signal(0), // signal authorized to trigger effect: 0 = init; >0 = trigger\n count = 0, // called effect count\n evaluate = update.eval ?? parse(expr).bind(target),\n _out, out = () => (typeof _out === 'function' && _out(), _out=null) // effect trigger and invoke may happen in the same tick, so it will be effect-within-effect call - we need to store output of evaluate to return from trigger effect\n\n state = target[_state] ?? state\n\n return effect(() => (\n // if planned count is same as actual count - plan new update, else update right away\n change.value == count ? (trigger()) : (count = change.value, _out = evaluate(state, update)),\n out\n ))\n }\n}\n\nObject.assign(modifier, {\n // timing (lodash-like)\n // FIXME: add immediate param\n debounce: (fn, _how) => debounce(fn, (_how ||= 0, !_how ? undefined : _how === 'raf' ? requestAnimationFrame : (fn) => setTimeout(fn, _how))),\n throttle: (fn, _how) => throttle(fn, (_how ||= 0, !_how ? undefined : _how === 'raf' ? requestAnimationFrame : (fn) => setTimeout(fn, _how))),\n delay: (fn, ms) => !ms ? (e) => (queueMicrotask(() => fn(e))) : (e) => setTimeout(() => fn(e), ms),\n\n tick: (fn) => (console.warn('Deprecated'), (e) => (queueMicrotask(() => fn(e)))),\n raf: (fn) => (console.warn('Deprecated'), (e) => requestAnimationFrame(() => fn(e))),\n\n once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),\n\n // target\n window: fn => (fn.target = fn.target.ownerDocument.defaultView, fn),\n document: fn => (fn.target = fn.target.ownerDocument, fn),\n root: fn => (fn.target = fn.target.ownerDocument.documentElement, fn),\n body: fn => (fn.target = fn.target.ownerDocument.body, fn),\n parent: fn => (fn.target = fn.target.parentNode, fn),\n self: (fn) => (e) => (e.target === fn.target && fn(e)),\n away: (fn) => Object.assign((e) => (!fn.target.contains(e.target) && e.target.isConnected && fn(e)), {target: fn.target.ownerDocument}),\n\n // events\n prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),\n stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),\n immediate: (fn) => (console.warn('Deprecated'), (e) => (e?.stopImmediatePropagation(), fn(e))),\n passive: fn => (fn.passive = true, fn),\n capture: fn => (fn.capture = true, fn),\n})\nmodifier.outside = modifier.away\n\n// key testers\nconst keys = {\n ctrl: e => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: e => e.shiftKey || e.key === \"Shift\",\n alt: e => e.altKey || e.key === \"Alt\",\n meta: e => e.metaKey || e.key === \"Meta\",\n cmd: e => e.metaKey || e.key === \"Command\",\n arrow: e => e.key.startsWith(\"Arrow\"),\n enter: e => e.key === \"Enter\",\n esc: e => e.key.startsWith(\"Esc\"),\n tab: e => e.key === \"Tab\",\n space: e => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: e => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: e => /^\\d$/.test(e.key),\n letter: e => /^\\p{L}$/gu.test(e.key),\n char: e => /^\\S$/.test(e.key),\n};\n\n// augment modifiers with key testers\nfor (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keys[a]?.(e)) && (!b || keys[b]?.(e)) && fn(e)\n\n\nuse({\n compile: expr => sprae.constructor(`with(arguments[0]){${expr}}`),\n dir: (el, name, expr, state) => {\n // sequences shortcut\n if (name.includes('..')) return () => _seq(el, state, expr, name)[_dispose]\n return name.split(':').reduce((prev, str) => {\n let start = dir(el, str, expr, state)\n return !prev ? start : (p, s) => (p = prev(), s = start(), () => { p(); s() })\n }, null)\n },\n ...signals\n})\n\n\n// expose for runtime config\nsprae.use = use\nsprae.store = store\nsprae.directive = directive\nsprae.modifier = modifier\n\n\n/**\n * Lifecycle hanger: spraes automatically any new nodes\n */\nconst start = sprae.start = (root = document.body, values) => {\n const state = store(values)\n sprae(root, state);\n const mo = new MutationObserver(mutations => {\n for (const m of mutations) {\n for (const el of m.addedNodes) {\n // el can be spraed or removed by subsprae (like within :each/:if)\n if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {\n // even if element has no spraeable attrs, some of its children can have\n root[_add](el)\n // sprae(el, state, root);\n }\n }\n // for (const el of m.removedNodes) el[Symbol.dispose]?.()\n }\n });\n mo.observe(root, { childList: true, subtree: true });\n return state\n}\n\n\n// version placeholder for bundler\nsprae.version = \"12.3.5\"\n\nexport default sprae\nexport { sprae, store, signal, effect, computed, batch, untracked, start, use }\n"],
5
- "mappings": "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",
6
- "names": ["_dispose", "_state", "_on", "_off", "_add", "prefix", "signal", "effect", "computed", "batch", "fn", "untracked", "directive", "modifier", "currentDir", "sprae", "el", "state", "store_default", "fx", "offs", "off", "add", "_attrs", "start", "i", "name", "value", "dir", "child", "compile", "parse", "expr", "cache", "_expr", "e", "cb", "_out", "result", "v", "use", "s", "decorate", "mods", "params", "mod", "wrapFn", "k", "frag", "tpl", "content", "attributes", "ref", "childNodes", "a", "dashcase", "str", "match", "attr", "clsx", "c", "throttle", "schedule", "_planned", "arg", "throttled", "_dirty", "debounce", "_count", "core_default", "_signals", "_change", "_set", "sandbox", "store", "values", "parent", "list", "keyCount", "signals", "state", "signal", "_", "k", "v", "_s", "set", "create", "descs", "computed", "isMut", "mut", "fn", "length", "i", "_v", "untracked", "batch", "store_default", "signal_exports", "__export", "batch", "computed", "effect", "signal", "untracked", "current", "depth", "batched", "v", "_s", "_obs", "_v", "val", "sub", "fn", "_teardown", "_fx", "_deps", "prev", "tmp", "dep", "_c", "_e", "_first", "_list", "fx", "_prev", "if_default", "el", "state", "_a", "_holder", "_el", "_match", "core_default", "_state", "frag", "throttle", "match", "s", "_off", "_on", "value", "else_default", "el", "_el", "_prev", "frag", "_state", "text_default", "el", "frag", "v", "class_default", "el", "st", "ex", "name", "_cur", "_new", "decorate", "v", "clsx", "c", "style_default", "el", "st", "ex", "name", "_static", "decorate", "v", "attr", "k", "fx_default", "fn", "setter", "expr", "_set", "parse", "target", "value", "value_default", "el", "state", "set", "handleChange", "o", "core_default", "_from", "_to", "attr", "v", "ref_default", "el", "state", "expr", "fn", "parse", "scope_default", "el", "rootState", "state", "_state", "store", "init", "values", "k", "v", "_signals", "signal", "untracked", "core_default", "each_default", "tpl", "state", "expr", "lhs", "rhs", "itemVar", "idxVar", "holder", "cur", "keys", "items", "prevl", "update", "throttle", "_a", "_b", "i", "newItems", "newl", "_change", "s", "_signals", "idx", "subscope", "el", "frag", "core_default", "_prev", "_state", "value", "_", "effect", "parse", "__default", "el", "st", "ex", "name", "v", "attr", "spread_default", "target", "value", "key", "attr", "dashcase", "event_default", "el", "state", "expr", "name", "type", "mods", "evaluate", "parse", "trigger", "decorate", "e", "fn", "sequence_default", "el", "state", "expr", "names", "cur", "off", "steps", "step", "i", "length", "prev", "str", "name", "mods", "evaluate", "parse", "next", "fn", "e", "trigger", "decorate", "_poff", "directive", "el", "state", "expr", "name", "event_default", "__default", "spread_default", "class_default", "text_default", "style_default", "fx_default", "value_default", "ref_default", "scope_default", "if_default", "else_default", "each_default", "dir", "target", "dirName", "mods", "create", "update", "_dispose", "trigger", "decorate", "throttle", "change", "signal", "count", "evaluate", "parse", "_out", "out", "_state", "effect", "modifier", "fn", "_how", "debounce", "ms", "e", "_done", "_fn", "keys", "k", "a", "b", "use", "core_default", "sequence_default", "prev", "str", "start", "p", "s", "signal_exports", "store_default", "root", "values", "mutations", "m", "_add", "sprae_default"]
4
+ "sourcesContent": ["import store, { _change, _signals } from \"./store.js\";\n\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\")),\n _state = Symbol(\"state\"),\n _on = Symbol('on'),\n _off = Symbol('off'),\n _add = Symbol('init');\n\nexport let prefix = ':', signal, effect, computed, batch = (fn) => fn(), untracked = batch;\n\nexport let directive = {}, modifier = {}\n\nlet currentDir = null;\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object|store} [state] - Initial state values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nconst sprae = (el = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], state)\n\n // console.group('sprae', el)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => (!offs && (offs = fx.map(fn => fn())))\n el[_off] = () => (offs?.map(off => off()), offs = null)\n\n // destroy\n el[_dispose] ||= () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null)\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n // we iterate live collection (subsprae can init args)\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n currentDir = name;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae like :each, :if, :scope etc.\n if (_state in el) return\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // for (let i = 0, child; i < (el.childNodes.length); i++) child = el.childNodes[i], child.nodeType == 1 && add(child)\n for (let child of [...el.childNodes]) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n if (el[_state] === undefined) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n// directive initializer\nexport let dir\n\n/**\n * Compiles an expression into an evaluator function.\n * @type {(dir:string, expr: string, clean?: string => string) => Function}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr The expression to parse and compile into a function.\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n let _expr = expr || 'undefined'\n\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(_expr));\n // first-level semicolons - no return\n else if (hasSemi(_expr));\n else _expr = `return ${_expr}`\n\n // async expression\n if (/\\bawait\\s/.test(_expr)) _expr = `return (async()=>{ ${_expr} })()`\n\n // static time errors\n try {\n fn = compile(_expr)\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then ? (result.then(v => _out = cb(v)), () => typeof _out === 'function' && _out()) : cb(result)\n else return result\n } catch (e) {\n console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`)\n }\n }\n}\nconst cache = {};\n\nconst hasSemi = s => {\n for (let d=0,i=0;i<s.length;i++) {\n if (s[i]=='{') d++\n else if (s[i]=='}') d--\n else if (s[i]==';' && !d) return true\n }\n return false\n}\n\n\n/**\n * Configure sprae\n */\nexport const use = (s) => (\n s.compile && (compile = s.compile),\n s.prefix && (prefix = s.prefix),\n s.signal && (signal = s.signal),\n s.effect && (effect = s.effect),\n s.computed && (computed = s.computed),\n s.batch && (batch = s.batch),\n s.untracked && (untracked = s.untracked),\n s.dir && (dir = s.dir)\n)\n\n// modifier applier\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n // get parentNode() { return childNodes[0].parentNode },\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n // setAttributeNode() { }\n }\n}\n\n// camel to kebab\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n// set attr\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) : el.setAttribute(name, v === true ? \"\" : v);\n\n// convert any-arg to className string\nexport const clsx = (c, _out = []) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => !v ? s : [...s, k], [])\n).join(' ')\n\n// throttle function to (once per tick or other custom scheduler)\nexport const throttle = (fn, schedule = queueMicrotask) => {\n let _planned = 0, arg;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule((_dirty = _planned > 1) => (\n _planned = 0, _dirty && throttled(arg)\n ));\n }\n return throttled;\n}\n\nexport const debounce = (fn, schedule = queueMicrotask, _count = 0) => (arg, _planned = ++_count) => schedule(() => (_planned == _count && fn(arg)))\n\nexport * from './store.js';\n\nexport default sprae\n", "// signals-based proxy\nimport { signal, computed, batch, untracked } from './core.js'\n\n\n// _signals allows both storing signals and checking instance, which would be difficult with WeakMap\nexport const _signals = Symbol('signals'),\n // _change is a signal that tracks changes to the object keys or array length\n _change = Symbol('change'),\n // _set is stashed setter for computed values\n _set = Symbol('set')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n// object store is not lazy\n// parent defines parent scope or sandbox\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals\n }), {\n get: (_, k) => {\n if (k in signals) return (signals[k] ? signals[k].valueOf() : signals[k])\n return parent ? parent[k] : (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v, _s) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n// array store - signals are lazy since arrays can be very large & expensive\nconst list = (values, parent = globalThis) => {\n\n // gotta fill with null since proto methods like .reduce may fail\n let signals = Array(values.length).fill(null),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // create signal (lazy)\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n return (signals[k] ??= signal(store(values[k]))).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v) : create(signals, k, v)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n\n return state\n}\n\n// create signal value, skip untracked\nconst create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n\n// set/update signal value\nconst set = (signals, k, v, _s, _v) => {\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n return k[0] === '_' ? (signals[k] = v) :\n (v !== (_v = (_s = signals[k]).peek())) && (\n // stashed _set for value with getter/setter\n _s[_set] ? _s[_set](v) :\n // patch array\n Array.isArray(v) && Array.isArray(_v) ?\n // if we update plain array (stored in signal) - take over value instead\n // since input value can be store, we have to make sure we don't subscribe to its length or values\n // FIXME: generalize to objects\n _change in _v ?\n untracked(() => batch(() => {\n for (let i = 0; i < v.length; i++) _v[i] = v[i]\n _v.length = v.length // forces deleting tail signals\n })) :\n (_s.value = v) :\n // .x = y\n (_s.value = store(v))\n )\n}\n\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\n// NOTE: we don't need since we force proxy sandbox\n// export const ensure = (state, expr, _name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => _name && (state[_signals][_name[0]] ??= null)\n\nexport default store\n", "// preact-signals minimal implementation\nlet current, depth = 0, batched;\n\n// default signals impl\n\nexport const signal = (v, _s, _obs = new Set, _v = () => _s.value) => (\n _s = {\n get value() {\n current?.deps.add(_obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of _obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\nexport const effect = (fn, _teardown, _fx, _deps) => (\n _fx = (prev) => {\n let tmp = _teardown;\n _teardown = null; // we null _teardown to avoid repeated call in case of recursive update\n tmp?.call?.();\n prev = current, current = _fx\n if (depth++ > 10) throw 'Cycle detected';\n try { _teardown = fn() } finally { current = prev; depth-- }\n },\n _fx.fn = fn,\n _deps = _fx.deps = new Set(),\n\n _fx(),\n (dep) => { _teardown?.call?.(); for (dep of _deps) dep.delete(_fx); _deps.clear() }\n)\n\nexport const computed = (fn, _s = signal(), _c, _e, _v = () => _c.value) => (\n _c = {\n get value() {\n _e ||= effect(() => _s.value = fn());\n return _s.value\n },\n peek: _s.peek,\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\nexport const batch = (fn, _first = !batched, _list) => {\n batched ??= new Set;\n try { fn(); }\n finally { if (_first) { [batched, _list] = [null, batched]; for (const fx of _list) fx(); } }\n}\n\nexport const untracked = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v)\n", "// \"centralized\" version of :if\nimport sprae, { throttle, _on, _off, _state, frag } from '../core.js';\n\n// :if=\"a\"\nexport default (el, state) => {\n let _holder, _el, _match\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n\n el.replaceWith(_holder = document.createTextNode(''))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _match) {\n _match?.[0].remove()\n _match?.[0][_off]?.()\n if (_match = match) {\n _holder.before(_match[0].content || _match[0])\n // there's no :else after :if, so lazy-sprae here doesn't risk adding own destructor to own list of destructors\n !_match[0][_state] ? (delete _match[0][_state], sprae(_match[0], state)) : _match[0][_on]?.()\n }\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n return value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n\n// NOTE: we can reach :else counterpart whereas prev :else :if is on hold\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => (v = typeof v === 'function' ? v(el.textContent) : v, el.textContent = v == null ? \"\" : v)\n)\n", "import { clsx, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _cur = new Set, _new\n\n // redefine target, if modifiers have one\n name.includes('.') && (el = decorate({target:el}, name.split('.').slice(1)).target ?? el)\n\n return (v) => {\n _new = new Set\n if (v) clsx(typeof v === 'function' ? v(el.className) : v).split(' ').map(c => c && _new.add(c))\n for (let c of _cur) if (_new.has(c)) _new.delete(c); else el.classList.remove(c);\n for (let c of _cur = _new) el.classList.add(c)\n }\n}\n", "import { attr, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _static;\n\n // redefine target, if modifiers have one\n if (name.includes('.')) el = decorate({target:el}, name.split('.').slice(1)).target ?? el;\n\n return v => {\n if (!_static) { _static = el.getAttribute(\"style\") }\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static + '; ' + v);\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] > 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "export default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, parse, _state } from \"../core.js\";\n\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n // save value to stash\n target.__ = value; _set(target), delete target.__\n}\n\nexport default (el, state, expr) => {\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber);\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n\n // initial state value - setter has already cached it, so parse is fast\n parse(expr)(state) ?? handleChange()\n } catch { }\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n // we retain selection in input\n (_from = el.selectionStart),\n (_to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.value === value && ((el.checked = value), attr(el, 'checked', value))\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n}\n", "import { parse } from \"../core.js\"\nimport { setter } from \"./value.js\"\n\nexport default (el, state, expr) => {\n let fn = parse(expr)(state)\n\n if (typeof fn == 'function') return {[Symbol.dispose]:fn(el)}\n\n // NOTE: we have to set element statically (outside of effect) to avoid parasitic sub - multiple els with same :ref can cause recursion (eg. :each :ref=\"x\")\n // Object.defineProperty(state, expr, { value: el, configurable: true })\n setter(expr)(state, el)\n}\n", "import sprae, { store, untracked, _state, _signals, signal } from '../core.js'\n\nexport default (el, rootState) => {\n // 0 run pre-creates state to provide scope for the first effect - it can write vars in it, so we should already have it\n // el[_state] even replaces own :scope effect state\n let state = el[_state] = store({}, rootState), init = false;\n\n // 1st run spraes subtree with values from scope, it can be postponed by modifiers (we isolate reads from parent effect)\n // 2nd+ runs update subscope\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n // we bind to subscope to alleviate friction using scope method directly\n // also returned props should force-create signals in subscope, not overwriting parent\n if (values !== state) {\n for (let k in values) {\n // _add forces new prop, instead of checking parent\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n // update\n if (k in state[_signals]) state[k] = v\n // create\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n // Object.assign(subscope, call(values, subscope))\n return !init && (init = true, delete el[_state], untracked(() => sprae(el, state)))\n }\n}\n", "import sprae, { store, parse, _state, effect, _change, _signals, frag, throttle, debounce } from \"../core.js\";\n\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/);\n\n // we need :if to be able to replace holder instead of tpl for :if :each case\n let holder = document.createTextNode(\"\");\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n // FIXME: pass items to update instead of global\n let update = throttle(() => {\n let i = 0, newItems = items, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]()\n cur = null, prevl = 0\n }\n\n\n // delete\n if (newl < prevl) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n\n let idx = i,\n // inherited state must be cheaper in terms of memory and faster in terms of performance, compared to creating a proxy store\n // subscope = store({\n // // NOTE: since we simulate signal, we have to make sure it's actual signal, not fake one\n // // FIXME: try to avoid this, we also have issue with wrongly calling dispose in store on delete\n // [itemVar]: cur[_signals]?.[idx]?.peek ? cur[_signals]?.[idx] : cur[idx],\n // [idxVar]: keys ? keys[idx] : idx\n // }, state)\n subscope = Object.create(state, {\n [itemVar]: { get: () => cur[idx] },\n [idxVar]: { value: keys ? keys[idx] : idx }\n })\n\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, subscope);\n\n // signal/holder disposal removes element\n let _prev = ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose]\n cur[_signals][i][Symbol.dispose] = () => {\n _prev?.(), el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n\n tpl.replaceWith(holder);\n tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n return Object.assign(value => {\n // resolve new items\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact signals unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n update()\n })\n }, {eval:parse(rhs)})\n}\n", "import { attr } from \"../core.js\";\n\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase } from \"../core.js\";\n\nexport default (target) => value => { for (let key in value) attr(target, dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n }\n }\n}\n", "// events directive with enabled aliases and sequences like :onclick.ctrl.once..keyup.enter\nimport { _dispose, parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, names) => {\n let cur, // current step callback\n off // current step disposal\n\n let steps = names.split('..').map((step, i, { length }) => step.split(':').reduce(\n (prev, str) => {\n const [name, ...mods] = str.slice(2).split('.')\n\n const evaluate = parse(expr).bind(el)\n\n const next = (fn, e) => cur = typeof fn === 'function' ? fn(e) : fn\n const trigger = decorate(Object.assign(\n e => (!i ? evaluate(state, (fn) => next(fn, e)) : next(cur, e), off(), off = steps[(i + 1) % length]()),\n { target: el }\n ), mods)\n\n\n return (_poff) => (\n _poff = prev?.(),\n trigger.target.addEventListener(name, trigger, trigger),\n () => (_poff?.(), trigger.target.removeEventListener(name, trigger))\n )\n }, null)\n )\n\n off = steps[0]()\n\n return {\n [Symbol.dispose]() {\n off?.()\n }\n }\n}\n", "import store from \"./store.js\";\nimport { batch, computed, effect, signal, untracked } from './core.js';\nimport * as signals from './signal.js';\nimport sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add } from './core.js';\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\nimport _seq from \"./directive/sequence.js\";\n\n\nObject.assign(directive, {\n _: (el, state, expr, name) => (name.startsWith('on') ? _event : _default)(el, state, expr, name),\n '': _spread,\n class: _class,\n text: _text,\n style: _style,\n fx: _fx,\n value: _value,\n ref: _ref,\n scope: _scope,\n if: _if,\n else: _else,\n each: _each\n})\n\n\n/**\n * Directive initializer (with modifiers support)\n * @type {(el: HTMLElement, name:string, value:string, state:Object) => Function}\n * */\nconst dir = (target, name, expr, state) => {\n let [dirName, ...mods] = name.split('.'), create = directive[dirName] || directive._\n\n return () => {\n let update = create(target, state, expr, name)\n\n if (!update?.call) return update?.[_dispose]\n\n // throttle prevents multiple updates within one tick as well as isolates stack for each update\n let trigger = decorate(Object.assign(throttle(() => change.value++), { target }), mods),\n change = signal(0), // signal authorized to trigger effect: 0 = init; >0 = trigger\n count = 0, // called effect count\n evaluate = update.eval ?? parse(expr).bind(target),\n _out, out = () => (typeof _out === 'function' && _out(), _out=null) // effect trigger and invoke may happen in the same tick, so it will be effect-within-effect call - we need to store output of evaluate to return from trigger effect\n\n state = target[_state] ?? state\n\n return effect(() => (\n // if planned count is same as actual count - plan new update, else update right away\n change.value == count ? (trigger()) : (count = change.value, _out = evaluate(state, update)),\n out\n ))\n }\n}\n\nObject.assign(modifier, {\n // timing (lodash-like)\n // FIXME: add immediate param\n debounce: (fn, _how) => debounce(fn, (_how ||= 0, !_how ? undefined : _how === 'raf' ? requestAnimationFrame : (fn) => setTimeout(fn, _how))),\n throttle: (fn, _how) => throttle(fn, (_how ||= 0, !_how ? undefined : _how === 'raf' ? requestAnimationFrame : (fn) => setTimeout(fn, _how))),\n delay: (fn, ms) => !ms ? (e) => (queueMicrotask(() => fn(e))) : (e) => setTimeout(() => fn(e), ms),\n\n tick: (fn) => (console.warn('Deprecated'), (e) => (queueMicrotask(() => fn(e)))),\n raf: (fn) => (console.warn('Deprecated'), (e) => requestAnimationFrame(() => fn(e))),\n\n once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),\n\n // target\n window: fn => (fn.target = fn.target.ownerDocument.defaultView, fn),\n document: fn => (fn.target = fn.target.ownerDocument, fn),\n root: fn => (fn.target = fn.target.ownerDocument.documentElement, fn),\n body: fn => (fn.target = fn.target.ownerDocument.body, fn),\n parent: fn => (fn.target = fn.target.parentNode, fn),\n self: (fn) => (e) => (e.target === fn.target && fn(e)),\n away: (fn) => Object.assign((e) => (!fn.target.contains(e.target) && e.target.isConnected && fn(e)), {target: fn.target.ownerDocument}),\n\n // events\n prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),\n stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),\n immediate: (fn) => (console.warn('Deprecated'), (e) => (e?.stopImmediatePropagation(), fn(e))),\n passive: fn => (fn.passive = true, fn),\n capture: fn => (fn.capture = true, fn),\n})\nmodifier.outside = modifier.away\n\n// key testers\nconst keys = {\n ctrl: e => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: e => e.shiftKey || e.key === \"Shift\",\n alt: e => e.altKey || e.key === \"Alt\",\n meta: e => e.metaKey || e.key === \"Meta\",\n cmd: e => e.metaKey || e.key === \"Command\",\n arrow: e => e.key.startsWith(\"Arrow\"),\n enter: e => e.key === \"Enter\",\n esc: e => e.key.startsWith(\"Esc\"),\n tab: e => e.key === \"Tab\",\n space: e => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: e => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: e => /^\\d$/.test(e.key),\n letter: e => /^\\p{L}$/gu.test(e.key),\n char: e => /^\\S$/.test(e.key),\n};\n\n// augment modifiers with key testers\nfor (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keys[a]?.(e)) && (!b || keys[b]?.(e)) && fn(e)\n\n\nuse({\n compile: expr => sprae.constructor(`with(arguments[0]){${expr}}`),\n dir: (el, name, expr, state) => {\n // sequences shortcut\n if (name.includes('..')) return () => _seq(el, state, expr, name)[_dispose]\n return name.split(':').reduce((prev, str) => {\n let start = dir(el, str, expr, state)\n return !prev ? start : (p, s) => (p = prev(), s = start(), () => { p(); s() })\n }, null)\n },\n ...signals\n})\n\n\n// expose for runtime config\nsprae.use = use\nsprae.store = store\nsprae.directive = directive\nsprae.modifier = modifier\n\n\n/**\n * Lifecycle hanger: spraes automatically any new nodes\n */\nconst start = sprae.start = (root = document.body, values) => {\n const state = store(values)\n sprae(root, state);\n const mo = new MutationObserver(mutations => {\n for (const m of mutations) {\n for (const el of m.addedNodes) {\n // el can be spraed or removed by subsprae (like within :each/:if)\n if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {\n // even if element has no spraeable attrs, some of its children can have\n root[_add](el)\n // sprae(el, state, root);\n }\n }\n // for (const el of m.removedNodes) el[Symbol.dispose]?.()\n }\n });\n mo.observe(root, { childList: true, subtree: true });\n return state\n}\n\n\n// version placeholder for bundler\nsprae.version = \"12.3.7\"\n\nexport default sprae\nexport { sprae, store, signal, effect, computed, batch, untracked, start, use }\n"],
5
+ "mappings": "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",
6
+ "names": ["_dispose", "_state", "_on", "_off", "_add", "prefix", "signal", "effect", "computed", "batch", "fn", "untracked", "directive", "modifier", "currentDir", "sprae", "el", "state", "store_default", "fx", "offs", "off", "add", "_attrs", "start", "i", "name", "value", "dir", "child", "compile", "parse", "expr", "cache", "_expr", "hasSemi", "e", "cb", "_out", "result", "v", "s", "d", "use", "decorate", "mods", "params", "mod", "wrapFn", "k", "frag", "tpl", "content", "attributes", "ref", "childNodes", "a", "dashcase", "str", "match", "attr", "clsx", "c", "throttle", "schedule", "_planned", "arg", "throttled", "_dirty", "debounce", "_count", "core_default", "_signals", "_change", "_set", "sandbox", "store", "values", "parent", "list", "keyCount", "signals", "state", "signal", "_", "k", "v", "_s", "set", "create", "descs", "computed", "isMut", "mut", "fn", "length", "i", "_v", "untracked", "batch", "store_default", "signal_exports", "__export", "batch", "computed", "effect", "signal", "untracked", "current", "depth", "batched", "v", "_s", "_obs", "_v", "val", "sub", "fn", "_teardown", "_fx", "_deps", "prev", "tmp", "dep", "_c", "_e", "_first", "_list", "fx", "_prev", "if_default", "el", "state", "_a", "_holder", "_el", "_match", "core_default", "_state", "frag", "throttle", "match", "s", "_off", "_on", "value", "else_default", "el", "_el", "_prev", "frag", "_state", "text_default", "el", "frag", "v", "class_default", "el", "st", "ex", "name", "_cur", "_new", "decorate", "v", "clsx", "c", "style_default", "el", "st", "ex", "name", "_static", "decorate", "v", "attr", "k", "fx_default", "fn", "setter", "expr", "_set", "parse", "target", "value", "value_default", "el", "state", "set", "handleChange", "o", "core_default", "_from", "_to", "attr", "v", "ref_default", "el", "state", "expr", "fn", "parse", "setter", "scope_default", "el", "rootState", "state", "_state", "store", "init", "values", "k", "v", "_signals", "signal", "untracked", "core_default", "each_default", "tpl", "state", "expr", "lhs", "rhs", "itemVar", "idxVar", "holder", "cur", "keys", "items", "prevl", "update", "throttle", "_a", "_b", "i", "newItems", "newl", "_change", "s", "_signals", "idx", "subscope", "el", "frag", "core_default", "_prev", "_state", "value", "_", "effect", "parse", "__default", "el", "st", "ex", "name", "v", "attr", "spread_default", "target", "value", "key", "attr", "dashcase", "event_default", "el", "state", "expr", "name", "type", "mods", "evaluate", "parse", "trigger", "decorate", "e", "fn", "sequence_default", "el", "state", "expr", "names", "cur", "off", "steps", "step", "i", "length", "prev", "str", "name", "mods", "evaluate", "parse", "next", "fn", "e", "trigger", "decorate", "_poff", "directive", "el", "state", "expr", "name", "event_default", "__default", "spread_default", "class_default", "text_default", "style_default", "fx_default", "value_default", "ref_default", "scope_default", "if_default", "else_default", "each_default", "dir", "target", "dirName", "mods", "create", "update", "_dispose", "trigger", "decorate", "throttle", "change", "signal", "count", "evaluate", "parse", "_out", "out", "_state", "effect", "modifier", "fn", "_how", "debounce", "ms", "e", "_done", "_fn", "keys", "k", "a", "b", "use", "core_default", "sequence_default", "prev", "str", "start", "p", "s", "signal_exports", "store_default", "root", "values", "mutations", "m", "_add", "sprae_default"]
7
7
  }
@@ -1,5 +1,5 @@
1
- var C=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var he=Object.prototype.hasOwnProperty;var c=(e,r)=>()=>(e&&(r=e(e=0)),r);var ye=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),be=(e,r)=>{for(var t in r)C(e,t,{get:r[t],enumerable:!0})},ge=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of me(r))!he.call(e,i)&&i!==t&&C(e,i,{get:()=>r[i],enumerable:!(o=de(r,i))||o.enumerable});return e};var _e=e=>ge(C({},"__esModule",{value:!0}),e);var _,m,L,E,y,xe,S,K,V,W=c(()=>{a();_=Symbol("signals"),m=Symbol("change"),L=Symbol("set"),E=!0,y=(e,r)=>{if(!e||e[Symbol.toStringTag]||e[_])return e;if(e.constructor!==Object)return Array.isArray(e)?xe(e):e;let t=Object.keys(e).length,o={},i=new Proxy(Object.assign(o,{[m]:h(t),[_]:o}),{get:(f,n)=>n in o?o[n]?o[n].valueOf():o[n]:r?r[n]:typeof globalThis[n]=="function"&&!globalThis[n].prototype?globalThis[n].bind(globalThis):globalThis[n],set:(f,n,l,p)=>n in o?(K(o,n,l),1):(E=!1,r&&n in r?r[n]=l:(S(o,n,l),o[m].value=++t),E=!0,1),deleteProperty:(f,n)=>(n in o&&(n[0]!="_"&&o[n]?.[Symbol.dispose]?.(),delete o[n],o[m].value=--t),1),ownKeys:()=>(o[m].value,Reflect.ownKeys(o)),has:(f,n)=>n in o?!0:r?n in r:E}),s=Object.getOwnPropertyDescriptors(e);for(let f in e)s[f]?.get?(o[f]=D(s[f].get.bind(i)))[L]=s[f].set?.bind(i):S(o,f,e[f]);return i},xe=(e,r=globalThis)=>{let t=Array(e.length).fill(null),o=!1,i=n=>function(){return o=!0,n.apply(this,arguments)},s=h(e.length),f=new Proxy(Object.assign(t,{[m]:s,[_]:t,push:i(t.push),pop:i(t.pop),shift:i(t.shift),unshift:i(t.unshift),splice:i(t.splice)}),{get(n,l){return l==="length"?o?(o=!1,t.length):s.value:typeof l=="symbol"||isNaN(l)?t[l]?.valueOf()??r[l]:(t[l]??=h(y(e[l]))).valueOf()},set(n,l,p){if(l==="length"){for(let g=p;g<t.length;g++)delete f[g];s.value=t.length=p}else l>=t.length?(S(t,l,p),f.length=+l+1):t[l]?K(t,l,p):S(t,l,p);return 1},deleteProperty:(n,l)=>(t[l]?.[Symbol.dispose]?.(),delete t[l],1)});return f},S=(e,r,t)=>e[r]=r[0]=="_"||t?.peek?t:h(y(t)),K=(e,r,t,o,i)=>r[0]==="_"?e[r]=t:t!==(i=(o=e[r]).peek())&&(o[L]?o[L](t):Array.isArray(t)&&Array.isArray(i)?m in i?w(()=>O(()=>{for(let s=0;s<t.length;s++)i[s]=t[s];i.length=t.length})):o.value=t:o.value=y(t)),V=y});var j,u,q,N,F,M,h,T,D,O,w,$,Ae,I,Se,Z,z,b,X,B,P,x,A,R,d,a=c(()=>{W();W();j=Symbol.dispose||=Symbol("dispose"),u=Symbol("state"),q=Symbol("on"),N=Symbol("off"),F=Symbol("init"),M=":",O=e=>e(),w=O,$={},Ae={},I=null,Se=(e=document.body,r)=>{if(e[u])return Object.assign(e[u],r);r=V(r||{});let t=[],o=[];e[q]=()=>!o&&(o=t.map(s=>s())),e[N]=()=>(o?.map(s=>s()),o=null),e[j]||=()=>(e[N](),e[N]=e[q]=e[j]=e[F]=e[u]=null);let i=e[F]=s=>{let f=s.attributes,n;if(f)for(let l=0;l<f.length;){let{name:p,value:g}=f[l];if(p.startsWith(M)){if(s.removeAttribute(p),I=p,t.push(n=Z(s,p.slice(M.length),g,r)),o.push(n()),u in s)return}else l++}for(let l of[...s.childNodes])l.nodeType==1&&i(l)};return i(e),e[u]===void 0&&(e[u]=r),r},b=e=>{let r=X[e=e.trim()];if(r)return r;let t=e||"undefined";/^(if|let|const)\b/.test(t)||/^(?:[^{};]|\{[^}]*\})*;/.test(t)||(t=`return ${t}`),/\bawait\s/.test(t)&&(t=`return (async()=>{ ${t} })()`);try{r=z(t)}catch(o){console.error(`\u2234 ${o}
1
+ var E=Object.defineProperty;var me=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var ye=Object.prototype.hasOwnProperty;var c=(e,r)=>()=>(e&&(r=e(e=0)),r);var be=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),ge=(e,r)=>{for(var t in r)E(e,t,{get:r[t],enumerable:!0})},_e=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of he(r))!ye.call(e,i)&&i!==t&&E(e,i,{get:()=>r[i],enumerable:!(o=me(r,i))||o.enumerable});return e};var xe=e=>_e(E({},"__esModule",{value:!0}),e);var _,h,P,L,b,Ae,S,V,F,W=c(()=>{a();_=Symbol("signals"),h=Symbol("change"),P=Symbol("set"),L=!0,b=(e,r)=>{if(!e||e[Symbol.toStringTag]||e[_])return e;if(e.constructor!==Object)return Array.isArray(e)?Ae(e):e;let t=Object.keys(e).length,o={},i=new Proxy(Object.assign(o,{[h]:y(t),[_]:o}),{get:(f,n)=>n in o?o[n]?o[n].valueOf():o[n]:r?r[n]:typeof globalThis[n]=="function"&&!globalThis[n].prototype?globalThis[n].bind(globalThis):globalThis[n],set:(f,n,l,p)=>n in o?(V(o,n,l),1):(L=!1,r&&n in r?r[n]=l:(S(o,n,l),o[h].value=++t),L=!0,1),deleteProperty:(f,n)=>(n in o&&(n[0]!="_"&&o[n]?.[Symbol.dispose]?.(),delete o[n],o[h].value=--t),1),ownKeys:()=>(o[h].value,Reflect.ownKeys(o)),has:(f,n)=>n in o?!0:r?n in r:L}),s=Object.getOwnPropertyDescriptors(e);for(let f in e)s[f]?.get?(o[f]=D(s[f].get.bind(i)))[P]=s[f].set?.bind(i):S(o,f,e[f]);return i},Ae=(e,r=globalThis)=>{let t=Array(e.length).fill(null),o=!1,i=n=>function(){return o=!0,n.apply(this,arguments)},s=y(e.length),f=new Proxy(Object.assign(t,{[h]:s,[_]:t,push:i(t.push),pop:i(t.pop),shift:i(t.shift),unshift:i(t.unshift),splice:i(t.splice)}),{get(n,l){return l==="length"?o?(o=!1,t.length):s.value:typeof l=="symbol"||isNaN(l)?t[l]?.valueOf()??r[l]:(t[l]??=y(b(e[l]))).valueOf()},set(n,l,p){if(l==="length"){for(let g=p;g<t.length;g++)delete f[g];s.value=t.length=p}else l>=t.length?(S(t,l,p),f.length=+l+1):t[l]?V(t,l,p):S(t,l,p);return 1},deleteProperty:(n,l)=>(t[l]?.[Symbol.dispose]?.(),delete t[l],1)});return f},S=(e,r,t)=>e[r]=r[0]=="_"||t?.peek?t:y(b(t)),V=(e,r,t,o,i)=>r[0]==="_"?e[r]=t:t!==(i=(o=e[r]).peek())&&(o[P]?o[P](t):Array.isArray(t)&&Array.isArray(i)?h in i?w(()=>O(()=>{for(let s=0;s<t.length;s++)i[s]=t[s];i.length=t.length})):o.value=t:o.value=b(t)),F=b});var j,u,q,N,X,M,y,T,D,O,w,$,Se,I,Oe,z,B,d,Z,we,G,C,x,A,R,m,a=c(()=>{W();W();j=Symbol.dispose||=Symbol("dispose"),u=Symbol("state"),q=Symbol("on"),N=Symbol("off"),X=Symbol("init"),M=":",O=e=>e(),w=O,$={},Se={},I=null,Oe=(e=document.body,r)=>{if(e[u])return Object.assign(e[u],r);r=F(r||{});let t=[],o=[];e[q]=()=>!o&&(o=t.map(s=>s())),e[N]=()=>(o?.map(s=>s()),o=null),e[j]||=()=>(e[N](),e[N]=e[q]=e[j]=e[X]=e[u]=null);let i=e[X]=s=>{let f=s.attributes,n;if(f)for(let l=0;l<f.length;){let{name:p,value:g}=f[l];if(p.startsWith(M)){if(s.removeAttribute(p),I=p,t.push(n=z(s,p.slice(M.length),g,r)),o.push(n()),u in s)return}else l++}for(let l of[...s.childNodes])l.nodeType==1&&i(l)};return i(e),e[u]===void 0&&(e[u]=r),r},d=e=>{let r=Z[e=e.trim()];if(r)return r;let t=e||"undefined";/^(if|let|const)\b/.test(t)||we(t)||(t=`return ${t}`),/\bawait\s/.test(t)&&(t=`return (async()=>{ ${t} })()`);try{r=B(t)}catch(o){console.error(`\u2234 ${o}
2
2
 
3
- ${I}="${e}"`)}return X[e]=function(o,i,s){try{let f=r?.call(this,o);return i?f?.then?(f.then(n=>s=i(n)),()=>typeof s=="function"&&s()):i(f):f}catch(f){console.error(`\u2234 ${f}
3
+ ${I}="${e}"`)}return Z[e]=function(o,i,s){try{let f=r?.call(this,o);return i?f?.then?(f.then(n=>s=i(n)),()=>typeof s=="function"&&s()):i(f):f}catch(f){console.error(`\u2234 ${f}
4
4
 
5
- ${I}="${e}"`)}}},X={},B=e=>(e.compile&&(z=e.compile),e.prefix&&(M=e.prefix),e.signal&&(h=e.signal),e.effect&&(T=e.effect),e.computed&&(D=e.computed),e.batch&&(O=e.batch),e.untracked&&(w=e.untracked),e.dir&&(Z=e.dir)),P=(e,r)=>{for(;r.length;){let[t,...o]=r.pop().split("-"),i=Ae[t],s;if(i&&(s=i(e,...o))!==e){for(let f in e)s[f]??=e[f];e=s}}return e},x=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],o=document.createTextNode(""),i=(r.append(o),[...r.childNodes]);return{childNodes:i,content:r,remove:()=>r.append(...i),replaceWith(s){s!==o&&(o.before(s),r.append(...i))},attributes:t,removeAttribute(s){t.splice(t.findIndex(f=>f.name===s),1)}}},A=(e,r,t)=>t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":t),R=(e,r=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(R):Object.entries(e).reduce((t,[o,i])=>i?[...t,o]:t,[])).join(" "):"",d=Se});var G=c(()=>{a()});var H=c(()=>{a()});var J,Q=c(()=>{a();J=e=>(e.content&&e.replaceWith(e=x(e).childNodes[0]),r=>(r=typeof r=="function"?r(e.textContent):r,e.textContent=r??""))});var U,Y=c(()=>{a();U=(e,r,t,o)=>{let i=new Set,s;return o.includes(".")&&(e=P({target:e},o.split(".").slice(1)).target??e),f=>{s=new Set,f&&R(typeof f=="function"?f(e.className):f).split(" ").map(n=>n&&s.add(n));for(let n of i)s.has(n)?s.delete(n):e.classList.remove(n);for(let n of i=s)e.classList.add(n)}}});var k=c(()=>{a()});var v,ee=c(()=>{v=()=>e=>typeof e=="function"&&e()});var te=c(()=>{a()});var re,oe=c(()=>{a();re=(e,r,t)=>{let o=b(t)(r);if(typeof o=="function")return{[Symbol.dispose]:o(e)};Object.defineProperty(r,t,{value:e,configurable:!0})}});var ie=c(()=>{a()});var ne=c(()=>{a()});var se,fe=c(()=>{a();se=(e,r,t,o)=>i=>A(e,o,typeof i=="function"?i(e.getAttribute(o)):i)});var le=c(()=>{a()});var ce=c(()=>{a()});var ae={};be(ae,{default:()=>we,sprae:()=>d,store:()=>y});var we,ue=c(()=>{a();G();H();Q();Y();k();ee();te();oe();ie();ne();fe();le();ce();B({compile:e=>d.constructor(`with (arguments[0]) { ${e} }`),dir(e,r,t,o){let[i]=r.split("."),s=$[i]||$._;return(f,n)=>(f=s(e,o,t,r))[j]??(n=f.eval??b(t),o=e[u]??o,T(()=>n(o,f)))}});Object.assign($,{_:se,class:U,text:J,fx:v,ref:re});we=d});var je=ye((Dt,pe)=>{var Ne=(ue(),_e(ae)).default;pe.exports=Ne});export default je();
5
+ ${I}="${e}"`)}}},Z={},we=e=>{for(let r=0,t=0;t<e.length;t++)if(e[t]=="{")r++;else if(e[t]=="}")r--;else if(e[t]==";"&&!r)return!0;return!1},G=e=>(e.compile&&(B=e.compile),e.prefix&&(M=e.prefix),e.signal&&(y=e.signal),e.effect&&(T=e.effect),e.computed&&(D=e.computed),e.batch&&(O=e.batch),e.untracked&&(w=e.untracked),e.dir&&(z=e.dir)),C=(e,r)=>{for(;r.length;){let[t,...o]=r.pop().split("-"),i=Se[t],s;if(i&&(s=i(e,...o))!==e){for(let f in e)s[f]??=e[f];e=s}}return e},x=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],o=document.createTextNode(""),i=(r.append(o),[...r.childNodes]);return{childNodes:i,content:r,remove:()=>r.append(...i),replaceWith(s){s!==o&&(o.before(s),r.append(...i))},attributes:t,removeAttribute(s){t.splice(t.findIndex(f=>f.name===s),1)}}},A=(e,r,t)=>t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":t),R=(e,r=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(R):Object.entries(e).reduce((t,[o,i])=>i?[...t,o]:t,[])).join(" "):"",m=Oe});var H=c(()=>{a()});var J=c(()=>{a()});var Q,U=c(()=>{a();Q=e=>(e.content&&e.replaceWith(e=x(e).childNodes[0]),r=>(r=typeof r=="function"?r(e.textContent):r,e.textContent=r??""))});var Y,k=c(()=>{a();Y=(e,r,t,o)=>{let i=new Set,s;return o.includes(".")&&(e=C({target:e},o.split(".").slice(1)).target??e),f=>{s=new Set,f&&R(typeof f=="function"?f(e.className):f).split(" ").map(n=>n&&s.add(n));for(let n of i)s.has(n)?s.delete(n):e.classList.remove(n);for(let n of i=s)e.classList.add(n)}}});var v=c(()=>{a()});var ee,te=c(()=>{ee=()=>e=>typeof e=="function"&&e()});var re,K=c(()=>{a();re=(e,r=d(`${e}=__`))=>(t,o)=>{t.__=o,r(t),delete t.__}});var oe,ie=c(()=>{a();K();oe=(e,r,t)=>{let o=d(t)(r);if(typeof o=="function")return{[Symbol.dispose]:o(e)};re(t)(r,e)}});var ne=c(()=>{a()});var se=c(()=>{a()});var fe,le=c(()=>{a();fe=(e,r,t,o)=>i=>A(e,o,typeof i=="function"?i(e.getAttribute(o)):i)});var ce=c(()=>{a()});var ae=c(()=>{a()});var ue={};ge(ue,{default:()=>je,sprae:()=>m,store:()=>b});var je,pe=c(()=>{a();H();J();U();k();v();te();K();ie();ne();se();le();ce();ae();G({compile:e=>m.constructor(`with (arguments[0]) { ${e} }`),dir(e,r,t,o){let[i]=r.split("."),s=$[i]||$._;return(f,n)=>(f=s(e,o,t,r))[j]??(n=f.eval??d(t),o=e[u]??o,T(()=>n(o,f)))}});Object.assign($,{_:fe,class:Y,text:Q,fx:ee,ref:oe});je=m});var $e=be((It,de)=>{var Te=(pe(),xe(ue)).default;de.exports=Te});export default $e();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../store.js", "../core.js", "../directive/if.js", "../directive/else.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/fx.js", "../directive/value.js", "../directive/ref.js", "../directive/scope.js", "../directive/each.js", "../directive/_.js", "../directive/spread.js", "../directive/event.js", "../micro.js", "<stdin>"],
4
- "sourcesContent": ["// signals-based proxy\nimport { signal, computed, batch, untracked } from './core.js'\n\n\n// _signals allows both storing signals and checking instance, which would be difficult with WeakMap\nexport const _signals = Symbol('signals'),\n // _change is a signal that tracks changes to the object keys or array length\n _change = Symbol('change'),\n // _set is stashed setter for computed values\n _set = Symbol('set')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n// object store is not lazy\n// parent defines parent scope or sandbox\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals\n }), {\n get: (_, k) => {\n if (k in signals) return (signals[k] ? signals[k].valueOf() : signals[k])\n return parent ? parent[k] : (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v, _s) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n// array store - signals are lazy since arrays can be very large & expensive\nconst list = (values, parent = globalThis) => {\n\n // gotta fill with null since proto methods like .reduce may fail\n let signals = Array(values.length).fill(null),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // create signal (lazy)\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n return (signals[k] ??= signal(store(values[k]))).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v) : create(signals, k, v)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n\n return state\n}\n\n// create signal value, skip untracked\nconst create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n\n// set/update signal value\nconst set = (signals, k, v, _s, _v) => {\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n return k[0] === '_' ? (signals[k] = v) :\n (v !== (_v = (_s = signals[k]).peek())) && (\n // stashed _set for value with getter/setter\n _s[_set] ? _s[_set](v) :\n // patch array\n Array.isArray(v) && Array.isArray(_v) ?\n // if we update plain array (stored in signal) - take over value instead\n // since input value can be store, we have to make sure we don't subscribe to its length or values\n // FIXME: generalize to objects\n _change in _v ?\n untracked(() => batch(() => {\n for (let i = 0; i < v.length; i++) _v[i] = v[i]\n _v.length = v.length // forces deleting tail signals\n })) :\n (_s.value = v) :\n // .x = y\n (_s.value = store(v))\n )\n}\n\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\n// NOTE: we don't need since we force proxy sandbox\n// export const ensure = (state, expr, _name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => _name && (state[_signals][_name[0]] ??= null)\n\nexport default store\n", "import store, { _change, _signals } from \"./store.js\";\n\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\")),\n _state = Symbol(\"state\"),\n _on = Symbol('on'),\n _off = Symbol('off'),\n _add = Symbol('init');\n\nexport let prefix = ':', signal, effect, computed, batch = (fn) => fn(), untracked = batch;\n\nexport let directive = {}, modifier = {}\n\nlet currentDir = null;\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object|store} [state] - Initial state values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nconst sprae = (el = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], state)\n\n // console.group('sprae', el)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => (!offs && (offs = fx.map(fn => fn())))\n el[_off] = () => (offs?.map(off => off()), offs = null)\n\n // destroy\n el[_dispose] ||= () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null)\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n // we iterate live collection (subsprae can init args)\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n currentDir = name;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae like :each, :if, :scope etc.\n if (_state in el) return\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // for (let i = 0, child; i < (el.childNodes.length); i++) child = el.childNodes[i], child.nodeType == 1 && add(child)\n for (let child of [...el.childNodes]) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n if (el[_state] === undefined) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n// directive initializer\nexport let dir\n\n/**\n * Compiles an expression into an evaluator function.\n * @type {(dir:string, expr: string, clean?: string => string) => Function}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr The expression to parse and compile into a function.\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n let _expr = expr || 'undefined'\n\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(_expr));\n // first-level semicolons - no return\n else if (/^(?:[^{};]|\\{[^}]*\\})*;/.test(_expr));\n else _expr = `return ${_expr}`\n\n // async expression\n if (/\\bawait\\s/.test(_expr)) _expr = `return (async()=>{ ${_expr} })()`\n\n // static time errors\n try {\n fn = compile(_expr)\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then ? (result.then(v => _out = cb(v)), () => typeof _out === 'function' && _out()) : cb(result)\n else return result\n } catch (e) {\n console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`)\n }\n }\n}\nconst cache = {};\n\n\n\n/**\n * Configure sprae\n */\nexport const use = (s) => (\n s.compile && (compile = s.compile),\n s.prefix && (prefix = s.prefix),\n s.signal && (signal = s.signal),\n s.effect && (effect = s.effect),\n s.computed && (computed = s.computed),\n s.batch && (batch = s.batch),\n s.untracked && (untracked = s.untracked),\n s.dir && (dir = s.dir)\n)\n\n// modifier applier\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n // get parentNode() { return childNodes[0].parentNode },\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n // setAttributeNode() { }\n }\n}\n\n// camel to kebab\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n// set attr\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) : el.setAttribute(name, v === true ? \"\" : v);\n\n// convert any-arg to className string\nexport const clsx = (c, _out = []) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => !v ? s : [...s, k], [])\n).join(' ')\n\n// throttle function to (once per tick or other custom scheduler)\nexport const throttle = (fn, schedule = queueMicrotask) => {\n let _planned = 0, arg;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule((_dirty = _planned > 1) => (\n _planned = 0, _dirty && throttled(arg)\n ));\n }\n return throttled;\n}\n\nexport const debounce = (fn, schedule = queueMicrotask, _count = 0) => (arg, _planned = ++_count) => schedule(() => (_planned == _count && fn(arg)))\n\nexport * from './store.js';\n\nexport default sprae\n", "// \"centralized\" version of :if\nimport sprae, { throttle, _on, _off, _state, frag } from '../core.js';\n\n// :if=\"a\"\nexport default (el, state) => {\n let _holder, _el, _match\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n\n el.replaceWith(_holder = document.createTextNode(''))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _match) {\n _match?.[0].remove()\n _match?.[0][_off]?.()\n if (_match = match) {\n _holder.before(_match[0].content || _match[0])\n // there's no :else after :if, so lazy-sprae here doesn't risk adding own destructor to own list of destructors\n !_match[0][_state] ? (delete _match[0][_state], sprae(_match[0], state)) : _match[0][_on]?.()\n }\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n return value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n\n// NOTE: we can reach :else counterpart whereas prev :else :if is on hold\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => (v = typeof v === 'function' ? v(el.textContent) : v, el.textContent = v == null ? \"\" : v)\n)\n", "import { clsx, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _cur = new Set, _new\n\n // redefine target, if modifiers have one\n name.includes('.') && (el = decorate({target:el}, name.split('.').slice(1)).target ?? el)\n\n return (v) => {\n _new = new Set\n if (v) clsx(typeof v === 'function' ? v(el.className) : v).split(' ').map(c => c && _new.add(c))\n for (let c of _cur) if (_new.has(c)) _new.delete(c); else el.classList.remove(c);\n for (let c of _cur = _new) el.classList.add(c)\n }\n}\n", "import { attr, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _static;\n\n // redefine target, if modifiers have one\n if (name.includes('.')) el = decorate({target:el}, name.split('.').slice(1)).target ?? el;\n\n return v => {\n if (!_static) { _static = el.getAttribute(\"style\") }\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static + '; ' + v);\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] > 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "export default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, parse, _state } from \"../core.js\";\n\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n // save value to stash\n target.__ = value; _set(target), delete target.__\n}\n\nexport default (el, state, expr) => {\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber);\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n\n // initial state value - setter has already cached it, so parse is fast\n parse(expr)(state) ?? handleChange()\n } catch { }\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n // we retain selection in input\n (_from = el.selectionStart),\n (_to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.value === value && ((el.checked = value), attr(el, 'checked', value))\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n}\n", "import { parse } from \"../core.js\"\n// import { setter } from \"./value.js\"\n\nexport default (el, state, expr) => {\n let fn = parse(expr)(state)\n\n if (typeof fn == 'function') return {[Symbol.dispose]:fn(el)}\n\n // NOTE: we have to set element statically (outside of effect) to avoid parasitic sub - multiple els with same :ref can cause recursion (eg. :each :ref=\"x\")\n // FIXME: do via (setter(expr)(state, el))\n else Object.defineProperty(state, expr, { value: el, configurable: true })\n}\n", "import sprae, { store, untracked, _state, _signals, signal } from '../core.js'\n\nexport default (el, rootState) => {\n // 0 run pre-creates state to provide scope for the first effect - it can write vars in it, so we should already have it\n // el[_state] even replaces own :scope effect state\n let state = el[_state] = store({}, rootState), init = false;\n\n // 1st run spraes subtree with values from scope, it can be postponed by modifiers (we isolate reads from parent effect)\n // 2nd+ runs update subscope\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n // we bind to subscope to alleviate friction using scope method directly\n // also returned props should force-create signals in subscope, not overwriting parent\n if (values !== state) {\n for (let k in values) {\n // _add forces new prop, instead of checking parent\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n // update\n if (k in state[_signals]) state[k] = v\n // create\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n // Object.assign(subscope, call(values, subscope))\n return !init && (init = true, delete el[_state], untracked(() => sprae(el, state)))\n }\n}\n", "import sprae, { store, parse, _state, effect, _change, _signals, frag, throttle, debounce } from \"../core.js\";\n\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/);\n\n // we need :if to be able to replace holder instead of tpl for :if :each case\n let holder = document.createTextNode(\"\");\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n // FIXME: pass items to update instead of global\n let update = throttle(() => {\n let i = 0, newItems = items, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]()\n cur = null, prevl = 0\n }\n\n\n // delete\n if (newl < prevl) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n\n let idx = i,\n // inherited state must be cheaper in terms of memory and faster in terms of performance, compared to creating a proxy store\n // subscope = store({\n // // NOTE: since we simulate signal, we have to make sure it's actual signal, not fake one\n // // FIXME: try to avoid this, we also have issue with wrongly calling dispose in store on delete\n // [itemVar]: cur[_signals]?.[idx]?.peek ? cur[_signals]?.[idx] : cur[idx],\n // [idxVar]: keys ? keys[idx] : idx\n // }, state)\n subscope = Object.create(state, {\n [itemVar]: { get: () => cur[idx] },\n [idxVar]: { value: keys ? keys[idx] : idx }\n })\n\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, subscope);\n\n // signal/holder disposal removes element\n let _prev = ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose]\n cur[_signals][i][Symbol.dispose] = () => {\n _prev?.(), el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n\n tpl.replaceWith(holder);\n tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n return Object.assign(value => {\n // resolve new items\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact signals unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n update()\n })\n }, {eval:parse(rhs)})\n}\n", "import { attr } from \"../core.js\";\n\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase } from \"../core.js\";\n\nexport default (target) => value => { for (let key in value) attr(target, dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n }\n }\n}\n", "// Microsprae.\n// No prop mods, sync effects, no aliases, no chains, core effects\n\nimport sprae, { effect, parse, _state, _dispose, use, directive, store } from \"./core.js\"\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\n\n\nuse({\n compile: expr => sprae.constructor(`with (arguments[0]) { ${expr} }`),\n dir(target, name, expr, state) {\n let [dirName] = name.split('.'), d = directive[dirName] || directive._\n\n return (_update, _eval) => (\n (_update = d(target, state, expr, name))[_dispose] ??\n (\n _eval = _update.eval ?? parse(expr),\n state = target[_state] ?? state,\n effect(() => _eval(state, _update))\n )\n )\n }\n})\n\nObject.assign(directive, {\n // _: (el, state, expr, name) => (name.startsWith('on') ? _default : _event)(el, state, expr, name),\n _: _default,\n // '': _spread,\n class: _class,\n text: _text,\n // style: _style,\n fx: _fx,\n // value: _value,\n ref: _ref,\n // scope: _scope,\n // if: _if,\n // else: _else,\n // each: _each\n})\n\n\nexport { sprae, store }\n\nexport default sprae\n", "var sprae = require(\"./micro.js\").default; module.exports = sprae;"],
5
- "mappings": "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",
6
- "names": ["_signals", "_change", "_set", "sandbox", "store", "list", "create", "set", "store_default", "init_store", "__esmMin", "init_core", "values", "parent", "keyCount", "signals", "state", "signal", "_", "k", "v", "_s", "descs", "computed", "isMut", "mut", "fn", "length", "i", "_v", "untracked", "batch", "_dispose", "_state", "_on", "_off", "_add", "prefix", "signal", "effect", "computed", "batch", "untracked", "directive", "modifier", "currentDir", "sprae", "dir", "compile", "parse", "cache", "use", "decorate", "frag", "attr", "clsx", "core_default", "init_core", "__esmMin", "init_store", "fn", "el", "state", "store_default", "fx", "offs", "off", "add", "_attrs", "start", "i", "name", "value", "child", "expr", "_expr", "e", "cb", "_out", "result", "v", "s", "mods", "params", "mod", "wrapFn", "k", "tpl", "content", "attributes", "ref", "childNodes", "a", "c", "init_if", "__esmMin", "init_core", "init_else", "__esmMin", "init_core", "text_default", "init_text", "__esmMin", "init_core", "el", "frag", "v", "class_default", "init_class", "__esmMin", "init_core", "el", "st", "ex", "name", "_cur", "_new", "decorate", "v", "clsx", "c", "init_style", "__esmMin", "init_core", "fx_default", "init_fx", "__esmMin", "fn", "init_value", "__esmMin", "init_core", "ref_default", "init_ref", "__esmMin", "init_core", "el", "state", "expr", "fn", "parse", "init_scope", "__esmMin", "init_core", "init_each", "__esmMin", "init_core", "__default", "init__", "__esmMin", "init_core", "el", "st", "ex", "name", "v", "attr", "init_spread", "__esmMin", "init_core", "init_event", "__esmMin", "init_core", "micro_exports", "__export", "micro_default", "core_default", "store", "init_micro", "__esmMin", "init_core", "init_if", "init_else", "init_text", "init_class", "init_style", "init_fx", "init_value", "init_ref", "init_scope", "init_each", "init__", "init_spread", "init_event", "use", "expr", "target", "name", "state", "dirName", "d", "directive", "_update", "_eval", "_dispose", "parse", "_state", "effect", "__default", "class_default", "text_default", "fx_default", "ref_default", "require_stdin", "__commonJSMin", "exports", "module", "sprae"]
4
+ "sourcesContent": ["// signals-based proxy\nimport { signal, computed, batch, untracked } from './core.js'\n\n\n// _signals allows both storing signals and checking instance, which would be difficult with WeakMap\nexport const _signals = Symbol('signals'),\n // _change is a signal that tracks changes to the object keys or array length\n _change = Symbol('change'),\n // _set is stashed setter for computed values\n _set = Symbol('set')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n// object store is not lazy\n// parent defines parent scope or sandbox\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals\n }), {\n get: (_, k) => {\n if (k in signals) return (signals[k] ? signals[k].valueOf() : signals[k])\n return parent ? parent[k] : (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v, _s) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n// array store - signals are lazy since arrays can be very large & expensive\nconst list = (values, parent = globalThis) => {\n\n // gotta fill with null since proto methods like .reduce may fail\n let signals = Array(values.length).fill(null),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // create signal (lazy)\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n return (signals[k] ??= signal(store(values[k]))).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v) : create(signals, k, v)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n\n return state\n}\n\n// create signal value, skip untracked\nconst create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n\n// set/update signal value\nconst set = (signals, k, v, _s, _v) => {\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n return k[0] === '_' ? (signals[k] = v) :\n (v !== (_v = (_s = signals[k]).peek())) && (\n // stashed _set for value with getter/setter\n _s[_set] ? _s[_set](v) :\n // patch array\n Array.isArray(v) && Array.isArray(_v) ?\n // if we update plain array (stored in signal) - take over value instead\n // since input value can be store, we have to make sure we don't subscribe to its length or values\n // FIXME: generalize to objects\n _change in _v ?\n untracked(() => batch(() => {\n for (let i = 0; i < v.length; i++) _v[i] = v[i]\n _v.length = v.length // forces deleting tail signals\n })) :\n (_s.value = v) :\n // .x = y\n (_s.value = store(v))\n )\n}\n\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\n// NOTE: we don't need since we force proxy sandbox\n// export const ensure = (state, expr, _name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => _name && (state[_signals][_name[0]] ??= null)\n\nexport default store\n", "import store, { _change, _signals } from \"./store.js\";\n\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\")),\n _state = Symbol(\"state\"),\n _on = Symbol('on'),\n _off = Symbol('off'),\n _add = Symbol('init');\n\nexport let prefix = ':', signal, effect, computed, batch = (fn) => fn(), untracked = batch;\n\nexport let directive = {}, modifier = {}\n\nlet currentDir = null;\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object|store} [state] - Initial state values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nconst sprae = (el = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], state)\n\n // console.group('sprae', el)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => (!offs && (offs = fx.map(fn => fn())))\n el[_off] = () => (offs?.map(off => off()), offs = null)\n\n // destroy\n el[_dispose] ||= () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null)\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n // we iterate live collection (subsprae can init args)\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n currentDir = name;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae like :each, :if, :scope etc.\n if (_state in el) return\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // for (let i = 0, child; i < (el.childNodes.length); i++) child = el.childNodes[i], child.nodeType == 1 && add(child)\n for (let child of [...el.childNodes]) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n if (el[_state] === undefined) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n// directive initializer\nexport let dir\n\n/**\n * Compiles an expression into an evaluator function.\n * @type {(dir:string, expr: string, clean?: string => string) => Function}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr The expression to parse and compile into a function.\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n let _expr = expr || 'undefined'\n\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(_expr));\n // first-level semicolons - no return\n else if (hasSemi(_expr));\n else _expr = `return ${_expr}`\n\n // async expression\n if (/\\bawait\\s/.test(_expr)) _expr = `return (async()=>{ ${_expr} })()`\n\n // static time errors\n try {\n fn = compile(_expr)\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then ? (result.then(v => _out = cb(v)), () => typeof _out === 'function' && _out()) : cb(result)\n else return result\n } catch (e) {\n console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`)\n }\n }\n}\nconst cache = {};\n\nconst hasSemi = s => {\n for (let d=0,i=0;i<s.length;i++) {\n if (s[i]=='{') d++\n else if (s[i]=='}') d--\n else if (s[i]==';' && !d) return true\n }\n return false\n}\n\n\n/**\n * Configure sprae\n */\nexport const use = (s) => (\n s.compile && (compile = s.compile),\n s.prefix && (prefix = s.prefix),\n s.signal && (signal = s.signal),\n s.effect && (effect = s.effect),\n s.computed && (computed = s.computed),\n s.batch && (batch = s.batch),\n s.untracked && (untracked = s.untracked),\n s.dir && (dir = s.dir)\n)\n\n// modifier applier\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n // get parentNode() { return childNodes[0].parentNode },\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n // setAttributeNode() { }\n }\n}\n\n// camel to kebab\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n// set attr\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) : el.setAttribute(name, v === true ? \"\" : v);\n\n// convert any-arg to className string\nexport const clsx = (c, _out = []) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => !v ? s : [...s, k], [])\n).join(' ')\n\n// throttle function to (once per tick or other custom scheduler)\nexport const throttle = (fn, schedule = queueMicrotask) => {\n let _planned = 0, arg;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule((_dirty = _planned > 1) => (\n _planned = 0, _dirty && throttled(arg)\n ));\n }\n return throttled;\n}\n\nexport const debounce = (fn, schedule = queueMicrotask, _count = 0) => (arg, _planned = ++_count) => schedule(() => (_planned == _count && fn(arg)))\n\nexport * from './store.js';\n\nexport default sprae\n", "// \"centralized\" version of :if\nimport sprae, { throttle, _on, _off, _state, frag } from '../core.js';\n\n// :if=\"a\"\nexport default (el, state) => {\n let _holder, _el, _match\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n\n el.replaceWith(_holder = document.createTextNode(''))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _match) {\n _match?.[0].remove()\n _match?.[0][_off]?.()\n if (_match = match) {\n _holder.before(_match[0].content || _match[0])\n // there's no :else after :if, so lazy-sprae here doesn't risk adding own destructor to own list of destructors\n !_match[0][_state] ? (delete _match[0][_state], sprae(_match[0], state)) : _match[0][_on]?.()\n }\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n return value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n\n// NOTE: we can reach :else counterpart whereas prev :else :if is on hold\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => (v = typeof v === 'function' ? v(el.textContent) : v, el.textContent = v == null ? \"\" : v)\n)\n", "import { clsx, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _cur = new Set, _new\n\n // redefine target, if modifiers have one\n name.includes('.') && (el = decorate({target:el}, name.split('.').slice(1)).target ?? el)\n\n return (v) => {\n _new = new Set\n if (v) clsx(typeof v === 'function' ? v(el.className) : v).split(' ').map(c => c && _new.add(c))\n for (let c of _cur) if (_new.has(c)) _new.delete(c); else el.classList.remove(c);\n for (let c of _cur = _new) el.classList.add(c)\n }\n}\n", "import { attr, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _static;\n\n // redefine target, if modifiers have one\n if (name.includes('.')) el = decorate({target:el}, name.split('.').slice(1)).target ?? el;\n\n return v => {\n if (!_static) { _static = el.getAttribute(\"style\") }\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static + '; ' + v);\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] > 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "export default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, parse, _state } from \"../core.js\";\n\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n // save value to stash\n target.__ = value; _set(target), delete target.__\n}\n\nexport default (el, state, expr) => {\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber);\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n\n // initial state value - setter has already cached it, so parse is fast\n parse(expr)(state) ?? handleChange()\n } catch { }\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n // we retain selection in input\n (_from = el.selectionStart),\n (_to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.value === value && ((el.checked = value), attr(el, 'checked', value))\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n}\n", "import { parse } from \"../core.js\"\nimport { setter } from \"./value.js\"\n\nexport default (el, state, expr) => {\n let fn = parse(expr)(state)\n\n if (typeof fn == 'function') return {[Symbol.dispose]:fn(el)}\n\n // NOTE: we have to set element statically (outside of effect) to avoid parasitic sub - multiple els with same :ref can cause recursion (eg. :each :ref=\"x\")\n // Object.defineProperty(state, expr, { value: el, configurable: true })\n setter(expr)(state, el)\n}\n", "import sprae, { store, untracked, _state, _signals, signal } from '../core.js'\n\nexport default (el, rootState) => {\n // 0 run pre-creates state to provide scope for the first effect - it can write vars in it, so we should already have it\n // el[_state] even replaces own :scope effect state\n let state = el[_state] = store({}, rootState), init = false;\n\n // 1st run spraes subtree with values from scope, it can be postponed by modifiers (we isolate reads from parent effect)\n // 2nd+ runs update subscope\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n // we bind to subscope to alleviate friction using scope method directly\n // also returned props should force-create signals in subscope, not overwriting parent\n if (values !== state) {\n for (let k in values) {\n // _add forces new prop, instead of checking parent\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n // update\n if (k in state[_signals]) state[k] = v\n // create\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n // Object.assign(subscope, call(values, subscope))\n return !init && (init = true, delete el[_state], untracked(() => sprae(el, state)))\n }\n}\n", "import sprae, { store, parse, _state, effect, _change, _signals, frag, throttle, debounce } from \"../core.js\";\n\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/);\n\n // we need :if to be able to replace holder instead of tpl for :if :each case\n let holder = document.createTextNode(\"\");\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n // FIXME: pass items to update instead of global\n let update = throttle(() => {\n let i = 0, newItems = items, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]()\n cur = null, prevl = 0\n }\n\n\n // delete\n if (newl < prevl) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n\n let idx = i,\n // inherited state must be cheaper in terms of memory and faster in terms of performance, compared to creating a proxy store\n // subscope = store({\n // // NOTE: since we simulate signal, we have to make sure it's actual signal, not fake one\n // // FIXME: try to avoid this, we also have issue with wrongly calling dispose in store on delete\n // [itemVar]: cur[_signals]?.[idx]?.peek ? cur[_signals]?.[idx] : cur[idx],\n // [idxVar]: keys ? keys[idx] : idx\n // }, state)\n subscope = Object.create(state, {\n [itemVar]: { get: () => cur[idx] },\n [idxVar]: { value: keys ? keys[idx] : idx }\n })\n\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, subscope);\n\n // signal/holder disposal removes element\n let _prev = ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose]\n cur[_signals][i][Symbol.dispose] = () => {\n _prev?.(), el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n\n tpl.replaceWith(holder);\n tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n return Object.assign(value => {\n // resolve new items\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact signals unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n update()\n })\n }, {eval:parse(rhs)})\n}\n", "import { attr } from \"../core.js\";\n\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase } from \"../core.js\";\n\nexport default (target) => value => { for (let key in value) attr(target, dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n }\n }\n}\n", "// Microsprae.\n// No prop mods, sync effects, no aliases, no chains, core effects\n\nimport sprae, { effect, parse, _state, _dispose, use, directive, store } from \"./core.js\"\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\n\n\nuse({\n compile: expr => sprae.constructor(`with (arguments[0]) { ${expr} }`),\n dir(target, name, expr, state) {\n let [dirName] = name.split('.'), d = directive[dirName] || directive._\n\n return (_update, _eval) => (\n (_update = d(target, state, expr, name))[_dispose] ??\n (\n _eval = _update.eval ?? parse(expr),\n state = target[_state] ?? state,\n effect(() => _eval(state, _update))\n )\n )\n }\n})\n\nObject.assign(directive, {\n // _: (el, state, expr, name) => (name.startsWith('on') ? _default : _event)(el, state, expr, name),\n _: _default,\n // '': _spread,\n class: _class,\n text: _text,\n // style: _style,\n fx: _fx,\n // value: _value,\n ref: _ref,\n // scope: _scope,\n // if: _if,\n // else: _else,\n // each: _each\n})\n\n\nexport { sprae, store }\n\nexport default sprae\n", "var sprae = require(\"./micro.js\").default; module.exports = sprae;"],
5
+ "mappings": "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",
6
+ "names": ["_signals", "_change", "_set", "sandbox", "store", "list", "create", "set", "store_default", "init_store", "__esmMin", "init_core", "values", "parent", "keyCount", "signals", "state", "signal", "_", "k", "v", "_s", "descs", "computed", "isMut", "mut", "fn", "length", "i", "_v", "untracked", "batch", "_dispose", "_state", "_on", "_off", "_add", "prefix", "signal", "effect", "computed", "batch", "untracked", "directive", "modifier", "currentDir", "sprae", "dir", "compile", "parse", "cache", "hasSemi", "use", "decorate", "frag", "attr", "clsx", "core_default", "init_core", "__esmMin", "init_store", "fn", "el", "state", "store_default", "fx", "offs", "off", "add", "_attrs", "start", "i", "name", "value", "child", "expr", "_expr", "e", "cb", "_out", "result", "v", "s", "d", "mods", "params", "mod", "wrapFn", "k", "tpl", "content", "attributes", "ref", "childNodes", "a", "c", "init_if", "__esmMin", "init_core", "init_else", "__esmMin", "init_core", "text_default", "init_text", "__esmMin", "init_core", "el", "frag", "v", "class_default", "init_class", "__esmMin", "init_core", "el", "st", "ex", "name", "_cur", "_new", "decorate", "v", "clsx", "c", "init_style", "__esmMin", "init_core", "fx_default", "init_fx", "__esmMin", "fn", "setter", "init_value", "__esmMin", "init_core", "expr", "_set", "parse", "target", "value", "ref_default", "init_ref", "__esmMin", "init_core", "init_value", "el", "state", "expr", "fn", "parse", "setter", "init_scope", "__esmMin", "init_core", "init_each", "__esmMin", "init_core", "__default", "init__", "__esmMin", "init_core", "el", "st", "ex", "name", "v", "attr", "init_spread", "__esmMin", "init_core", "init_event", "__esmMin", "init_core", "micro_exports", "__export", "micro_default", "core_default", "store", "init_micro", "__esmMin", "init_core", "init_if", "init_else", "init_text", "init_class", "init_style", "init_fx", "init_value", "init_ref", "init_scope", "init_each", "init__", "init_spread", "init_event", "use", "expr", "target", "name", "state", "dirName", "d", "directive", "_update", "_eval", "_dispose", "parse", "_state", "effect", "__default", "class_default", "text_default", "fx_default", "ref_default", "require_stdin", "__commonJSMin", "exports", "module", "sprae"]
7
7
  }
package/dist/sprae.umd.js CHANGED
@@ -1,9 +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 Y=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var Ue=Object.getOwnPropertyNames;var Ye=Object.prototype.hasOwnProperty;var p=(e,r)=>()=>(e&&(r=e(e=0)),r);var se=(e,r)=>{for(var t in r)Y(e,t,{get:r[t],enumerable:!0})},ve=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Ue(r))!Ye.call(e,n)&&n!==t&&Y(e,n,{get:()=>r[n],enumerable:!(o=Qe(r,n))||o.enumerable});return e};var et=e=>ve(Y({},"__esModule",{value:!0}),e);var E,f,Z,F,z,v,b,W,J,M,q,B,C,ee,tt,ce,ue,g,ae,G,x,k,le,_,te,P,fe,d,m=p(()=>{H();H();E=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),f=Symbol("state"),Z=Symbol("on"),F=Symbol("off"),z=Symbol("init"),v=":",M=e=>e(),q=M,B={},C={},ee=null,tt=(e=document.body,r)=>{if(e[f])return Object.assign(e[f],r);r=K(r||{});let t=[],o=[];e[Z]=()=>!o&&(o=t.map(i=>i())),e[F]=()=>(o?.map(i=>i()),o=null),e[E]||(e[E]=()=>(e[F](),e[F]=e[Z]=e[E]=e[z]=e[f]=null));let n=e[z]=i=>{let s=i.attributes,a;if(s)for(let c=0;c<s.length;){let{name:u,value:y}=s[c];if(u.startsWith(v)){if(i.removeAttribute(u),ee=u,t.push(a=ce(i,u.slice(v.length),y,r)),o.push(a()),f in i)return}else c++}for(let c of[...i.childNodes])c.nodeType==1&&n(c)};return n(e),e[f]===void 0&&(e[f]=r),r},g=e=>{let r=ae[e=e.trim()];if(r)return r;let t=e||"undefined";/^(if|let|const)\b/.test(t)||/^(?:[^{};]|\{[^}]*\})*;/.test(t)||(t=`return ${t}`),/\bawait\s/.test(t)&&(t=`return (async()=>{ ${t} })()`);try{r=ue(t)}catch(o){console.error(`\u2234 ${o}
2
+ var Y=Object.defineProperty;var Ue=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var ve=Object.prototype.hasOwnProperty;var p=(e,r)=>()=>(e&&(r=e(e=0)),r);var ce=(e,r)=>{for(var t in r)Y(e,t,{get:r[t],enumerable:!0})},et=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of Ye(r))!ve.call(e,n)&&n!==t&&Y(e,n,{get:()=>r[n],enumerable:!(o=Ue(r,n))||o.enumerable});return e};var tt=e=>et(Y({},"__esModule",{value:!0}),e);var E,f,Z,F,z,v,b,W,J,M,q,B,C,ee,rt,ue,fe,g,le,ot,G,x,k,de,_,te,L,pe,d,m=p(()=>{H();H();E=Symbol.dispose||(Symbol.dispose=Symbol("dispose")),f=Symbol("state"),Z=Symbol("on"),F=Symbol("off"),z=Symbol("init"),v=":",M=e=>e(),q=M,B={},C={},ee=null,rt=(e=document.body,r)=>{if(e[f])return Object.assign(e[f],r);r=K(r||{});let t=[],o=[];e[Z]=()=>!o&&(o=t.map(i=>i())),e[F]=()=>(o?.map(i=>i()),o=null),e[E]||(e[E]=()=>(e[F](),e[F]=e[Z]=e[E]=e[z]=e[f]=null));let n=e[z]=i=>{let s=i.attributes,a;if(s)for(let c=0;c<s.length;){let{name:l,value:y}=s[c];if(l.startsWith(v)){if(i.removeAttribute(l),ee=l,t.push(a=ue(i,l.slice(v.length),y,r)),o.push(a()),f in i)return}else c++}for(let c of[...i.childNodes])c.nodeType==1&&n(c)};return n(e),e[f]===void 0&&(e[f]=r),r},g=e=>{let r=le[e=e.trim()];if(r)return r;let t=e||"undefined";/^(if|let|const)\b/.test(t)||ot(t)||(t=`return ${t}`),/\bawait\s/.test(t)&&(t=`return (async()=>{ ${t} })()`);try{r=fe(t)}catch(o){console.error(`\u2234 ${o}
3
3
 
4
- ${ee}="${e}"`)}return ae[e]=function(o,n,i){try{let s=r?.call(this,o);return n?s?.then?(s.then(a=>i=n(a)),()=>typeof i=="function"&&i()):n(s):s}catch(s){console.error(`\u2234 ${s}
4
+ ${ee}="${e}"`)}return le[e]=function(o,n,i){try{let s=r?.call(this,o);return n?s?.then?(s.then(a=>i=n(a)),()=>typeof i=="function"&&i()):n(s):s}catch(s){console.error(`\u2234 ${s}
5
5
 
6
- ${ee}="${e}"`)}}},ae={},G=e=>(e.compile&&(ue=e.compile),e.prefix&&(v=e.prefix),e.signal&&(b=e.signal),e.effect&&(W=e.effect),e.computed&&(J=e.computed),e.batch&&(M=e.batch),e.untracked&&(q=e.untracked),e.dir&&(ce=e.dir)),x=(e,r)=>{for(;r.length;){let[t,...o]=r.pop().split("-"),n=C[t],i;if(n&&(i=n(e,...o))!==e){for(let s in e)i[s]??(i[s]=e[s]);e=i}}return e},k=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],o=document.createTextNode(""),n=(r.append(o),[...r.childNodes]);return{childNodes:n,content:r,remove:()=>r.append(...n),replaceWith(i){i!==o&&(o.before(i),r.append(...n))},attributes:t,removeAttribute(i){t.splice(t.findIndex(s=>s.name===i),1)}}},le=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase()),_=(e,r,t)=>t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":t),te=(e,r=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(te):Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[])).join(" "):"",P=(e,r=queueMicrotask)=>{let t=0,o,n=i=>{o=i,t++||(e(o),r((s=t>1)=>(t=0,s&&n(o))))};return n},fe=(e,r=queueMicrotask,t=0)=>(o,n=++t)=>r(()=>n==t&&e(o)),d=tt});var S,N,oe,re,L,rt,Q,de,K,H=p(()=>{m();S=Symbol("signals"),N=Symbol("change"),oe=Symbol("set"),re=!0,L=(e,r)=>{if(!e||e[Symbol.toStringTag]||e[S])return e;if(e.constructor!==Object)return Array.isArray(e)?rt(e):e;let t=Object.keys(e).length,o={},n=new Proxy(Object.assign(o,{[N]:b(t),[S]:o}),{get:(s,a)=>a in o?o[a]?o[a].valueOf():o[a]:r?r[a]:typeof globalThis[a]=="function"&&!globalThis[a].prototype?globalThis[a].bind(globalThis):globalThis[a],set:(s,a,c,u)=>a in o?(de(o,a,c),1):(re=!1,r&&a in r?r[a]=c:(Q(o,a,c),o[N].value=++t),re=!0,1),deleteProperty:(s,a)=>(a in o&&(a[0]!="_"&&o[a]?.[Symbol.dispose]?.(),delete o[a],o[N].value=--t),1),ownKeys:()=>(o[N].value,Reflect.ownKeys(o)),has:(s,a)=>a in o?!0:r?a in r:re}),i=Object.getOwnPropertyDescriptors(e);for(let s in e)i[s]?.get?(o[s]=J(i[s].get.bind(n)))[oe]=i[s].set?.bind(n):Q(o,s,e[s]);return n},rt=(e,r=globalThis)=>{let t=Array(e.length).fill(null),o=!1,n=a=>function(){return o=!0,a.apply(this,arguments)},i=b(e.length),s=new Proxy(Object.assign(t,{[N]:i,[S]:t,push:n(t.push),pop:n(t.pop),shift:n(t.shift),unshift:n(t.unshift),splice:n(t.splice)}),{get(a,c){return c==="length"?o?(o=!1,t.length):i.value:typeof c=="symbol"||isNaN(c)?t[c]?.valueOf()??r[c]:(t[c]??(t[c]=b(L(e[c])))).valueOf()},set(a,c,u){if(c==="length"){for(let y=u;y<t.length;y++)delete s[y];i.value=t.length=u}else c>=t.length?(Q(t,c,u),s.length=+c+1):t[c]?de(t,c,u):Q(t,c,u);return 1},deleteProperty:(a,c)=>(t[c]?.[Symbol.dispose]?.(),delete t[c],1)});return s},Q=(e,r,t)=>e[r]=r[0]=="_"||t?.peek?t:b(L(t)),de=(e,r,t,o,n)=>r[0]==="_"?e[r]=t:t!==(n=(o=e[r]).peek())&&(o[oe]?o[oe](t):Array.isArray(t)&&Array.isArray(n)?N in n?q(()=>M(()=>{for(let i=0;i<t.length;i++)n[i]=t[i];n.length=t.length})):o.value=t:o.value=L(t)),K=L});var ne={};se(ne,{batch:()=>nt,computed:()=>ot,effect:()=>ye,signal:()=>me,untracked:()=>it});var D,pe,I,me,ye,ot,nt,it,ge=p(()=>{pe=0,me=(e,r,t=new Set,o=()=>r.value)=>r={get value(){return D?.deps.add(t.add(D)),e},set value(n){if(n!==e){e=n;for(let i of t)I?I.add(i):i()}},peek(){return e},toJSON:o,toString:o,valueOf:o},ye=(e,r,t,o)=>(t=n=>{let i=r;if(r=null,i?.call?.(),n=D,D=t,pe++>10)throw"Cycle detected";try{r=e()}finally{D=n,pe--}},t.fn=e,o=t.deps=new Set,t(),n=>{r?.call?.();for(n of o)n.delete(t);o.clear()}),ot=(e,r=me(),t,o,n=()=>t.value)=>t={get value(){return o||(o=ye(()=>r.value=e())),r.value},peek:r.peek,toJSON:n,toString:n,valueOf:n},nt=(e,r=!I,t)=>{I??(I=new Set);try{e()}finally{if(r){[I,t]=[null,I];for(let o of t)o()}}},it=(e,r,t)=>(r=D,D=null,t=e(),D=r,t)});var he,be=p(()=>{m();he=(e,r)=>{var i;let t,o,n;return e._holder?d(o=e,r):(e[i=f]??(e[i]=null),o=e.content?k(e):e,e.replaceWith(t=document.createTextNode("")),o._holder=t._holder=t,t._clauses=[o._clause=[o,!1]],t.update=P(()=>{let s=t._clauses.find(([,a])=>a);s!=n&&(n?.[0].remove(),n?.[0][F]?.(),(n=s)&&(t.before(n[0].content||n[0]),n[0][f]?n[0][Z]?.():(delete n[0][f],d(n[0],r))))})),s=>{o._clause[1]=s,o._holder.update()}}});var xe,_e=p(()=>{m();xe=e=>{let r,t=e;for(r=e.content?k(e):e;t&&!(r._holder=t._holder);)t=t.previousSibling;return e.remove(),e[f]=null,r._holder._clauses.push(r._clause=[r,!0]),r._holder.update}});var Se,Ae=p(()=>{m();Se=e=>(e.content&&e.replaceWith(e=k(e).childNodes[0]),r=>(r=typeof r=="function"?r(e.textContent):r,e.textContent=r??""))});var Oe,we=p(()=>{m();Oe=(e,r,t,o)=>{let n=new Set,i;return o.includes(".")&&(e=x({target:e},o.split(".").slice(1)).target??e),s=>{i=new Set,s&&te(typeof s=="function"?s(e.className):s).split(" ").map(a=>a&&i.add(a));for(let a of n)i.has(a)?i.delete(a):e.classList.remove(a);for(let a of n=i)e.classList.add(a)}}});var Ne,je=p(()=>{m();Ne=(e,r,t,o)=>{let n;return o.includes(".")&&(e=x({target:e},o.split(".").slice(1)).target??e),i=>{if(n||(n=e.getAttribute("style")),i=typeof i=="function"?i(e.style):i,typeof i=="string")_(e,"style",n+"; "+i);else{n&&_(e,"style",n);for(let s in i)s[0]=="-"?e.style.setProperty(s,i[s]):s[0]>"A"&&(e.style[s]=i[s])}}}});var Te,ke=p(()=>{Te=()=>e=>typeof e=="function"&&e()});var st,De,$e=p(()=>{m();st=(e,r=g(`${e}=__`))=>(t,o)=>{t.__=o,r(t),delete t.__},De=(e,r,t)=>{try{let o=st(t),n=e.type==="checkbox"?()=>o(r,e.checked):e.type==="select-multiple"?()=>o(r,[...e.selectedOptions].map(i=>i.value)):()=>o(r,e.selectedIndex<0?null:isNaN(e.valueAsNumber)?e.value:e.valueAsNumber);e.oninput=e.onchange=n,e.type?.startsWith("select")&&(new MutationObserver(n).observe(e,{childList:!0,subtree:!0,attributes:!0}),d(e,r)),g(t)(r)??n()}catch{}return e.type==="text"||e.type===""||e.tagName==="TEXTAREA"?(o,n,i)=>(n=e.selectionStart,i=e.selectionEnd,e.setAttribute("value",e.value=o??""),n&&e.setSelectionRange(n,i)):e.type==="checkbox"?o=>(e.checked=o,_(e,"checked",o)):e.type==="radio"?o=>e.value===o&&(e.checked=o,_(e,"checked",o)):e.type==="select-one"?o=>{for(let n of e.options)n.value==o?n.setAttribute("selected",""):n.removeAttribute("selected");e.value=o}:e.type==="select-multiple"?o=>{for(let n of e.options)n.removeAttribute("selected");for(let n of o)e.querySelector(`[value="${n}"]`).setAttribute("selected","")}:o=>e.value=o}});var Ee,qe=p(()=>{m();Ee=(e,r,t)=>{let o=g(t)(r);if(typeof o=="function")return{[Symbol.dispose]:o(e)};Object.defineProperty(r,t,{value:e,configurable:!0})}});var Ce,Pe=p(()=>{m();Ce=(e,r)=>{let t=e[f]=L({},r),o=!1;return n=>{if(n=typeof n=="function"?n(t):n,n!==t)for(let i in n){let s=typeof n[i]=="function"?n[i].bind(t):n[i];i in t[S]?t[i]=s:t[S][i]=i[0]=="_"||s?.peek?s:b(L(s))}return!o&&(o=!0,delete e[f],q(()=>d(e,t)))}}});var Le,We=p(()=>{m();Le=(e,r,t)=>{let[o,n]=t.split(/\bin|of\b/),[i,s="$"]=o.trim().replace(/\(|\)/g,"").split(/\s*,\s*/),a=document.createTextNode(""),c,u,y,j=0,A=P(()=>{var T,h;let l=0,$=y,O=$.length;if(c&&!c[N]){for(let w of c[S]||[])w[Symbol.dispose]();c=null,j=0}if(O<j)c.length=O;else{if(!c)c=$;else for(;l<j;)c[l]=$[l++];for(;l<O;l++){c[l]=$[l];let w=l,Ge=Object.create(r,{[i]:{get:()=>c[w]},[s]:{value:u?u[w]:w}}),V=e.content?k(e):e.cloneNode(!0);a.before(V.content||V),d(V,Ge);let He=((h=c[T=S]||(c[T]=[]))[l]||(h[l]={}))[Symbol.dispose];c[S][l][Symbol.dispose]=()=>{He?.(),V[Symbol.dispose]?.(),V.remove()}}}j=O});return e.replaceWith(a),e[f]=null,Object.assign(l=>(u=null,typeof l=="number"?y=Array.from({length:l},($,O)=>O+1):l?.constructor===Object?(u=Object.keys(l),y=Object.values(l)):y=l||[],W(()=>{y[N]?.value,A()})),{eval:g(n)})}});var Me,Ke=p(()=>{m();Me=(e,r,t,o)=>n=>_(e,o,typeof n=="function"?n(e.getAttribute(o)):n)});var Ie,Re=p(()=>{m();Ie=e=>r=>{for(let t in r)_(e,le(t),r[t])}});var Ve,Fe=p(()=>{m();Ve=(e,r,t,o)=>{let[n,...i]=o.slice(2).split("."),s=g(t).bind(e),a=x(Object.assign(c=>s(r,u=>typeof u=="function"?u(c):u),{target:e}),i);return a.target.addEventListener(n,a,a),{[Symbol.dispose](){a.target.removeEventListener(n,a)}}}});var Je,Be=p(()=>{m();Je=(e,r,t,o)=>{let n,i,s=o.split("..").map((a,c,{length:u})=>a.split(":").reduce((y,j)=>{let[A,...l]=j.slice(2).split("."),$=g(t).bind(e),O=(h,w)=>n=typeof h=="function"?h(w):h,T=x(Object.assign(h=>(c?O(n,h):$(r,w=>O(w,h)),i(),i=s[(c+1)%u]()),{target:e}),l);return h=>(h=y?.(),T.target.addEventListener(A,T,T),()=>(h?.(),T.target.removeEventListener(A,T)))},null));return i=s[0](),{[Symbol.dispose](){i?.()}}}});var Xe={};se(Xe,{batch:()=>M,computed:()=>J,default:()=>ut,effect:()=>W,signal:()=>b,sprae:()=>d,start:()=>ct,store:()=>K,untracked:()=>q,use:()=>G});var at,U,ct,ut,Ze=p(()=>{H();m();ge();m();be();_e();Ae();we();je();ke();$e();qe();Pe();We();Ke();Re();Fe();Be();Object.assign(B,{_:(e,r,t,o)=>(o.startsWith("on")?Ve:Me)(e,r,t,o),"":Ie,class:Oe,text:Se,style:Ne,fx:Te,value:De,ref:Ee,scope:Ce,if:he,else:xe,each:Le});at=(e,r,t,o)=>{let[n,...i]=r.split("."),s=B[n]||B._;return()=>{let a=s(e,o,t,r);if(!a?.call)return a?.[E];let c=x(Object.assign(P(()=>u.value++),{target:e}),i),u=b(0),y=0,j=a.eval??g(t).bind(e),A,l=()=>(typeof A=="function"&&A(),A=null);return o=e[f]??o,W(()=>(u.value==y?c():(y=u.value,A=j(o,a)),l))}};Object.assign(C,{debounce:(e,r)=>fe(e,(r||(r=0),r?r==="raf"?requestAnimationFrame:t=>setTimeout(t,r):void 0)),throttle:(e,r)=>P(e,(r||(r=0),r?r==="raf"?requestAnimationFrame:t=>setTimeout(t,r):void 0)),delay:(e,r)=>r?t=>setTimeout(()=>e(t),r):t=>queueMicrotask(()=>e(t)),tick:e=>(console.warn("Deprecated"),r=>queueMicrotask(()=>e(r))),raf:e=>(console.warn("Deprecated"),r=>requestAnimationFrame(()=>e(r))),once:(e,r,t)=>(t=o=>!r&&(r=1,e(o)),t.once=!0,t),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),away:e=>Object.assign(r=>!e.target.contains(r.target)&&r.target.isConnected&&e(r),{target:e.target.ownerDocument}),prevent:e=>r=>(r?.preventDefault(),e(r)),stop:(e,r)=>t=>(r?.[0]==="i"?t?.stopImmediatePropagation():t?.stopPropagation(),e(t)),immediate:e=>(console.warn("Deprecated"),r=>(r?.stopImmediatePropagation(),e(r))),passive:e=>(e.passive=!0,e),capture:e=>(e.capture=!0,e)});C.outside=C.away;U={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",cmd:e=>e.metaKey||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 U)C[e]=(r,t,o)=>n=>U[e](n)&&(!t||U[t]?.(n))&&(!o||U[o]?.(n))&&r(n);G({compile:e=>d.constructor(`with(arguments[0]){${e}}`),dir:(e,r,t,o)=>r.includes("..")?()=>Je(e,o,t,r)[E]:r.split(":").reduce((n,i)=>{let s=at(e,i,t,o);return n?(a,c)=>(a=n(),c=s(),()=>{a(),c()}):s},null),...ne});d.use=G;d.store=K;d.directive=B;d.modifier=C;ct=d.start=(e=document.body,r)=>{let t=K(r);return d(e,t),new MutationObserver(n=>{for(let i of n)for(let s of i.addedNodes)s.nodeType===1&&s[f]===void 0&&e.contains(s)&&e[z](s)}).observe(e,{childList:!0,subtree:!0}),t};d.version="12.3.5";ut=d});var ie=(Ze(),et(Xe)).default;module.exports=ie;var R=document.currentScript,ze=R.getAttribute("prefix")??R.dataset.prefix??R.dataset.spraePrefix,X=R.getAttribute("start")??R.dataset.start??R.dataset.spraeStart;ze&&ie.use({prefix:ze});X!=null&&X!=="false"&&(X&&X!=="true"?document.querySelectorAll(X):[document.body||document.documentElement]).forEach(e=>ie.start(e));
6
+ ${ee}="${e}"`)}}},le={},ot=e=>{for(let r=0,t=0;t<e.length;t++)if(e[t]=="{")r++;else if(e[t]=="}")r--;else if(e[t]==";"&&!r)return!0;return!1},G=e=>(e.compile&&(fe=e.compile),e.prefix&&(v=e.prefix),e.signal&&(b=e.signal),e.effect&&(W=e.effect),e.computed&&(J=e.computed),e.batch&&(M=e.batch),e.untracked&&(q=e.untracked),e.dir&&(ue=e.dir)),x=(e,r)=>{for(;r.length;){let[t,...o]=r.pop().split("-"),n=C[t],i;if(n&&(i=n(e,...o))!==e){for(let s in e)i[s]??(i[s]=e[s]);e=i}}return e},k=e=>{if(!e.nodeType)return e;let r=e.content.cloneNode(!0),t=[...e.attributes],o=document.createTextNode(""),n=(r.append(o),[...r.childNodes]);return{childNodes:n,content:r,remove:()=>r.append(...n),replaceWith(i){i!==o&&(o.before(i),r.append(...n))},attributes:t,removeAttribute(i){t.splice(t.findIndex(s=>s.name===i),1)}}},de=e=>e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,(r,t)=>(t?"-":"")+r.toLowerCase()),_=(e,r,t)=>t==null||t===!1?e.removeAttribute(r):e.setAttribute(r,t===!0?"":t),te=(e,r=[])=>e?typeof e=="string"?e:(Array.isArray(e)?e.map(te):Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[])).join(" "):"",L=(e,r=queueMicrotask)=>{let t=0,o,n=i=>{o=i,t++||(e(o),r((s=t>1)=>(t=0,s&&n(o))))};return n},pe=(e,r=queueMicrotask,t=0)=>(o,n=++t)=>r(()=>n==t&&e(o)),d=rt});var S,N,oe,re,P,nt,Q,me,K,H=p(()=>{m();S=Symbol("signals"),N=Symbol("change"),oe=Symbol("set"),re=!0,P=(e,r)=>{if(!e||e[Symbol.toStringTag]||e[S])return e;if(e.constructor!==Object)return Array.isArray(e)?nt(e):e;let t=Object.keys(e).length,o={},n=new Proxy(Object.assign(o,{[N]:b(t),[S]:o}),{get:(s,a)=>a in o?o[a]?o[a].valueOf():o[a]:r?r[a]:typeof globalThis[a]=="function"&&!globalThis[a].prototype?globalThis[a].bind(globalThis):globalThis[a],set:(s,a,c,l)=>a in o?(me(o,a,c),1):(re=!1,r&&a in r?r[a]=c:(Q(o,a,c),o[N].value=++t),re=!0,1),deleteProperty:(s,a)=>(a in o&&(a[0]!="_"&&o[a]?.[Symbol.dispose]?.(),delete o[a],o[N].value=--t),1),ownKeys:()=>(o[N].value,Reflect.ownKeys(o)),has:(s,a)=>a in o?!0:r?a in r:re}),i=Object.getOwnPropertyDescriptors(e);for(let s in e)i[s]?.get?(o[s]=J(i[s].get.bind(n)))[oe]=i[s].set?.bind(n):Q(o,s,e[s]);return n},nt=(e,r=globalThis)=>{let t=Array(e.length).fill(null),o=!1,n=a=>function(){return o=!0,a.apply(this,arguments)},i=b(e.length),s=new Proxy(Object.assign(t,{[N]:i,[S]:t,push:n(t.push),pop:n(t.pop),shift:n(t.shift),unshift:n(t.unshift),splice:n(t.splice)}),{get(a,c){return c==="length"?o?(o=!1,t.length):i.value:typeof c=="symbol"||isNaN(c)?t[c]?.valueOf()??r[c]:(t[c]??(t[c]=b(P(e[c])))).valueOf()},set(a,c,l){if(c==="length"){for(let y=l;y<t.length;y++)delete s[y];i.value=t.length=l}else c>=t.length?(Q(t,c,l),s.length=+c+1):t[c]?me(t,c,l):Q(t,c,l);return 1},deleteProperty:(a,c)=>(t[c]?.[Symbol.dispose]?.(),delete t[c],1)});return s},Q=(e,r,t)=>e[r]=r[0]=="_"||t?.peek?t:b(P(t)),me=(e,r,t,o,n)=>r[0]==="_"?e[r]=t:t!==(n=(o=e[r]).peek())&&(o[oe]?o[oe](t):Array.isArray(t)&&Array.isArray(n)?N in n?q(()=>M(()=>{for(let i=0;i<t.length;i++)n[i]=t[i];n.length=t.length})):o.value=t:o.value=P(t)),K=P});var ne={};ce(ne,{batch:()=>st,computed:()=>it,effect:()=>he,signal:()=>ge,untracked:()=>at});var D,ye,I,ge,he,it,st,at,be=p(()=>{ye=0,ge=(e,r,t=new Set,o=()=>r.value)=>r={get value(){return D?.deps.add(t.add(D)),e},set value(n){if(n!==e){e=n;for(let i of t)I?I.add(i):i()}},peek(){return e},toJSON:o,toString:o,valueOf:o},he=(e,r,t,o)=>(t=n=>{let i=r;if(r=null,i?.call?.(),n=D,D=t,ye++>10)throw"Cycle detected";try{r=e()}finally{D=n,ye--}},t.fn=e,o=t.deps=new Set,t(),n=>{r?.call?.();for(n of o)n.delete(t);o.clear()}),it=(e,r=ge(),t,o,n=()=>t.value)=>t={get value(){return o||(o=he(()=>r.value=e())),r.value},peek:r.peek,toJSON:n,toString:n,valueOf:n},st=(e,r=!I,t)=>{I??(I=new Set);try{e()}finally{if(r){[I,t]=[null,I];for(let o of t)o()}}},at=(e,r,t)=>(r=D,D=null,t=e(),D=r,t)});var xe,_e=p(()=>{m();xe=(e,r)=>{var i;let t,o,n;return e._holder?d(o=e,r):(e[i=f]??(e[i]=null),o=e.content?k(e):e,e.replaceWith(t=document.createTextNode("")),o._holder=t._holder=t,t._clauses=[o._clause=[o,!1]],t.update=L(()=>{let s=t._clauses.find(([,a])=>a);s!=n&&(n?.[0].remove(),n?.[0][F]?.(),(n=s)&&(t.before(n[0].content||n[0]),n[0][f]?n[0][Z]?.():(delete n[0][f],d(n[0],r))))})),s=>{o._clause[1]=s,o._holder.update()}}});var Se,Ae=p(()=>{m();Se=e=>{let r,t=e;for(r=e.content?k(e):e;t&&!(r._holder=t._holder);)t=t.previousSibling;return e.remove(),e[f]=null,r._holder._clauses.push(r._clause=[r,!0]),r._holder.update}});var Oe,we=p(()=>{m();Oe=e=>(e.content&&e.replaceWith(e=k(e).childNodes[0]),r=>(r=typeof r=="function"?r(e.textContent):r,e.textContent=r??""))});var Ne,je=p(()=>{m();Ne=(e,r,t,o)=>{let n=new Set,i;return o.includes(".")&&(e=x({target:e},o.split(".").slice(1)).target??e),s=>{i=new Set,s&&te(typeof s=="function"?s(e.className):s).split(" ").map(a=>a&&i.add(a));for(let a of n)i.has(a)?i.delete(a):e.classList.remove(a);for(let a of n=i)e.classList.add(a)}}});var Te,ke=p(()=>{m();Te=(e,r,t,o)=>{let n;return o.includes(".")&&(e=x({target:e},o.split(".").slice(1)).target??e),i=>{if(n||(n=e.getAttribute("style")),i=typeof i=="function"?i(e.style):i,typeof i=="string")_(e,"style",n+"; "+i);else{n&&_(e,"style",n);for(let s in i)s[0]=="-"?e.style.setProperty(s,i[s]):s[0]>"A"&&(e.style[s]=i[s])}}}});var De,$e=p(()=>{De=()=>e=>typeof e=="function"&&e()});var ie,Ee,se=p(()=>{m();ie=(e,r=g(`${e}=__`))=>(t,o)=>{t.__=o,r(t),delete t.__},Ee=(e,r,t)=>{try{let o=ie(t),n=e.type==="checkbox"?()=>o(r,e.checked):e.type==="select-multiple"?()=>o(r,[...e.selectedOptions].map(i=>i.value)):()=>o(r,e.selectedIndex<0?null:isNaN(e.valueAsNumber)?e.value:e.valueAsNumber);e.oninput=e.onchange=n,e.type?.startsWith("select")&&(new MutationObserver(n).observe(e,{childList:!0,subtree:!0,attributes:!0}),d(e,r)),g(t)(r)??n()}catch{}return e.type==="text"||e.type===""||e.tagName==="TEXTAREA"?(o,n,i)=>(n=e.selectionStart,i=e.selectionEnd,e.setAttribute("value",e.value=o??""),n&&e.setSelectionRange(n,i)):e.type==="checkbox"?o=>(e.checked=o,_(e,"checked",o)):e.type==="radio"?o=>e.value===o&&(e.checked=o,_(e,"checked",o)):e.type==="select-one"?o=>{for(let n of e.options)n.value==o?n.setAttribute("selected",""):n.removeAttribute("selected");e.value=o}:e.type==="select-multiple"?o=>{for(let n of e.options)n.removeAttribute("selected");for(let n of o)e.querySelector(`[value="${n}"]`).setAttribute("selected","")}:o=>e.value=o}});var qe,Ce=p(()=>{m();se();qe=(e,r,t)=>{let o=g(t)(r);if(typeof o=="function")return{[Symbol.dispose]:o(e)};ie(t)(r,e)}});var Le,Pe=p(()=>{m();Le=(e,r)=>{let t=e[f]=P({},r),o=!1;return n=>{if(n=typeof n=="function"?n(t):n,n!==t)for(let i in n){let s=typeof n[i]=="function"?n[i].bind(t):n[i];i in t[S]?t[i]=s:t[S][i]=i[0]=="_"||s?.peek?s:b(P(s))}return!o&&(o=!0,delete e[f],q(()=>d(e,t)))}}});var We,Me=p(()=>{m();We=(e,r,t)=>{let[o,n]=t.split(/\bin|of\b/),[i,s="$"]=o.trim().replace(/\(|\)/g,"").split(/\s*,\s*/),a=document.createTextNode(""),c,l,y,j=0,A=L(()=>{var T,h;let u=0,$=y,O=$.length;if(c&&!c[N]){for(let w of c[S]||[])w[Symbol.dispose]();c=null,j=0}if(O<j)c.length=O;else{if(!c)c=$;else for(;u<j;)c[u]=$[u++];for(;u<O;u++){c[u]=$[u];let w=u,He=Object.create(r,{[i]:{get:()=>c[w]},[s]:{value:l?l[w]:w}}),V=e.content?k(e):e.cloneNode(!0);a.before(V.content||V),d(V,He);let Qe=((h=c[T=S]||(c[T]=[]))[u]||(h[u]={}))[Symbol.dispose];c[S][u][Symbol.dispose]=()=>{Qe?.(),V[Symbol.dispose]?.(),V.remove()}}}j=O});return e.replaceWith(a),e[f]=null,Object.assign(u=>(l=null,typeof u=="number"?y=Array.from({length:u},($,O)=>O+1):u?.constructor===Object?(l=Object.keys(u),y=Object.values(u)):y=u||[],W(()=>{y[N]?.value,A()})),{eval:g(n)})}});var Ke,Ie=p(()=>{m();Ke=(e,r,t,o)=>n=>_(e,o,typeof n=="function"?n(e.getAttribute(o)):n)});var Re,Ve=p(()=>{m();Re=e=>r=>{for(let t in r)_(e,de(t),r[t])}});var Fe,Je=p(()=>{m();Fe=(e,r,t,o)=>{let[n,...i]=o.slice(2).split("."),s=g(t).bind(e),a=x(Object.assign(c=>s(r,l=>typeof l=="function"?l(c):l),{target:e}),i);return a.target.addEventListener(n,a,a),{[Symbol.dispose](){a.target.removeEventListener(n,a)}}}});var Be,Xe=p(()=>{m();Be=(e,r,t,o)=>{let n,i,s=o.split("..").map((a,c,{length:l})=>a.split(":").reduce((y,j)=>{let[A,...u]=j.slice(2).split("."),$=g(t).bind(e),O=(h,w)=>n=typeof h=="function"?h(w):h,T=x(Object.assign(h=>(c?O(n,h):$(r,w=>O(w,h)),i(),i=s[(c+1)%l]()),{target:e}),u);return h=>(h=y?.(),T.target.addEventListener(A,T,T),()=>(h?.(),T.target.removeEventListener(A,T)))},null));return i=s[0](),{[Symbol.dispose](){i?.()}}}});var Ze={};ce(Ze,{batch:()=>M,computed:()=>J,default:()=>ut,effect:()=>W,signal:()=>b,sprae:()=>d,start:()=>lt,store:()=>K,untracked:()=>q,use:()=>G});var ct,U,lt,ut,ze=p(()=>{H();m();be();m();_e();Ae();we();je();ke();$e();se();Ce();Pe();Me();Ie();Ve();Je();Xe();Object.assign(B,{_:(e,r,t,o)=>(o.startsWith("on")?Fe:Ke)(e,r,t,o),"":Re,class:Ne,text:Oe,style:Te,fx:De,value:Ee,ref:qe,scope:Le,if:xe,else:Se,each:We});ct=(e,r,t,o)=>{let[n,...i]=r.split("."),s=B[n]||B._;return()=>{let a=s(e,o,t,r);if(!a?.call)return a?.[E];let c=x(Object.assign(L(()=>l.value++),{target:e}),i),l=b(0),y=0,j=a.eval??g(t).bind(e),A,u=()=>(typeof A=="function"&&A(),A=null);return o=e[f]??o,W(()=>(l.value==y?c():(y=l.value,A=j(o,a)),u))}};Object.assign(C,{debounce:(e,r)=>pe(e,(r||(r=0),r?r==="raf"?requestAnimationFrame:t=>setTimeout(t,r):void 0)),throttle:(e,r)=>L(e,(r||(r=0),r?r==="raf"?requestAnimationFrame:t=>setTimeout(t,r):void 0)),delay:(e,r)=>r?t=>setTimeout(()=>e(t),r):t=>queueMicrotask(()=>e(t)),tick:e=>(console.warn("Deprecated"),r=>queueMicrotask(()=>e(r))),raf:e=>(console.warn("Deprecated"),r=>requestAnimationFrame(()=>e(r))),once:(e,r,t)=>(t=o=>!r&&(r=1,e(o)),t.once=!0,t),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),away:e=>Object.assign(r=>!e.target.contains(r.target)&&r.target.isConnected&&e(r),{target:e.target.ownerDocument}),prevent:e=>r=>(r?.preventDefault(),e(r)),stop:(e,r)=>t=>(r?.[0]==="i"?t?.stopImmediatePropagation():t?.stopPropagation(),e(t)),immediate:e=>(console.warn("Deprecated"),r=>(r?.stopImmediatePropagation(),e(r))),passive:e=>(e.passive=!0,e),capture:e=>(e.capture=!0,e)});C.outside=C.away;U={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",cmd:e=>e.metaKey||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 U)C[e]=(r,t,o)=>n=>U[e](n)&&(!t||U[t]?.(n))&&(!o||U[o]?.(n))&&r(n);G({compile:e=>d.constructor(`with(arguments[0]){${e}}`),dir:(e,r,t,o)=>r.includes("..")?()=>Be(e,o,t,r)[E]:r.split(":").reduce((n,i)=>{let s=ct(e,i,t,o);return n?(a,c)=>(a=n(),c=s(),()=>{a(),c()}):s},null),...ne});d.use=G;d.store=K;d.directive=B;d.modifier=C;lt=d.start=(e=document.body,r)=>{let t=K(r);return d(e,t),new MutationObserver(n=>{for(let i of n)for(let s of i.addedNodes)s.nodeType===1&&s[f]===void 0&&e.contains(s)&&e[z](s)}).observe(e,{childList:!0,subtree:!0}),t};d.version="12.3.7";ut=d});var ae=(ze(),tt(Ze)).default;module.exports=ae;var R=document.currentScript,Ge=R.getAttribute("prefix")??R.dataset.prefix??R.dataset.spraePrefix,X=R.getAttribute("start")??R.dataset.start??R.dataset.spraeStart;Ge&&ae.use({prefix:Ge});X!=null&&X!=="false"&&(X&&X!=="true"?document.querySelectorAll(X):[document.body||document.documentElement]).forEach(e=>ae.start(e));
7
7
  ;if (typeof module.exports == "object" && typeof exports == "object") {
8
8
  var __cp = (to, from, except, desc) => {
9
9
  if ((from && typeof from === "object") || typeof from === "function") {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../core.js", "../store.js", "../signal.js", "../directive/if.js", "../directive/else.js", "../directive/text.js", "../directive/class.js", "../directive/style.js", "../directive/fx.js", "../directive/value.js", "../directive/ref.js", "../directive/scope.js", "../directive/each.js", "../directive/_.js", "../directive/spread.js", "../directive/event.js", "../directive/sequence.js", "../sprae.js", "<stdin>"],
4
- "sourcesContent": ["import store, { _change, _signals } from \"./store.js\";\n\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\")),\n _state = Symbol(\"state\"),\n _on = Symbol('on'),\n _off = Symbol('off'),\n _add = Symbol('init');\n\nexport let prefix = ':', signal, effect, computed, batch = (fn) => fn(), untracked = batch;\n\nexport let directive = {}, modifier = {}\n\nlet currentDir = null;\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object|store} [state] - Initial state values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nconst sprae = (el = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], state)\n\n // console.group('sprae', el)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => (!offs && (offs = fx.map(fn => fn())))\n el[_off] = () => (offs?.map(off => off()), offs = null)\n\n // destroy\n el[_dispose] ||= () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null)\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n // we iterate live collection (subsprae can init args)\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n currentDir = name;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae like :each, :if, :scope etc.\n if (_state in el) return\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // for (let i = 0, child; i < (el.childNodes.length); i++) child = el.childNodes[i], child.nodeType == 1 && add(child)\n for (let child of [...el.childNodes]) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n if (el[_state] === undefined) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n// directive initializer\nexport let dir\n\n/**\n * Compiles an expression into an evaluator function.\n * @type {(dir:string, expr: string, clean?: string => string) => Function}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr The expression to parse and compile into a function.\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n let _expr = expr || 'undefined'\n\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(_expr));\n // first-level semicolons - no return\n else if (/^(?:[^{};]|\\{[^}]*\\})*;/.test(_expr));\n else _expr = `return ${_expr}`\n\n // async expression\n if (/\\bawait\\s/.test(_expr)) _expr = `return (async()=>{ ${_expr} })()`\n\n // static time errors\n try {\n fn = compile(_expr)\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then ? (result.then(v => _out = cb(v)), () => typeof _out === 'function' && _out()) : cb(result)\n else return result\n } catch (e) {\n console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`)\n }\n }\n}\nconst cache = {};\n\n\n\n/**\n * Configure sprae\n */\nexport const use = (s) => (\n s.compile && (compile = s.compile),\n s.prefix && (prefix = s.prefix),\n s.signal && (signal = s.signal),\n s.effect && (effect = s.effect),\n s.computed && (computed = s.computed),\n s.batch && (batch = s.batch),\n s.untracked && (untracked = s.untracked),\n s.dir && (dir = s.dir)\n)\n\n// modifier applier\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n // get parentNode() { return childNodes[0].parentNode },\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n // setAttributeNode() { }\n }\n}\n\n// camel to kebab\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n// set attr\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) : el.setAttribute(name, v === true ? \"\" : v);\n\n// convert any-arg to className string\nexport const clsx = (c, _out = []) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => !v ? s : [...s, k], [])\n).join(' ')\n\n// throttle function to (once per tick or other custom scheduler)\nexport const throttle = (fn, schedule = queueMicrotask) => {\n let _planned = 0, arg;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule((_dirty = _planned > 1) => (\n _planned = 0, _dirty && throttled(arg)\n ));\n }\n return throttled;\n}\n\nexport const debounce = (fn, schedule = queueMicrotask, _count = 0) => (arg, _planned = ++_count) => schedule(() => (_planned == _count && fn(arg)))\n\nexport * from './store.js';\n\nexport default sprae\n", "// signals-based proxy\nimport { signal, computed, batch, untracked } from './core.js'\n\n\n// _signals allows both storing signals and checking instance, which would be difficult with WeakMap\nexport const _signals = Symbol('signals'),\n // _change is a signal that tracks changes to the object keys or array length\n _change = Symbol('change'),\n // _set is stashed setter for computed values\n _set = Symbol('set')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n// object store is not lazy\n// parent defines parent scope or sandbox\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals\n }), {\n get: (_, k) => {\n if (k in signals) return (signals[k] ? signals[k].valueOf() : signals[k])\n return parent ? parent[k] : (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v, _s) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n// array store - signals are lazy since arrays can be very large & expensive\nconst list = (values, parent = globalThis) => {\n\n // gotta fill with null since proto methods like .reduce may fail\n let signals = Array(values.length).fill(null),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // create signal (lazy)\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n return (signals[k] ??= signal(store(values[k]))).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v) : create(signals, k, v)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n\n return state\n}\n\n// create signal value, skip untracked\nconst create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n\n// set/update signal value\nconst set = (signals, k, v, _s, _v) => {\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n return k[0] === '_' ? (signals[k] = v) :\n (v !== (_v = (_s = signals[k]).peek())) && (\n // stashed _set for value with getter/setter\n _s[_set] ? _s[_set](v) :\n // patch array\n Array.isArray(v) && Array.isArray(_v) ?\n // if we update plain array (stored in signal) - take over value instead\n // since input value can be store, we have to make sure we don't subscribe to its length or values\n // FIXME: generalize to objects\n _change in _v ?\n untracked(() => batch(() => {\n for (let i = 0; i < v.length; i++) _v[i] = v[i]\n _v.length = v.length // forces deleting tail signals\n })) :\n (_s.value = v) :\n // .x = y\n (_s.value = store(v))\n )\n}\n\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\n// NOTE: we don't need since we force proxy sandbox\n// export const ensure = (state, expr, _name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => _name && (state[_signals][_name[0]] ??= null)\n\nexport default store\n", "// preact-signals minimal implementation\nlet current, depth = 0, batched;\n\n// default signals impl\n\nexport const signal = (v, _s, _obs = new Set, _v = () => _s.value) => (\n _s = {\n get value() {\n current?.deps.add(_obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of _obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\nexport const effect = (fn, _teardown, _fx, _deps) => (\n _fx = (prev) => {\n let tmp = _teardown;\n _teardown = null; // we null _teardown to avoid repeated call in case of recursive update\n tmp?.call?.();\n prev = current, current = _fx\n if (depth++ > 10) throw 'Cycle detected';\n try { _teardown = fn() } finally { current = prev; depth-- }\n },\n _fx.fn = fn,\n _deps = _fx.deps = new Set(),\n\n _fx(),\n (dep) => { _teardown?.call?.(); for (dep of _deps) dep.delete(_fx); _deps.clear() }\n)\n\nexport const computed = (fn, _s = signal(), _c, _e, _v = () => _c.value) => (\n _c = {\n get value() {\n _e ||= effect(() => _s.value = fn());\n return _s.value\n },\n peek: _s.peek,\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\nexport const batch = (fn, _first = !batched, _list) => {\n batched ??= new Set;\n try { fn(); }\n finally { if (_first) { [batched, _list] = [null, batched]; for (const fx of _list) fx(); } }\n}\n\nexport const untracked = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v)\n", "// \"centralized\" version of :if\nimport sprae, { throttle, _on, _off, _state, frag } from '../core.js';\n\n// :if=\"a\"\nexport default (el, state) => {\n let _holder, _el, _match\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n\n el.replaceWith(_holder = document.createTextNode(''))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _match) {\n _match?.[0].remove()\n _match?.[0][_off]?.()\n if (_match = match) {\n _holder.before(_match[0].content || _match[0])\n // there's no :else after :if, so lazy-sprae here doesn't risk adding own destructor to own list of destructors\n !_match[0][_state] ? (delete _match[0][_state], sprae(_match[0], state)) : _match[0][_on]?.()\n }\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n return value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n\n// NOTE: we can reach :else counterpart whereas prev :else :if is on hold\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => (v = typeof v === 'function' ? v(el.textContent) : v, el.textContent = v == null ? \"\" : v)\n)\n", "import { clsx, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _cur = new Set, _new\n\n // redefine target, if modifiers have one\n name.includes('.') && (el = decorate({target:el}, name.split('.').slice(1)).target ?? el)\n\n return (v) => {\n _new = new Set\n if (v) clsx(typeof v === 'function' ? v(el.className) : v).split(' ').map(c => c && _new.add(c))\n for (let c of _cur) if (_new.has(c)) _new.delete(c); else el.classList.remove(c);\n for (let c of _cur = _new) el.classList.add(c)\n }\n}\n", "import { attr, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _static;\n\n // redefine target, if modifiers have one\n if (name.includes('.')) el = decorate({target:el}, name.split('.').slice(1)).target ?? el;\n\n return v => {\n if (!_static) { _static = el.getAttribute(\"style\") }\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static + '; ' + v);\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] > 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "export default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, parse, _state } from \"../core.js\";\n\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n // save value to stash\n target.__ = value; _set(target), delete target.__\n}\n\nexport default (el, state, expr) => {\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber);\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n\n // initial state value - setter has already cached it, so parse is fast\n parse(expr)(state) ?? handleChange()\n } catch { }\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n // we retain selection in input\n (_from = el.selectionStart),\n (_to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.value === value && ((el.checked = value), attr(el, 'checked', value))\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n}\n", "import { parse } from \"../core.js\"\n// import { setter } from \"./value.js\"\n\nexport default (el, state, expr) => {\n let fn = parse(expr)(state)\n\n if (typeof fn == 'function') return {[Symbol.dispose]:fn(el)}\n\n // NOTE: we have to set element statically (outside of effect) to avoid parasitic sub - multiple els with same :ref can cause recursion (eg. :each :ref=\"x\")\n // FIXME: do via (setter(expr)(state, el))\n else Object.defineProperty(state, expr, { value: el, configurable: true })\n}\n", "import sprae, { store, untracked, _state, _signals, signal } from '../core.js'\n\nexport default (el, rootState) => {\n // 0 run pre-creates state to provide scope for the first effect - it can write vars in it, so we should already have it\n // el[_state] even replaces own :scope effect state\n let state = el[_state] = store({}, rootState), init = false;\n\n // 1st run spraes subtree with values from scope, it can be postponed by modifiers (we isolate reads from parent effect)\n // 2nd+ runs update subscope\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n // we bind to subscope to alleviate friction using scope method directly\n // also returned props should force-create signals in subscope, not overwriting parent\n if (values !== state) {\n for (let k in values) {\n // _add forces new prop, instead of checking parent\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n // update\n if (k in state[_signals]) state[k] = v\n // create\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n // Object.assign(subscope, call(values, subscope))\n return !init && (init = true, delete el[_state], untracked(() => sprae(el, state)))\n }\n}\n", "import sprae, { store, parse, _state, effect, _change, _signals, frag, throttle, debounce } from \"../core.js\";\n\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/);\n\n // we need :if to be able to replace holder instead of tpl for :if :each case\n let holder = document.createTextNode(\"\");\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n // FIXME: pass items to update instead of global\n let update = throttle(() => {\n let i = 0, newItems = items, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]()\n cur = null, prevl = 0\n }\n\n\n // delete\n if (newl < prevl) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n\n let idx = i,\n // inherited state must be cheaper in terms of memory and faster in terms of performance, compared to creating a proxy store\n // subscope = store({\n // // NOTE: since we simulate signal, we have to make sure it's actual signal, not fake one\n // // FIXME: try to avoid this, we also have issue with wrongly calling dispose in store on delete\n // [itemVar]: cur[_signals]?.[idx]?.peek ? cur[_signals]?.[idx] : cur[idx],\n // [idxVar]: keys ? keys[idx] : idx\n // }, state)\n subscope = Object.create(state, {\n [itemVar]: { get: () => cur[idx] },\n [idxVar]: { value: keys ? keys[idx] : idx }\n })\n\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, subscope);\n\n // signal/holder disposal removes element\n let _prev = ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose]\n cur[_signals][i][Symbol.dispose] = () => {\n _prev?.(), el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n\n tpl.replaceWith(holder);\n tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n return Object.assign(value => {\n // resolve new items\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact signals unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n update()\n })\n }, {eval:parse(rhs)})\n}\n", "import { attr } from \"../core.js\";\n\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase } from \"../core.js\";\n\nexport default (target) => value => { for (let key in value) attr(target, dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n }\n }\n}\n", "// events directive with enabled aliases and sequences like :onclick.ctrl.once..keyup.enter\nimport { _dispose, parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, names) => {\n let cur, // current step callback\n off // current step disposal\n\n let steps = names.split('..').map((step, i, { length }) => step.split(':').reduce(\n (prev, str) => {\n const [name, ...mods] = str.slice(2).split('.')\n\n const evaluate = parse(expr).bind(el)\n\n const next = (fn, e) => cur = typeof fn === 'function' ? fn(e) : fn\n const trigger = decorate(Object.assign(\n e => (!i ? evaluate(state, (fn) => next(fn, e)) : next(cur, e), off(), off = steps[(i + 1) % length]()),\n { target: el }\n ), mods)\n\n\n return (_poff) => (\n _poff = prev?.(),\n trigger.target.addEventListener(name, trigger, trigger),\n () => (_poff?.(), trigger.target.removeEventListener(name, trigger))\n )\n }, null)\n )\n\n off = steps[0]()\n\n return {\n [Symbol.dispose]() {\n off?.()\n }\n }\n}\n", "import store from \"./store.js\";\nimport { batch, computed, effect, signal, untracked } from './core.js';\nimport * as signals from './signal.js';\nimport sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add } from './core.js';\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\nimport _seq from \"./directive/sequence.js\";\n\n\nObject.assign(directive, {\n _: (el, state, expr, name) => (name.startsWith('on') ? _event : _default)(el, state, expr, name),\n '': _spread,\n class: _class,\n text: _text,\n style: _style,\n fx: _fx,\n value: _value,\n ref: _ref,\n scope: _scope,\n if: _if,\n else: _else,\n each: _each\n})\n\n\n/**\n * Directive initializer (with modifiers support)\n * @type {(el: HTMLElement, name:string, value:string, state:Object) => Function}\n * */\nconst dir = (target, name, expr, state) => {\n let [dirName, ...mods] = name.split('.'), create = directive[dirName] || directive._\n\n return () => {\n let update = create(target, state, expr, name)\n\n if (!update?.call) return update?.[_dispose]\n\n // throttle prevents multiple updates within one tick as well as isolates stack for each update\n let trigger = decorate(Object.assign(throttle(() => change.value++), { target }), mods),\n change = signal(0), // signal authorized to trigger effect: 0 = init; >0 = trigger\n count = 0, // called effect count\n evaluate = update.eval ?? parse(expr).bind(target),\n _out, out = () => (typeof _out === 'function' && _out(), _out=null) // effect trigger and invoke may happen in the same tick, so it will be effect-within-effect call - we need to store output of evaluate to return from trigger effect\n\n state = target[_state] ?? state\n\n return effect(() => (\n // if planned count is same as actual count - plan new update, else update right away\n change.value == count ? (trigger()) : (count = change.value, _out = evaluate(state, update)),\n out\n ))\n }\n}\n\nObject.assign(modifier, {\n // timing (lodash-like)\n // FIXME: add immediate param\n debounce: (fn, _how) => debounce(fn, (_how ||= 0, !_how ? undefined : _how === 'raf' ? requestAnimationFrame : (fn) => setTimeout(fn, _how))),\n throttle: (fn, _how) => throttle(fn, (_how ||= 0, !_how ? undefined : _how === 'raf' ? requestAnimationFrame : (fn) => setTimeout(fn, _how))),\n delay: (fn, ms) => !ms ? (e) => (queueMicrotask(() => fn(e))) : (e) => setTimeout(() => fn(e), ms),\n\n tick: (fn) => (console.warn('Deprecated'), (e) => (queueMicrotask(() => fn(e)))),\n raf: (fn) => (console.warn('Deprecated'), (e) => requestAnimationFrame(() => fn(e))),\n\n once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),\n\n // target\n window: fn => (fn.target = fn.target.ownerDocument.defaultView, fn),\n document: fn => (fn.target = fn.target.ownerDocument, fn),\n root: fn => (fn.target = fn.target.ownerDocument.documentElement, fn),\n body: fn => (fn.target = fn.target.ownerDocument.body, fn),\n parent: fn => (fn.target = fn.target.parentNode, fn),\n self: (fn) => (e) => (e.target === fn.target && fn(e)),\n away: (fn) => Object.assign((e) => (!fn.target.contains(e.target) && e.target.isConnected && fn(e)), {target: fn.target.ownerDocument}),\n\n // events\n prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),\n stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),\n immediate: (fn) => (console.warn('Deprecated'), (e) => (e?.stopImmediatePropagation(), fn(e))),\n passive: fn => (fn.passive = true, fn),\n capture: fn => (fn.capture = true, fn),\n})\nmodifier.outside = modifier.away\n\n// key testers\nconst keys = {\n ctrl: e => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: e => e.shiftKey || e.key === \"Shift\",\n alt: e => e.altKey || e.key === \"Alt\",\n meta: e => e.metaKey || e.key === \"Meta\",\n cmd: e => e.metaKey || e.key === \"Command\",\n arrow: e => e.key.startsWith(\"Arrow\"),\n enter: e => e.key === \"Enter\",\n esc: e => e.key.startsWith(\"Esc\"),\n tab: e => e.key === \"Tab\",\n space: e => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: e => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: e => /^\\d$/.test(e.key),\n letter: e => /^\\p{L}$/gu.test(e.key),\n char: e => /^\\S$/.test(e.key),\n};\n\n// augment modifiers with key testers\nfor (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keys[a]?.(e)) && (!b || keys[b]?.(e)) && fn(e)\n\n\nuse({\n compile: expr => sprae.constructor(`with(arguments[0]){${expr}}`),\n dir: (el, name, expr, state) => {\n // sequences shortcut\n if (name.includes('..')) return () => _seq(el, state, expr, name)[_dispose]\n return name.split(':').reduce((prev, str) => {\n let start = dir(el, str, expr, state)\n return !prev ? start : (p, s) => (p = prev(), s = start(), () => { p(); s() })\n }, null)\n },\n ...signals\n})\n\n\n// expose for runtime config\nsprae.use = use\nsprae.store = store\nsprae.directive = directive\nsprae.modifier = modifier\n\n\n/**\n * Lifecycle hanger: spraes automatically any new nodes\n */\nconst start = sprae.start = (root = document.body, values) => {\n const state = store(values)\n sprae(root, state);\n const mo = new MutationObserver(mutations => {\n for (const m of mutations) {\n for (const el of m.addedNodes) {\n // el can be spraed or removed by subsprae (like within :each/:if)\n if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {\n // even if element has no spraeable attrs, some of its children can have\n root[_add](el)\n // sprae(el, state, root);\n }\n }\n // for (const el of m.removedNodes) el[Symbol.dispose]?.()\n }\n });\n mo.observe(root, { childList: true, subtree: true });\n return state\n}\n\n\n// version placeholder for bundler\nsprae.version = \"12.3.5\"\n\nexport default sprae\nexport { sprae, store, signal, effect, computed, batch, untracked, start, use }\n", "var sprae = require(\"./sprae.js\").default; module.exports = sprae; var cur = document.currentScript;\nvar prefix = cur.getAttribute(\"prefix\") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;\nvar start = cur.getAttribute(\"start\") ?? cur.dataset.start ?? cur.dataset.spraeStart;\nif (prefix) sprae.use({ prefix });\nif (start != null && start !== 'false') (start && start !== 'true' ? document.querySelectorAll(start) : [document.body || document.documentElement]).forEach(el => sprae.start(el))"],
5
- "mappings": "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",
6
- "names": ["_dispose", "_state", "_on", "_off", "_add", "prefix", "signal", "effect", "computed", "batch", "untracked", "directive", "modifier", "currentDir", "sprae", "dir", "compile", "parse", "cache", "use", "decorate", "frag", "dashcase", "attr", "clsx", "throttle", "debounce", "core_default", "init_core", "__esmMin", "init_store", "fn", "el", "state", "store_default", "fx", "offs", "off", "add", "_attrs", "start", "i", "name", "value", "child", "expr", "_expr", "e", "cb", "_out", "result", "v", "s", "mods", "params", "mod", "wrapFn", "k", "tpl", "content", "attributes", "ref", "childNodes", "a", "str", "match", "c", "schedule", "_planned", "arg", "throttled", "_dirty", "_count", "_signals", "_change", "_set", "sandbox", "store", "list", "create", "set", "store_default", "init_store", "__esmMin", "init_core", "values", "parent", "keyCount", "signals", "state", "signal", "_", "k", "v", "_s", "descs", "computed", "isMut", "mut", "fn", "length", "i", "_v", "untracked", "batch", "signal_exports", "__export", "batch", "computed", "effect", "signal", "untracked", "current", "depth", "batched", "init_signal", "__esmMin", "v", "_s", "_obs", "_v", "val", "sub", "fn", "_teardown", "_fx", "_deps", "prev", "tmp", "dep", "_c", "_e", "_first", "_list", "fx", "_prev", "if_default", "init_if", "__esmMin", "init_core", "el", "state", "_a", "_holder", "_el", "_match", "core_default", "_state", "frag", "throttle", "match", "s", "_off", "_on", "value", "else_default", "init_else", "__esmMin", "init_core", "el", "_el", "_prev", "frag", "_state", "text_default", "init_text", "__esmMin", "init_core", "el", "frag", "v", "class_default", "init_class", "__esmMin", "init_core", "el", "st", "ex", "name", "_cur", "_new", "decorate", "v", "clsx", "c", "style_default", "init_style", "__esmMin", "init_core", "el", "st", "ex", "name", "_static", "decorate", "v", "attr", "k", "fx_default", "init_fx", "__esmMin", "fn", "setter", "value_default", "init_value", "__esmMin", "init_core", "expr", "_set", "parse", "target", "value", "el", "state", "set", "handleChange", "o", "core_default", "_from", "_to", "attr", "v", "ref_default", "init_ref", "__esmMin", "init_core", "el", "state", "expr", "fn", "parse", "scope_default", "init_scope", "__esmMin", "init_core", "el", "rootState", "state", "_state", "store", "init", "values", "k", "v", "_signals", "signal", "untracked", "core_default", "each_default", "init_each", "__esmMin", "init_core", "tpl", "state", "expr", "lhs", "rhs", "itemVar", "idxVar", "holder", "cur", "keys", "items", "prevl", "update", "throttle", "_a", "_b", "i", "newItems", "newl", "_change", "s", "_signals", "idx", "subscope", "el", "frag", "core_default", "_prev", "_state", "value", "_", "effect", "parse", "__default", "init__", "__esmMin", "init_core", "el", "st", "ex", "name", "v", "attr", "spread_default", "init_spread", "__esmMin", "init_core", "target", "value", "key", "attr", "dashcase", "event_default", "init_event", "__esmMin", "init_core", "el", "state", "expr", "name", "type", "mods", "evaluate", "parse", "trigger", "decorate", "e", "fn", "sequence_default", "init_sequence", "__esmMin", "init_core", "el", "state", "expr", "names", "cur", "off", "steps", "step", "i", "length", "prev", "str", "name", "mods", "evaluate", "parse", "next", "fn", "e", "trigger", "decorate", "_poff", "sprae_exports", "__export", "batch", "computed", "sprae_default", "effect", "signal", "core_default", "start", "store_default", "untracked", "use", "dir", "keys", "init_sprae", "__esmMin", "init_store", "init_core", "init_signal", "init_if", "init_else", "init_text", "init_class", "init_style", "init_fx", "init_value", "init_ref", "init_scope", "init_each", "init__", "init_spread", "init_event", "init_sequence", "directive", "el", "state", "expr", "name", "event_default", "__default", "spread_default", "class_default", "text_default", "style_default", "fx_default", "value_default", "ref_default", "scope_default", "if_default", "else_default", "each_default", "target", "dirName", "mods", "create", "update", "_dispose", "trigger", "decorate", "throttle", "change", "count", "evaluate", "parse", "_out", "out", "_state", "modifier", "fn", "_how", "debounce", "ms", "e", "_done", "_fn", "k", "a", "b", "sequence_default", "prev", "str", "p", "s", "signal_exports", "root", "values", "mutations", "m", "_add", "sprae", "cur", "prefix", "start", "el"]
4
+ "sourcesContent": ["import store, { _change, _signals } from \"./store.js\";\n\nexport const _dispose = (Symbol.dispose ||= Symbol(\"dispose\")),\n _state = Symbol(\"state\"),\n _on = Symbol('on'),\n _off = Symbol('off'),\n _add = Symbol('init');\n\nexport let prefix = ':', signal, effect, computed, batch = (fn) => fn(), untracked = batch;\n\nexport let directive = {}, modifier = {}\n\nlet currentDir = null;\n\n/**\n * Applies directives to an HTML element and manages its reactive state.\n *\n * @param {Element} [el=document.body] - The target HTML element to apply directives to.\n * @param {Object|store} [state] - Initial state values to populate the element's reactive state.\n * @returns {Object} The reactive state object associated with the element.\n */\nconst sprae = (el = document.body, state) => {\n // repeated call can be caused by eg. :each with new objects with old keys\n if (el[_state]) return Object.assign(el[_state], state)\n\n // console.group('sprae', el)\n\n // take over existing state instead of creating a clone\n state = store(state || {})\n\n let fx = [], offs = []\n\n // on/off all effects\n // we don't call prevOn as convention: everything defined before :else :if won't be disabled by :if\n // imagine <x :onx=\"...\" :if=\"...\"/> - when :if is false, it disables directives after :if (calls _off) but ignores :onx\n el[_on] = () => (!offs && (offs = fx.map(fn => fn())))\n el[_off] = () => (offs?.map(off => off()), offs = null)\n\n // destroy\n el[_dispose] ||= () => (el[_off](), el[_off] = el[_on] = el[_dispose] = el[_add] = el[_state] = null)\n\n const add = el[_add] = (el) => {\n let _attrs = el.attributes, start;\n\n // we iterate live collection (subsprae can init args)\n if (_attrs) for (let i = 0; i < _attrs.length;) {\n let { name, value } = _attrs[i]\n\n if (name.startsWith(prefix)) {\n el.removeAttribute(name)\n\n currentDir = name;\n\n // directive initializer can be redefined\n fx.push(start = dir(el, name.slice(prefix.length), value, state)), offs.push(start())\n\n // stop after subsprae like :each, :if, :scope etc.\n if (_state in el) return\n } else i++\n }\n\n // :if and :each replace element with text node, which tweaks .children length, but .childNodes length persists\n // for (let i = 0, child; i < (el.childNodes.length); i++) child = el.childNodes[i], child.nodeType == 1 && add(child)\n for (let child of [...el.childNodes]) child.nodeType == 1 && add(child)\n };\n\n add(el);\n\n // if element was spraed by inline :with/:if/:each/etc instruction (meaning it has state placeholder) - skip, otherwise save _state\n if (el[_state] === undefined) el[_state] = state\n\n // console.groupEnd()\n\n return state;\n}\n\n// directive initializer\nexport let dir\n\n/**\n * Compiles an expression into an evaluator function.\n * @type {(dir:string, expr: string, clean?: string => string) => Function}\n */\nexport let compile\n\n/**\n * Parses an expression into an evaluator function, caching the result for reuse.\n *\n * @param {string} expr The expression to parse and compile into a function.\n * @returns {Function} The compiled evaluator function for the expression.\n */\nexport const parse = (expr) => {\n let fn = cache[expr=expr.trim()]\n if (fn) return fn\n\n let _expr = expr || 'undefined'\n\n // if, const, let - no return\n if (/^(if|let|const)\\b/.test(_expr));\n // first-level semicolons - no return\n else if (hasSemi(_expr));\n else _expr = `return ${_expr}`\n\n // async expression\n if (/\\bawait\\s/.test(_expr)) _expr = `return (async()=>{ ${_expr} })()`\n\n // static time errors\n try {\n fn = compile(_expr)\n // Object.defineProperty(fn, \"name\", { value: `\u2234 ${expr}` })\n } catch (e) { console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`) }\n\n // run time errors\n return cache[expr] = function (state, cb, _out) {\n try {\n let result = fn?.call(this, state)\n // if cb is given (to handle async/await exprs, usually directive update) - call it with result and return a cleanup function\n if (cb) return result?.then ? (result.then(v => _out = cb(v)), () => typeof _out === 'function' && _out()) : cb(result)\n else return result\n } catch (e) {\n console.error(`\u2234 ${e}\\n\\n${currentDir}=\"${expr}\"`)\n }\n }\n}\nconst cache = {};\n\nconst hasSemi = s => {\n for (let d=0,i=0;i<s.length;i++) {\n if (s[i]=='{') d++\n else if (s[i]=='}') d--\n else if (s[i]==';' && !d) return true\n }\n return false\n}\n\n\n/**\n * Configure sprae\n */\nexport const use = (s) => (\n s.compile && (compile = s.compile),\n s.prefix && (prefix = s.prefix),\n s.signal && (signal = s.signal),\n s.effect && (effect = s.effect),\n s.computed && (computed = s.computed),\n s.batch && (batch = s.batch),\n s.untracked && (untracked = s.untracked),\n s.dir && (dir = s.dir)\n)\n\n// modifier applier\nexport const decorate = (fn, mods) => {\n while (mods.length) {\n let [name, ...params] = mods.pop().split('-'), mod = modifier[name], wrapFn\n if (mod) {\n if ((wrapFn = mod(fn, ...params)) !== fn) {\n for (let k in fn) wrapFn[k] ??= fn[k];\n fn = wrapFn\n }\n }\n }\n return fn\n}\n\n// instantiated <template> fragment holder, like persisting fragment but with minimal API surface\nexport const frag = (tpl) => {\n if (!tpl.nodeType) return tpl // existing tpl\n\n let content = tpl.content.cloneNode(true), // document fragment holder of content\n attributes = [...tpl.attributes],\n ref = document.createTextNode(''),\n // ensure at least one node\n childNodes = (content.append(ref), [...content.childNodes])\n\n return {\n // get parentNode() { return childNodes[0].parentNode },\n childNodes,\n content,\n remove: () => content.append(...childNodes),\n replaceWith(el) {\n if (el === ref) return\n ref.before(el)\n content.append(...childNodes)\n },\n attributes,\n removeAttribute(name) { attributes.splice(attributes.findIndex(a => a.name === name), 1) },\n // setAttributeNode() { }\n }\n}\n\n// camel to kebab\nexport const dashcase = (str) => str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match, i) => (i ? '-' : '') + match.toLowerCase());\n\n// set attr\nexport const attr = (el, name, v) => (v == null || v === false) ? el.removeAttribute(name) : el.setAttribute(name, v === true ? \"\" : v);\n\n// convert any-arg to className string\nexport const clsx = (c, _out = []) => !c ? '' : typeof c === 'string' ? c : (\n Array.isArray(c) ? c.map(clsx) :\n Object.entries(c).reduce((s, [k, v]) => !v ? s : [...s, k], [])\n).join(' ')\n\n// throttle function to (once per tick or other custom scheduler)\nexport const throttle = (fn, schedule = queueMicrotask) => {\n let _planned = 0, arg;\n const throttled = (e) => {\n arg = e\n if (!_planned++) fn(arg), schedule((_dirty = _planned > 1) => (\n _planned = 0, _dirty && throttled(arg)\n ));\n }\n return throttled;\n}\n\nexport const debounce = (fn, schedule = queueMicrotask, _count = 0) => (arg, _planned = ++_count) => schedule(() => (_planned == _count && fn(arg)))\n\nexport * from './store.js';\n\nexport default sprae\n", "// signals-based proxy\nimport { signal, computed, batch, untracked } from './core.js'\n\n\n// _signals allows both storing signals and checking instance, which would be difficult with WeakMap\nexport const _signals = Symbol('signals'),\n // _change is a signal that tracks changes to the object keys or array length\n _change = Symbol('change'),\n // _set is stashed setter for computed values\n _set = Symbol('set')\n\n// a hack to simulate sandbox for `with` in evaluator\nlet sandbox = true\n\n// object store is not lazy\n// parent defines parent scope or sandbox\nexport const store = (values, parent) => {\n if (!values) return values\n\n // ignore globals\n // FIXME: handle via has trap\n if (values[Symbol.toStringTag]) return values;\n\n // bypass existing store\n if (values[_signals]) return values\n\n // non-objects: for array redirect to list\n if (values.constructor !== Object) return Array.isArray(values) ? list(values) : values\n\n // _change stores total number of keys to track new props\n let keyCount = Object.keys(values).length,\n signals = {}\n\n // proxy conducts prop access to signals\n let state = new Proxy(Object.assign(signals, {\n [_change]: signal(keyCount),\n [_signals]: signals\n }), {\n get: (_, k) => {\n if (k in signals) return (signals[k] ? signals[k].valueOf() : signals[k])\n return parent ? parent[k] : (typeof globalThis[k] === 'function' && !globalThis[k].prototype ? globalThis[k].bind(globalThis) : globalThis[k])\n },\n\n set: (_, k, v, _s) => {\n // console.group('SET', k, v)\n if (k in signals) return set(signals, k, v), 1\n\n // turn off sandbox to check if parents have the prop - we don't want to create new prop in global scope\n sandbox = false\n\n // write transparency for parent scope, unlike prototype chain\n // if prop is defined in parent scope (except global) - write there\n if (parent && k in parent) {\n parent[k] = v\n }\n // else create in current scope\n else {\n create(signals, k, v)\n signals[_change].value = ++keyCount\n }\n\n sandbox = true\n\n // console.groupEnd()\n // bump length for new signal\n return 1\n },\n\n // FIXME: try to avild calling Symbol.dispose here. Maybe _delete method?\n deleteProperty: (_, k) => {\n k in signals && (k[0] != '_' && signals[k]?.[Symbol.dispose]?.(), delete signals[k], signals[_change].value = --keyCount)\n return 1\n },\n\n // subscribe to length when spreading\n ownKeys: () => (signals[_change].value, Reflect.ownKeys(signals)),\n\n // sandbox prevents writing to global\n has: (_, k) => {\n if (k in signals) return true\n if (parent) return k in parent\n return sandbox\n }\n })\n\n // init signals for values\n const descs = Object.getOwnPropertyDescriptors(values)\n\n for (let k in values) {\n // getter turns into computed\n if (descs[k]?.get)\n // stash setter\n (signals[k] = computed(descs[k].get.bind(state)))[_set] = descs[k].set?.bind(state);\n\n // init blank signal - make sure we don't take prototype one\n else create(signals, k, values[k])\n }\n\n return state\n}\n\n// array store - signals are lazy since arrays can be very large & expensive\nconst list = (values, parent = globalThis) => {\n\n // gotta fill with null since proto methods like .reduce may fail\n let signals = Array(values.length).fill(null),\n\n // if .length was accessed from mutator (.push/etc) method\n isMut = false,\n\n // since array mutator methods read .length internally only once, we disable it on the moment of call, allowing rest of operations to be reactive\n mut = fn => function () { isMut = true; return fn.apply(this, arguments); },\n\n length = signal(values.length),\n\n // proxy passes prop access to signals\n state = new Proxy(\n Object.assign(signals, {\n [_change]: length,\n [_signals]: signals,\n // patch mutators\n push: mut(signals.push),\n pop: mut(signals.pop),\n shift: mut(signals.shift),\n unshift: mut(signals.unshift),\n splice: mut(signals.splice),\n }),\n {\n get(_, k) {\n // console.log('GET', k, isMut)\n\n // if .length is read within mutators - peek signal to avoid recursive subscription\n // we need to ignore it only once and keep for the rest of the mutator call\n if (k === 'length') return isMut ? (isMut = false, signals.length) : length.value;\n\n // non-numeric\n if (typeof k === 'symbol' || isNaN(k)) return signals[k]?.valueOf() ?? parent[k];\n\n // create signal (lazy)\n // NOTE: if you decide to unlazy values, think about large arrays - init upfront can be costly\n return (signals[k] ??= signal(store(values[k]))).valueOf()\n },\n\n set(_, k, v) {\n // console.log('SET', k, v)\n\n // .length\n if (k === 'length') {\n // force cleaning up tail\n for (let i = v; i < signals.length; i++) delete state[i]\n // .length = N directly\n length.value = signals.length = v;\n }\n\n // force changing length, if eg. a=[]; a[1]=1 - need to come after setting the item\n else if (k >= signals.length) create(signals, k, v), state.length = +k + 1\n\n // existing signal\n else signals[k] ? set(signals, k, v) : create(signals, k, v)\n\n return 1\n },\n\n // dispose notifies any signal deps, like :each\n deleteProperty: (_, k) => (signals[k]?.[Symbol.dispose]?.(), delete signals[k], 1),\n })\n\n return state\n}\n\n// create signal value, skip untracked\nconst create = (signals, k, v) => (signals[k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n\n// set/update signal value\nconst set = (signals, k, v, _s, _v) => {\n // skip unchanged (although can be handled by last condition - we skip a few checks this way)\n return k[0] === '_' ? (signals[k] = v) :\n (v !== (_v = (_s = signals[k]).peek())) && (\n // stashed _set for value with getter/setter\n _s[_set] ? _s[_set](v) :\n // patch array\n Array.isArray(v) && Array.isArray(_v) ?\n // if we update plain array (stored in signal) - take over value instead\n // since input value can be store, we have to make sure we don't subscribe to its length or values\n // FIXME: generalize to objects\n _change in _v ?\n untracked(() => batch(() => {\n for (let i = 0; i < v.length; i++) _v[i] = v[i]\n _v.length = v.length // forces deleting tail signals\n })) :\n (_s.value = v) :\n // .x = y\n (_s.value = store(v))\n )\n}\n\n\n// make sure state contains first element of path, eg. `a` from `a.b[c]`\n// NOTE: we don't need since we force proxy sandbox\n// export const ensure = (state, expr, _name = expr.match(/^\\w+(?=\\s*(?:\\.|\\[|$))/)) => _name && (state[_signals][_name[0]] ??= null)\n\nexport default store\n", "// preact-signals minimal implementation\nlet current, depth = 0, batched;\n\n// default signals impl\n\nexport const signal = (v, _s, _obs = new Set, _v = () => _s.value) => (\n _s = {\n get value() {\n current?.deps.add(_obs.add(current));\n return v\n },\n set value(val) {\n if (val === v) return\n v = val;\n for (let sub of _obs) batched ? batched.add(sub) : sub(); // notify effects\n },\n peek() { return v },\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\nexport const effect = (fn, _teardown, _fx, _deps) => (\n _fx = (prev) => {\n let tmp = _teardown;\n _teardown = null; // we null _teardown to avoid repeated call in case of recursive update\n tmp?.call?.();\n prev = current, current = _fx\n if (depth++ > 10) throw 'Cycle detected';\n try { _teardown = fn() } finally { current = prev; depth-- }\n },\n _fx.fn = fn,\n _deps = _fx.deps = new Set(),\n\n _fx(),\n (dep) => { _teardown?.call?.(); for (dep of _deps) dep.delete(_fx); _deps.clear() }\n)\n\nexport const computed = (fn, _s = signal(), _c, _e, _v = () => _c.value) => (\n _c = {\n get value() {\n _e ||= effect(() => _s.value = fn());\n return _s.value\n },\n peek: _s.peek,\n toJSON: _v, toString: _v, valueOf: _v\n }\n)\n\nexport const batch = (fn, _first = !batched, _list) => {\n batched ??= new Set;\n try { fn(); }\n finally { if (_first) { [batched, _list] = [null, batched]; for (const fx of _list) fx(); } }\n}\n\nexport const untracked = (fn, _prev, _v) => (_prev = current, current = null, _v = fn(), current = _prev, _v)\n", "// \"centralized\" version of :if\nimport sprae, { throttle, _on, _off, _state, frag } from '../core.js';\n\n// :if=\"a\"\nexport default (el, state) => {\n let _holder, _el, _match\n\n // new element :if\n if (!el._holder) {\n // mark el as fake-spraed to delay init, since we sprae rest when branch matches, both :if and :else :if\n el[_state] ??= null\n\n _el = el.content ? frag(el) : el\n\n el.replaceWith(_holder = document.createTextNode(''))\n _el._holder = _holder._holder = _holder\n\n\n _holder._clauses = [_el._clause = [_el, false]]\n\n _holder.update = throttle(() => {\n let match = _holder._clauses.find(([, s]) => s)\n\n if (match != _match) {\n _match?.[0].remove()\n _match?.[0][_off]?.()\n if (_match = match) {\n _holder.before(_match[0].content || _match[0])\n // there's no :else after :if, so lazy-sprae here doesn't risk adding own destructor to own list of destructors\n !_match[0][_state] ? (delete _match[0][_state], sprae(_match[0], state)) : _match[0][_on]?.()\n }\n }\n })\n }\n // :else :if needs to be spraed all over to have clean list of offable effects\n else sprae(_el = el, state)\n\n // :else may have children to init which is called after :if\n // or preact can schedule :else after :if, so we ensure order of call by next tick\n return value => {\n _el._clause[1] = value\n _el._holder.update()\n }\n}\n", "import { _on, _off, _state, frag } from '../core.js';\n\n\n// NOTE: we can reach :else counterpart whereas prev :else :if is on hold\nexport default (el) => {\n let _el, _prev = el\n\n _el = el.content ? frag(el) : el\n\n // find holder\n while (_prev && !(_el._holder = _prev._holder)) _prev = _prev.previousSibling\n\n el.remove()\n el[_state] = null // mark as fake-spraed to stop further init, to lazy-sprae when branch matches\n\n _el._holder._clauses.push(_el._clause = [_el, true])\n\n return _el._holder.update\n}\n", "import { frag } from \"../core.js\"\n\nexport default el => (\n // <template :text=\"a\"/> or previously initialized template\n el.content && el.replaceWith(el = frag(el).childNodes[0]),\n v => (v = typeof v === 'function' ? v(el.textContent) : v, el.textContent = v == null ? \"\" : v)\n)\n", "import { clsx, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _cur = new Set, _new\n\n // redefine target, if modifiers have one\n name.includes('.') && (el = decorate({target:el}, name.split('.').slice(1)).target ?? el)\n\n return (v) => {\n _new = new Set\n if (v) clsx(typeof v === 'function' ? v(el.className) : v).split(' ').map(c => c && _new.add(c))\n for (let c of _cur) if (_new.has(c)) _new.delete(c); else el.classList.remove(c);\n for (let c of _cur = _new) el.classList.add(c)\n }\n}\n", "import { attr, decorate } from \"../core.js\";\n\nexport default (el, st, ex, name) => {\n let _static;\n\n // redefine target, if modifiers have one\n if (name.includes('.')) el = decorate({target:el}, name.split('.').slice(1)).target ?? el;\n\n return v => {\n if (!_static) { _static = el.getAttribute(\"style\") }\n v = typeof v === \"function\" ? v(el.style) : v\n if (typeof v === \"string\") attr(el, \"style\", _static + '; ' + v);\n else {\n if (_static) attr(el, \"style\", _static);\n // NOTE: we skip names not starting with a letter - eg. el.style stores properties as { 0: --x } or JSDOM has _pfx\n for (let k in v) k[0] == '-' ? el.style.setProperty(k, v[k]) : k[0] > 'A' && (el.style[k] = v[k])\n }\n }\n}\n", "export default () => (fn) => typeof fn === 'function' && fn()\n", "import sprae, { attr, parse, _state } from \"../core.js\";\n\n\n// create expression setter, reflecting value back to state\nexport const setter = (expr, _set = parse(`${expr}=__`)) => (target, value) => {\n // save value to stash\n target.__ = value; _set(target), delete target.__\n}\n\nexport default (el, state, expr) => {\n // bind back to value, but some values can be not bindable, eg. `:value=\"7\"`\n try {\n const set = setter(expr)\n const handleChange = el.type === 'checkbox' ? () => set(state, el.checked) :\n el.type === 'select-multiple' ? () => set(state, [...el.selectedOptions].map(o => o.value)) :\n () => set(state, el.selectedIndex < 0 ? null : isNaN(el.valueAsNumber) ? el.value : el.valueAsNumber);\n\n el.oninput = el.onchange = handleChange; // hope user doesn't redefine these manually via `.oninput = somethingElse` - it saves 5 loc vs addEventListener\n\n if (el.type?.startsWith('select')) {\n // select element also must observe any added/removed options or changed values (outside of sprae)\n new MutationObserver(handleChange).observe(el, { childList: true, subtree: true, attributes: true });\n\n // select options must be initialized before calling an update\n sprae(el, state)\n }\n\n // initial state value - setter has already cached it, so parse is fast\n parse(expr)(state) ?? handleChange()\n } catch { }\n\n return (el.type === \"text\" || el.type === \"\" || el.tagName === \"TEXTAREA\") ?\n (value, _from, _to) => (\n // we retain selection in input\n (_from = el.selectionStart),\n (_to = el.selectionEnd),\n el.setAttribute(\"value\", (el.value = value == null ? \"\" : value)),\n _from && el.setSelectionRange(_from, _to)\n ) :\n (el.type === \"checkbox\") ?\n (value) => (el.checked = value, attr(el, \"checked\", value)) :\n (el.type === 'radio') ? (value) => (\n el.value === value && ((el.checked = value), attr(el, 'checked', value))\n ) :\n (el.type === \"select-one\") ?\n (value) => {\n for (let o of el.options)\n o.value == value ? o.setAttribute(\"selected\", '') : o.removeAttribute(\"selected\");\n el.value = value;\n } :\n (el.type === 'select-multiple') ? (value) => {\n for (let o of el.options) o.removeAttribute('selected')\n for (let v of value) el.querySelector(`[value=\"${v}\"]`).setAttribute('selected', '')\n } :\n (value) => (el.value = value);\n}\n", "import { parse } from \"../core.js\"\nimport { setter } from \"./value.js\"\n\nexport default (el, state, expr) => {\n let fn = parse(expr)(state)\n\n if (typeof fn == 'function') return {[Symbol.dispose]:fn(el)}\n\n // NOTE: we have to set element statically (outside of effect) to avoid parasitic sub - multiple els with same :ref can cause recursion (eg. :each :ref=\"x\")\n // Object.defineProperty(state, expr, { value: el, configurable: true })\n setter(expr)(state, el)\n}\n", "import sprae, { store, untracked, _state, _signals, signal } from '../core.js'\n\nexport default (el, rootState) => {\n // 0 run pre-creates state to provide scope for the first effect - it can write vars in it, so we should already have it\n // el[_state] even replaces own :scope effect state\n let state = el[_state] = store({}, rootState), init = false;\n\n // 1st run spraes subtree with values from scope, it can be postponed by modifiers (we isolate reads from parent effect)\n // 2nd+ runs update subscope\n return values => {\n values = typeof values === 'function' ? values(state) : values;\n\n // we bind to subscope to alleviate friction using scope method directly\n // also returned props should force-create signals in subscope, not overwriting parent\n if (values !== state) {\n for (let k in values) {\n // _add forces new prop, instead of checking parent\n let v = typeof values[k] === 'function' ? values[k].bind(state) : values[k]\n // update\n if (k in state[_signals]) state[k] = v\n // create\n else (state[_signals][k] = (k[0] == '_' || v?.peek) ? v : signal(store(v)))\n }\n }\n\n // Object.assign(subscope, call(values, subscope))\n return !init && (init = true, delete el[_state], untracked(() => sprae(el, state)))\n }\n}\n", "import sprae, { store, parse, _state, effect, _change, _signals, frag, throttle, debounce } from \"../core.js\";\n\nexport default (tpl, state, expr) => {\n const [lhs, rhs] = expr.split(/\\bin|of\\b/)\n\n let [itemVar, idxVar = \"$\"] = lhs.trim().replace(/\\(|\\)/g, '').split(/\\s*,\\s*/);\n\n // we need :if to be able to replace holder instead of tpl for :if :each case\n let holder = document.createTextNode(\"\");\n\n // we re-create items any time new items are produced\n let cur, keys, items, prevl = 0\n\n // FIXME: pass items to update instead of global\n let update = throttle(() => {\n let i = 0, newItems = items, newl = newItems.length\n\n // plain array update, not store (signal with array) - updates full list\n if (cur && !cur[_change]) {\n for (let s of cur[_signals] || []) s[Symbol.dispose]()\n cur = null, prevl = 0\n }\n\n\n // delete\n if (newl < prevl) cur.length = newl\n\n // update, append, init\n else {\n // init\n if (!cur) cur = newItems\n // update\n else while (i < prevl) cur[i] = newItems[i++]\n\n // append\n for (; i < newl; i++) {\n cur[i] = newItems[i]\n\n let idx = i,\n // inherited state must be cheaper in terms of memory and faster in terms of performance, compared to creating a proxy store\n // subscope = store({\n // // NOTE: since we simulate signal, we have to make sure it's actual signal, not fake one\n // // FIXME: try to avoid this, we also have issue with wrongly calling dispose in store on delete\n // [itemVar]: cur[_signals]?.[idx]?.peek ? cur[_signals]?.[idx] : cur[idx],\n // [idxVar]: keys ? keys[idx] : idx\n // }, state)\n subscope = Object.create(state, {\n [itemVar]: { get: () => cur[idx] },\n [idxVar]: { value: keys ? keys[idx] : idx }\n })\n\n let el = tpl.content ? frag(tpl) : tpl.cloneNode(true);\n\n holder.before(el.content || el);\n sprae(el, subscope);\n\n // signal/holder disposal removes element\n let _prev = ((cur[_signals] ||= [])[i] ||= {})[Symbol.dispose]\n cur[_signals][i][Symbol.dispose] = () => {\n _prev?.(), el[Symbol.dispose]?.(), el.remove()\n };\n }\n }\n\n prevl = newl\n })\n\n tpl.replaceWith(holder);\n tpl[_state] = null // mark as fake-spraed, to preserve :-attribs for template\n\n return Object.assign(value => {\n // resolve new items\n keys = null\n if (typeof value === \"number\") items = Array.from({ length: value }, (_, i) => i + 1)\n else if (value?.constructor === Object) keys = Object.keys(value), items = Object.values(value)\n else items = value || []\n\n // whenever list changes, we rebind internal change effect\n return effect(() => {\n // subscribe to items change (.length) - we do it every time (not just in update) since preact signals unsubscribes unused signals\n items[_change]?.value\n\n // make first render immediately, debounce subsequent renders\n update()\n })\n }, {eval:parse(rhs)})\n}\n", "import { attr } from \"../core.js\";\n\nexport default (el, st, ex, name) => v => attr(el, name, typeof v === 'function' ? v(el.getAttribute(name)) : v)\n", "import { attr, dashcase } from \"../core.js\";\n\nexport default (target) => value => { for (let key in value) attr(target, dashcase(key), value[key]) }\n", "import { parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, name) => {\n // wrap inline cb into function\n // if (!/^(?:[\\w$]+|\\([^()]*\\))\\s*=>/.test(expr) && !/^function\\b/.test(expr)) expr = `()=>{${expr}}`;\n\n const [type, ...mods] = name.slice(2).split('.'),\n evaluate = parse(expr).bind(el),\n trigger = decorate(Object.assign(e => evaluate(state, (fn) => typeof fn === 'function' ? fn(e) : fn), { target: el }), mods);\n\n trigger.target.addEventListener(type, trigger, trigger)\n return {\n [Symbol.dispose]() {\n trigger.target.removeEventListener(type, trigger)\n }\n }\n}\n", "// events directive with enabled aliases and sequences like :onclick.ctrl.once..keyup.enter\nimport { _dispose, parse, decorate } from \"../core.js\"\n\nexport default (el, state, expr, names) => {\n let cur, // current step callback\n off // current step disposal\n\n let steps = names.split('..').map((step, i, { length }) => step.split(':').reduce(\n (prev, str) => {\n const [name, ...mods] = str.slice(2).split('.')\n\n const evaluate = parse(expr).bind(el)\n\n const next = (fn, e) => cur = typeof fn === 'function' ? fn(e) : fn\n const trigger = decorate(Object.assign(\n e => (!i ? evaluate(state, (fn) => next(fn, e)) : next(cur, e), off(), off = steps[(i + 1) % length]()),\n { target: el }\n ), mods)\n\n\n return (_poff) => (\n _poff = prev?.(),\n trigger.target.addEventListener(name, trigger, trigger),\n () => (_poff?.(), trigger.target.removeEventListener(name, trigger))\n )\n }, null)\n )\n\n off = steps[0]()\n\n return {\n [Symbol.dispose]() {\n off?.()\n }\n }\n}\n", "import store from \"./store.js\";\nimport { batch, computed, effect, signal, untracked } from './core.js';\nimport * as signals from './signal.js';\nimport sprae, { use, decorate, directive, modifier, parse, throttle, debounce, _off, _state, _on, _dispose, _add } from './core.js';\n\nimport _if from \"./directive/if.js\";\nimport _else from \"./directive/else.js\";\nimport _text from \"./directive/text.js\";\nimport _class from \"./directive/class.js\";\nimport _style from \"./directive/style.js\";\nimport _fx from \"./directive/fx.js\";\nimport _value from \"./directive/value.js\";\nimport _ref from \"./directive/ref.js\";\nimport _scope from \"./directive/scope.js\";\nimport _each from \"./directive/each.js\";\nimport _default from \"./directive/_.js\";\nimport _spread from \"./directive/spread.js\";\nimport _event from \"./directive/event.js\";\nimport _seq from \"./directive/sequence.js\";\n\n\nObject.assign(directive, {\n _: (el, state, expr, name) => (name.startsWith('on') ? _event : _default)(el, state, expr, name),\n '': _spread,\n class: _class,\n text: _text,\n style: _style,\n fx: _fx,\n value: _value,\n ref: _ref,\n scope: _scope,\n if: _if,\n else: _else,\n each: _each\n})\n\n\n/**\n * Directive initializer (with modifiers support)\n * @type {(el: HTMLElement, name:string, value:string, state:Object) => Function}\n * */\nconst dir = (target, name, expr, state) => {\n let [dirName, ...mods] = name.split('.'), create = directive[dirName] || directive._\n\n return () => {\n let update = create(target, state, expr, name)\n\n if (!update?.call) return update?.[_dispose]\n\n // throttle prevents multiple updates within one tick as well as isolates stack for each update\n let trigger = decorate(Object.assign(throttle(() => change.value++), { target }), mods),\n change = signal(0), // signal authorized to trigger effect: 0 = init; >0 = trigger\n count = 0, // called effect count\n evaluate = update.eval ?? parse(expr).bind(target),\n _out, out = () => (typeof _out === 'function' && _out(), _out=null) // effect trigger and invoke may happen in the same tick, so it will be effect-within-effect call - we need to store output of evaluate to return from trigger effect\n\n state = target[_state] ?? state\n\n return effect(() => (\n // if planned count is same as actual count - plan new update, else update right away\n change.value == count ? (trigger()) : (count = change.value, _out = evaluate(state, update)),\n out\n ))\n }\n}\n\nObject.assign(modifier, {\n // timing (lodash-like)\n // FIXME: add immediate param\n debounce: (fn, _how) => debounce(fn, (_how ||= 0, !_how ? undefined : _how === 'raf' ? requestAnimationFrame : (fn) => setTimeout(fn, _how))),\n throttle: (fn, _how) => throttle(fn, (_how ||= 0, !_how ? undefined : _how === 'raf' ? requestAnimationFrame : (fn) => setTimeout(fn, _how))),\n delay: (fn, ms) => !ms ? (e) => (queueMicrotask(() => fn(e))) : (e) => setTimeout(() => fn(e), ms),\n\n tick: (fn) => (console.warn('Deprecated'), (e) => (queueMicrotask(() => fn(e)))),\n raf: (fn) => (console.warn('Deprecated'), (e) => requestAnimationFrame(() => fn(e))),\n\n once: (fn, _done, _fn) => (_fn = (e) => !_done && (_done = 1, fn(e)), _fn.once = true, _fn),\n\n // target\n window: fn => (fn.target = fn.target.ownerDocument.defaultView, fn),\n document: fn => (fn.target = fn.target.ownerDocument, fn),\n root: fn => (fn.target = fn.target.ownerDocument.documentElement, fn),\n body: fn => (fn.target = fn.target.ownerDocument.body, fn),\n parent: fn => (fn.target = fn.target.parentNode, fn),\n self: (fn) => (e) => (e.target === fn.target && fn(e)),\n away: (fn) => Object.assign((e) => (!fn.target.contains(e.target) && e.target.isConnected && fn(e)), {target: fn.target.ownerDocument}),\n\n // events\n prevent: (fn) => (e) => (e?.preventDefault(), fn(e)),\n stop: (fn, _how) => (e) => (_how?.[0] === 'i' ? e?.stopImmediatePropagation() : e?.stopPropagation(), fn(e)),\n immediate: (fn) => (console.warn('Deprecated'), (e) => (e?.stopImmediatePropagation(), fn(e))),\n passive: fn => (fn.passive = true, fn),\n capture: fn => (fn.capture = true, fn),\n})\nmodifier.outside = modifier.away\n\n// key testers\nconst keys = {\n ctrl: e => e.ctrlKey || e.key === \"Control\" || e.key === \"Ctrl\",\n shift: e => e.shiftKey || e.key === \"Shift\",\n alt: e => e.altKey || e.key === \"Alt\",\n meta: e => e.metaKey || e.key === \"Meta\",\n cmd: e => e.metaKey || e.key === \"Command\",\n arrow: e => e.key.startsWith(\"Arrow\"),\n enter: e => e.key === \"Enter\",\n esc: e => e.key.startsWith(\"Esc\"),\n tab: e => e.key === \"Tab\",\n space: e => e.key === \"\u00A0\" || e.key === \"Space\" || e.key === \" \",\n delete: e => e.key === \"Delete\" || e.key === \"Backspace\",\n digit: e => /^\\d$/.test(e.key),\n letter: e => /^\\p{L}$/gu.test(e.key),\n char: e => /^\\S$/.test(e.key),\n};\n\n// augment modifiers with key testers\nfor (let k in keys) modifier[k] = (fn, a, b) => (e) => keys[k](e) && (!a || keys[a]?.(e)) && (!b || keys[b]?.(e)) && fn(e)\n\n\nuse({\n compile: expr => sprae.constructor(`with(arguments[0]){${expr}}`),\n dir: (el, name, expr, state) => {\n // sequences shortcut\n if (name.includes('..')) return () => _seq(el, state, expr, name)[_dispose]\n return name.split(':').reduce((prev, str) => {\n let start = dir(el, str, expr, state)\n return !prev ? start : (p, s) => (p = prev(), s = start(), () => { p(); s() })\n }, null)\n },\n ...signals\n})\n\n\n// expose for runtime config\nsprae.use = use\nsprae.store = store\nsprae.directive = directive\nsprae.modifier = modifier\n\n\n/**\n * Lifecycle hanger: spraes automatically any new nodes\n */\nconst start = sprae.start = (root = document.body, values) => {\n const state = store(values)\n sprae(root, state);\n const mo = new MutationObserver(mutations => {\n for (const m of mutations) {\n for (const el of m.addedNodes) {\n // el can be spraed or removed by subsprae (like within :each/:if)\n if (el.nodeType === 1 && el[_state] === undefined && root.contains(el)) {\n // even if element has no spraeable attrs, some of its children can have\n root[_add](el)\n // sprae(el, state, root);\n }\n }\n // for (const el of m.removedNodes) el[Symbol.dispose]?.()\n }\n });\n mo.observe(root, { childList: true, subtree: true });\n return state\n}\n\n\n// version placeholder for bundler\nsprae.version = \"12.3.7\"\n\nexport default sprae\nexport { sprae, store, signal, effect, computed, batch, untracked, start, use }\n", "var sprae = require(\"./sprae.js\").default; module.exports = sprae; var cur = document.currentScript;\nvar prefix = cur.getAttribute(\"prefix\") ?? cur.dataset.prefix ?? cur.dataset.spraePrefix;\nvar start = cur.getAttribute(\"start\") ?? cur.dataset.start ?? cur.dataset.spraeStart;\nif (prefix) sprae.use({ prefix });\nif (start != null && start !== 'false') (start && start !== 'true' ? document.querySelectorAll(start) : [document.body || document.documentElement]).forEach(el => sprae.start(el))"],
5
+ "mappings": "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",
6
+ "names": ["_dispose", "_state", "_on", "_off", "_add", "prefix", "signal", "effect", "computed", "batch", "untracked", "directive", "modifier", "currentDir", "sprae", "dir", "compile", "parse", "cache", "hasSemi", "use", "decorate", "frag", "dashcase", "attr", "clsx", "throttle", "debounce", "core_default", "init_core", "__esmMin", "init_store", "fn", "el", "state", "store_default", "fx", "offs", "off", "add", "_attrs", "start", "i", "name", "value", "child", "expr", "_expr", "e", "cb", "_out", "result", "v", "s", "d", "mods", "params", "mod", "wrapFn", "k", "tpl", "content", "attributes", "ref", "childNodes", "a", "str", "match", "c", "schedule", "_planned", "arg", "throttled", "_dirty", "_count", "_signals", "_change", "_set", "sandbox", "store", "list", "create", "set", "store_default", "init_store", "__esmMin", "init_core", "values", "parent", "keyCount", "signals", "state", "signal", "_", "k", "v", "_s", "descs", "computed", "isMut", "mut", "fn", "length", "i", "_v", "untracked", "batch", "signal_exports", "__export", "batch", "computed", "effect", "signal", "untracked", "current", "depth", "batched", "init_signal", "__esmMin", "v", "_s", "_obs", "_v", "val", "sub", "fn", "_teardown", "_fx", "_deps", "prev", "tmp", "dep", "_c", "_e", "_first", "_list", "fx", "_prev", "if_default", "init_if", "__esmMin", "init_core", "el", "state", "_a", "_holder", "_el", "_match", "core_default", "_state", "frag", "throttle", "match", "s", "_off", "_on", "value", "else_default", "init_else", "__esmMin", "init_core", "el", "_el", "_prev", "frag", "_state", "text_default", "init_text", "__esmMin", "init_core", "el", "frag", "v", "class_default", "init_class", "__esmMin", "init_core", "el", "st", "ex", "name", "_cur", "_new", "decorate", "v", "clsx", "c", "style_default", "init_style", "__esmMin", "init_core", "el", "st", "ex", "name", "_static", "decorate", "v", "attr", "k", "fx_default", "init_fx", "__esmMin", "fn", "setter", "value_default", "init_value", "__esmMin", "init_core", "expr", "_set", "parse", "target", "value", "el", "state", "set", "handleChange", "o", "core_default", "_from", "_to", "attr", "v", "ref_default", "init_ref", "__esmMin", "init_core", "init_value", "el", "state", "expr", "fn", "parse", "setter", "scope_default", "init_scope", "__esmMin", "init_core", "el", "rootState", "state", "_state", "store", "init", "values", "k", "v", "_signals", "signal", "untracked", "core_default", "each_default", "init_each", "__esmMin", "init_core", "tpl", "state", "expr", "lhs", "rhs", "itemVar", "idxVar", "holder", "cur", "keys", "items", "prevl", "update", "throttle", "_a", "_b", "i", "newItems", "newl", "_change", "s", "_signals", "idx", "subscope", "el", "frag", "core_default", "_prev", "_state", "value", "_", "effect", "parse", "__default", "init__", "__esmMin", "init_core", "el", "st", "ex", "name", "v", "attr", "spread_default", "init_spread", "__esmMin", "init_core", "target", "value", "key", "attr", "dashcase", "event_default", "init_event", "__esmMin", "init_core", "el", "state", "expr", "name", "type", "mods", "evaluate", "parse", "trigger", "decorate", "e", "fn", "sequence_default", "init_sequence", "__esmMin", "init_core", "el", "state", "expr", "names", "cur", "off", "steps", "step", "i", "length", "prev", "str", "name", "mods", "evaluate", "parse", "next", "fn", "e", "trigger", "decorate", "_poff", "sprae_exports", "__export", "batch", "computed", "sprae_default", "effect", "signal", "core_default", "start", "store_default", "untracked", "use", "dir", "keys", "init_sprae", "__esmMin", "init_store", "init_core", "init_signal", "init_if", "init_else", "init_text", "init_class", "init_style", "init_fx", "init_value", "init_ref", "init_scope", "init_each", "init__", "init_spread", "init_event", "init_sequence", "directive", "el", "state", "expr", "name", "event_default", "__default", "spread_default", "class_default", "text_default", "style_default", "fx_default", "value_default", "ref_default", "scope_default", "if_default", "else_default", "each_default", "target", "dirName", "mods", "create", "update", "_dispose", "trigger", "decorate", "throttle", "change", "count", "evaluate", "parse", "_out", "out", "_state", "modifier", "fn", "_how", "debounce", "ms", "e", "_done", "_fn", "k", "a", "b", "sequence_default", "prev", "str", "p", "s", "signal_exports", "root", "values", "mutations", "m", "_add", "sprae", "cur", "prefix", "start", "el"]
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sprae",
3
3
  "description": "DOM microhydration",
4
- "version": "12.3.6",
4
+ "version": "12.3.8",
5
5
  "main": "./sprae.js",
6
6
  "module": "./sprae.js",
7
7
  "umd:main": "dist/sprae.umd.js",
package/readme.md CHANGED
@@ -48,7 +48,8 @@ Micro sprae version is 2.5kb bundle with essentials:
48
48
 
49
49
  Wire UI in markup for cleaner app logic.<br>
50
50
  <!--Perfect for SPA, PWA, static sites, prototypes, micro-frontends, lightweight UI.<br> -->
51
- <!--Inspired by [preact-signals](https://github.com/preactjs/signals), [alpine](https://github.com/alpinejs/alpine), [lodash](https://lodash.com) and <span title="petite-vue, lucia, nuejs, hmpl, unpoly, dagger">others</span>. <!--[petite-vue](https://github.com/vuejs/petite-vue) and others. --> <!--[lucia](https://github.com/aidenybai/lucia), [nuejs](https://github.com/nuejs/nuejs), [hmpl](https://github.com/hmpl-language/hmpl), [unpoly](https://unpoly.com/up.link), [dagger](https://github.com/dagger8224/dagger.js)-->
51
+ <!--Inspired by [preact-signals](https://github.com/preactjs/signals), [alpine](https://github.com/alpinejs/alpine), [lodash](https://lodash.com) and <span title="petite-vue, lucia, nuejs, hmpl, unpoly, dagger">others</span>. <!--[petite-vue](https://github.com/vuejs/petite-vue) and others. -->
52
+ <!-- [lucia](https://github.com/aidenybai/lucia), [nuejs](https://github.com/nuejs/nuejs), [hmpl](https://github.com/hmpl-language/hmpl), [unpoly](https://unpoly.com/up.link), [dagger](https://github.com/dagger8224/dagger.js) -->
52
53
 
53
54
  <!-- Made with 🫰 for better DX. -->
54
55
  <!-- – for those who tired of complexity. -->