spikijs 1.1.28 → 1.1.29

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/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  SpikiJS is a lightweight (~5KB), high-performance JavaScript framework for building reactive web applications directly in your HTML without build tools. It utilizes ES6 Proxies for fine-grained reactivity and adheres to a strict Content Security Policy (CSP).
4
4
 
5
+ 📖 **Live Documentation & Demos:** [https://spikijs.pages.dev/](https://spikijs.pages.dev/)
6
+
5
7
  ---
6
8
 
7
9
  ## Key Features
@@ -109,12 +111,14 @@ import spiki from 'spikijs';
109
111
  | **`s-ignore`** | Skips DOM compilation for static blocks. | `<div s-ignore>` |
110
112
  | **`:[attr]`** | Binds dynamic attributes (HTML & SVG). | `<img :src="userAvatar">` |
111
113
  | **`:class`** | Binds dynamic classes (HTML & SVG). | `<div :class="activeClass">` |
112
- | **`s-[event]`** | Attaches event listener (`s-click`, `s-keyup`, etc.). | `<button s-click="submitForm">` |
114
+ | **`s-click`** | Listens to native click events and executes component method. | `<button s-click="saveItem">` |
115
+ | **`s-[event]`** | Attaches any native event listener (`s-input`, `s-keyup`, `s-change`, etc.). | `<input s-input="handleInput">` |
113
116
  | **`this.$root`** | Accesses component's root container element. | `this.$root.classList.add('active');` |
114
117
  | **`this.$refs`** | Object containing all `s-ref` DOM elements. | `this.$refs.textInput.focus();` |
115
118
  | **`this.$store`** | Accesses registered global stores. | `this.$store.settings.theme` |
116
119
  | **`spiki.store()`** | Registers global store (runs `init()` automatically if present). | `spiki.store('settings', { theme: 'dark', init() {} })` |
117
120
  | **`spiki.raw()`** | Unwraps Spiki Proxy to a plain JavaScript object. | `const plainObj = spiki.raw(this.user);` |
121
+ | **`spiki.compose()`** | Merges modular state objects/factories into a single scope. | `spiki.compose(createAuth, createCart)` |
118
122
 
119
123
  ---
120
124
 
@@ -343,6 +347,39 @@ spiki.data('noteApp', () => ({
343
347
 
344
348
  ---
345
349
 
350
+ ### 8. Modular State Composition (`spiki.compose`)
351
+
352
+ For large applications, organize code into smaller modules and merge them using `spiki.compose()`. It preserves getters, setters, and computed properties while allowing methods across modules to share state via `this`:
353
+
354
+ ```javascript
355
+ import spiki from 'spikijs';
356
+
357
+ const createCounterModule = () => ({
358
+ count: 0,
359
+ increment() { this.count++; }
360
+ });
361
+
362
+ const createThemeModule = () => ({
363
+ darkMode: false,
364
+ toggleTheme() { this.darkMode = !this.darkMode; }
365
+ });
366
+
367
+ spiki.data('app', () =>
368
+ spiki.compose(
369
+ createCounterModule,
370
+ createThemeModule,
371
+ {
372
+ init() {
373
+ console.log('App ready, initial count:', this.count);
374
+ }
375
+ }
376
+ )
377
+ );
378
+ ```
379
+
380
+ ---
381
+
346
382
  ## License
347
383
 
348
384
  MIT License.
385
+
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "spikijs",
3
3
  "license": "MIT",
4
- "version": "1.1.28",
4
+ "version": "1.1.29",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
package/spiki.d.ts CHANGED
@@ -92,6 +92,11 @@ export interface Spiki {
92
92
  * Returns the original object from a Spiki Proxy.
93
93
  */
94
94
  raw<T>(object: T): T;
95
+
96
+ /**
97
+ * Composes multiple state modules/factories into a single object while preserving getters and setters.
98
+ */
99
+ compose<T = any>(...modules: any[]): T;
95
100
  }
96
101
 
97
102
  declare const spiki: Spiki;
package/spiki.esm.js CHANGED
@@ -551,8 +551,23 @@ var spiki = (() => {
551
551
  return result;
552
552
  };
553
553
 
554
+ var compose = (...modules) => {
555
+ var target = {};
556
+ for (var i = 0; i < modules.length; i++) {
557
+ var mod = modules[i];
558
+ if (mod) {
559
+ Object.defineProperties(
560
+ target,
561
+ Object.getOwnPropertyDescriptors(typeof mod === 'function' ? mod() : mod)
562
+ );
563
+ }
564
+ }
565
+ return target;
566
+ };
567
+
554
568
  return {
555
569
  data: (name, factory) => { cmpReg[name] = factory; },
570
+ compose: compose,
556
571
  start: () => {
557
572
  var els = document.querySelectorAll('[s-data]');
558
573
  var i = els.length;
package/spiki.esm.min.js CHANGED
@@ -1 +1 @@
1
- var spiki=(()=>{var r,e=Object,t=Array,a=Reflect,o=Promise,n=Node,i=document,l=console,f="length",v="value",s="push",u="forEach",p="indexOf",c="split",d="slice",_="call",y="keys",h="get",m="prototype",g="hasOwnProperty",b="getPrototypeOf",x="defineProperty",N="create",P="isArray",k="getAttribute",A="setAttribute",w="removeAttribute",E="hasAttribute",S="tagName",T="type",$="name",O="checked",j="parentNode",C="nextSibling",L="textContent",q="innerHTML",M="replaceWith",D="insertBefore",F="cloneNode",K="remove",B="createTextNode",H="addEventListener",R="input",W="checkbox",z="function",G="radio",I="class",J="model",Q="object",U="unshift",V="scope",X="trim",Y="cleanups",Z="nodes",rr="deps",er="destroy",tr="init",ar="charCodeAt",or="sched",nr="string",ir="unmount",lr="attr",fr="s-data",vr="s-if",sr=e[N](null),ur=[],pr=!1,cr=null,dr=!1,_r=o.resolve(),yr={blur:1,focus:1,scroll:1,load:1,error:1,mouseenter:1,mouseleave:1,toggle:1},hr=r=>{r._q||(r._q=!0,ur[s](r),pr||(pr=!0,_r.then(()=>{var r=ur;ur=[],pr=!1;for(var e=r[f];e--;)r[e]._q=!1,r[e]()})))},mr=(r,e)=>{var a,o=r;if(typeof e===nr)a=r?r[e]:void 0;else{for(var n=0,i=e[f];n<i-1&&o;)o=o[e[n++]];a=o?o[e[i-1]]:void 0}if(void 0===a){var v=t[P](e)?e.join("."):e;l.warn("[spikijs] Property undefined: "+v)}return{ctx:o,val:a}},gr={};[s,"pop","shift",U,"splice","sort","reverse"][u](r=>{gr[r]=function(...e){dr=!0;try{return t[m][r].apply(this,e)}finally{dr=!1,xr(this,f)}}});var br=(r,t)=>{if(cr){var a=r._d||(e[x](r,"_d",{value:e[N](null),writable:!0}),r._d),o=a[t]||(a[t]=[]);-1===o[p](cr)&&(o[s](cr),cr[rr][s](o))}},xr=(r,e)=>{if(!dr&&r._d&&r._d[e])for(var t=r._d[e][d](),a=0,o=t[f];a<o;a++){var n=t[a];n[or]?n[or](n):n()}},Nr=r=>{for(var e=r[rr][f];e--;){var t=r[rr][e],a=t[p](r);-1!==a&&(t[a]=t[t[f]-1],t.pop())}r[rr]=[]},Pr=(r,e)=>{var t=()=>{Nr(t);var e=cr;cr=t;try{r()}finally{cr=e}};return t[rr]=[],t[or]=e,t(),()=>Nr(t)},kr=r=>{if(!r||typeof r!==Q||r._y||r instanceof n)return r;if(e[m][g][_](r,"_p"))return r._p;var o=new Proxy(r,{get:(r,o,i)=>{if("_y"===o)return i===r._p;if("_t"===o)return r;if("_d"===o)return r._d;if("_i"===o)return r._i;if(t[P](r)&&gr[g](o))return gr[o];var l=e.getOwnPropertyDescriptor(r,o);if(l&&l[h]){var f="_"+o;return f in r||Pr(()=>i[f]=l[h][_](i)),i[f]}br(r,o);var v=a[h](r,o,i);return!v||typeof v!==Q||v instanceof n?v:kr(v)},set:(r,o,n,i)=>{var l=r[o],v=t[P](r),s=v?Number(o)<r[f]:e[m][g][_](r,o);if(r._i&&!s)for(var u=e[b](r);u&&u!==e[m];){if(e[m][g][_](u,o)){var p=a.set(u,o,n);return!dr&&(n!==l||n&&typeof n===Q)&&xr(r,o),p}u=e[b](u)}return p=a.set(r,o,n,i),!dr&&p&&(!s||n!==l||n&&typeof n===Q)&&(xr(r,o),v?xr(r,f):s||xr(r,"_k")),p},deleteProperty:(r,o)=>{var n=e[m][g][_](r,o),i=a.deleteProperty(r,o);return i&&n&&(xr(r,o),t[P](r)?xr(r,f):xr(r,"_k")),i},ownKeys:r=>(br(r,"_k"),a.ownKeys(r))});return e[x](r,"_p",{value:o}),o};r=kr({});var Ar=e[N](null);Ar.text=(r,e)=>{e=null==e?"":e,r[L]!==String(e)&&(r[L]=e)},Ar.html=(r,e)=>{r[q]!=e&&(r[q]=null==e?"":e)},Ar[v]=(r,e)=>{r[T]===W?r[O]=!!e:r[T]===G?r[O]=r[v]==e:r[v]!=e&&(r[v]=null==e?"":e)},Ar[lr]=(r,e,t)=>{if(null==e||!1===e)r[w](t);else{var a=!0===e?"":String(e);r[k](t)!==a&&r[A](t,a)}},Ar[I]=(r,t)=>{var a=r._n||"",o=e[N](null);if(a[c](/\s+/)[u](r=>r&&(o[r]=1)),typeof t===nr)t[c](/\s+/)[u](r=>r&&(o[r]=1));else if(t)for(var n in t)t[n]?o[n]=1:delete o[n];var i=e[y](o).join(" ");(r[k](I)||"")!==i&&r[A](I,i)};var wr=(a,o)=>{if(a._m)return a._m;var n=a[k](fr);if(sr[n]){var l=sr[n]();o&&e.setPrototypeOf(l,o);var h=kr(l);h.$refs={},h.$root=a,h.$store=r,h.$parent=o;var g=[],b=e[N](null),A=r=>{var t=r.target;if(r[T]!==R||!t._c)for(var o=a[j],n=r[T];t&&t!==o;){var i=t._h&&t._h[n];if(i){var l=t._s;if(!l||l.$root!==h.$root){t=t[j];continue}for(var s=i[f];s--;){var u=i[s],p=u.p;if(u[J]){var c=t[T]===W?t[O]:t[v];if(typeof c===nr){var d=c[X]();d&&isFinite(d)&&(48===d[ar](0)&&1!==d[f]&&46!==d[ar](1)||(c=Number(d)))}if(typeof p===nr)l&&(l[p]=c);else{for(var y=l,m=0,g=p[f]-1;m<g&&y;)y=y[p[m++]];y&&(y[p[g]]=c)}}else{var b=mr(l,p);typeof b.val===z&&(e[x](r,"currentTarget",{configurable:!0,value:t}),b.val[_](b.ctx,r))}}}t=t[j]}},L=r=>{b[r]||(b[r]=!0,a[H](r,A,!!yr[r]))},q=(r,o,n)=>{if(1===r.nodeType&&!r[E]("s-ignore"))if(r!==a&&r[E](fr)){var l=wr(r,o);l&&n[s](l[ir])}else{var g=r[k](vr),b=!g&&"TEMPLATE"===r[S]&&r[k]("s-for"),O=[];if(r[E](I)&&!r._n&&(r._n=r[k](I)),g){var rr=i[B](""),or=null,nr=[];r[M](rr);var sr="!"===g[0],ur=sr?g[d](1):g,pr=-1===ur[p](".")?ur:ur[c](".");return n[s](()=>{for(var r=nr[f];r--;)nr[r]()}),n[s](Pr(()=>{var e=mr(o,pr).val;if(sr&&(e=!e),e)or||((or=r[F](!0))[w](vr),q(or,o,nr),rr[j][D](or,rr));else if(or){for(var t=nr[f];t--;)nr[t]();nr=[],or[K](),or=null}},hr))}if(b){var cr=b[p](" in ");if(-1!==cr){var dr,_r=b[d](0,cr)[X](),yr=b[d](cr+4)[X](),gr=_r.replace(/[()]/g,"")[c](","),xr=gr[0][X](),Nr=gr[1]?gr[1][X]():null,Er=-1===yr[p](".")?yr:yr[c]("."),Sr=r[k]("s-key"),Tr=Sr?-1===Sr[p](".")?Sr:Sr[c]("."):null,$r=(rr=i[B](""),e[N](null));return r[M](rr),n[s](()=>{for(var r in $r)$r[r][Y][u](r=>r())}),n[s](Pr(()=>{var a=mr(o,Er).val||[];"number"==typeof a&&(a=t.from({length:Math.max(0,Math.floor(a))},(r,e)=>e+1)),t[P](a)&&br(a,f);var n=i.createDocumentFragment(),l=rr[C];dr=e[N](null);for(var v=t[P](a),s=v?a:e[y](a),p=v?a[f]:s[f],c=0;c<p;c++){var h,g=v?c:s[c],b=v?a[c]:a[g];h=null==b||typeof b!==Q?String(b):Tr?mr(b,Tr).val:String(g)+"_o",dr[h]&&(h+="_"+c);var k=$r[h];if(k)k[V][xr]=b,Nr&&(k[V][Nr]=g);else{var A=r.content[F](!0),w=e[N](o);e[x](w,"_i",{value:!0});var E=kr(w);E[xr]=b,Nr&&(E[Nr]=g);for(var S=t[m][d][_](A.childNodes),T=[],$=0;$<S[f];$++)q(S[$],E,T);k={nodes:t[m][d][_](A.childNodes),scope:E,cleanups:T},$r[h]=k}if(k[Z][0]===l)n.childNodes[f]&&rr[j][D](n,l),l=k[Z][k[Z][f]-1][C];else for($=0;$<k[Z][f];$++)n.appendChild(k[Z][$]);dr[h]=!0}for(var O in n.childNodes[f]&&rr[j][D](n,l),$r)dr[O]||($r[O][Y][u](r=>r()),$r[O][Z][u](r=>r[K]()),delete $r[O])},hr))}}if(r.hasAttributes())for(var Or=r.attributes,jr=Or[f];jr--;){var Cr=Or[jr],Lr=Cr[$],qr=Cr[v];if(58===Lr[ar](0)){var Mr=Lr[d](1),Dr=33===qr[ar](0),Fr=Dr?qr[d](1):qr;pr=-1===Fr[p](".")?Fr:Fr[c]("."),O[s]({type:lr,name:Mr,path:pr,neg:Dr})}else if(115===Lr[ar](0)&&45===Lr[ar](1)){let e=Lr[d](2),t=-1===qr[p](".")?qr:qr[c](".");if(e===tr||e===er)((e,t)=>{var a=mr(o,t);typeof a.val===z&&(e===tr?hr(()=>{var e=a.val[_](a.ctx,r);typeof e===z&&n[s](e)}):n[s](()=>a.val[_](a.ctx,r)))})(e,t);else if("effect"===e)n[s](Pr(()=>{var e=mr(o,t);typeof e.val===z&&e.val[_](e.ctx,r)},hr));else if(e===J){O[s]({type:v,path:t}),r._s=o,r._h=r._h||{};var Kr=r[T]===W||r[T]===G||"SELECT"===r[S]?"change":R;Kr===R&&(r[H]("compositionstart",()=>r._c=!0),r[H]("compositionend",()=>{r._c=!1,A({target:r,type:R})})),(r._h[Kr]=r._h[Kr]||[])[s]({model:!0,p:t}),L(Kr)}else"ref"===e?h.$refs[qr]=r:Ar[e]?O[s]({type:e,path:t}):(r._s=o,r._h=r._h||{},(r._h[e]=r._h[e]||[])[U]({p:t}),L(e))}}O[f]&&n[s](Pr(()=>{for(var e=O[f];e--;){var t=O[e],a=mr(o,t.path),n=typeof a.val===z?a.val[_](a.ctx,r):a.val;t[T]===lr?(t.neg&&(n=!n),t[$]===I?Ar[I](r,n):Ar[lr](r,n,t[$])):Ar[t[T]](r,n)}},hr));for(var Br=r.firstChild;Br;){var Hr=Br[C];q(Br,o,n),Br=Hr}}};q(a,h,g),h[tr]&&h[tr]();var rr={unmount:()=>{h[er]&&h[er][_](h);for(var r=g[f];r--;)g[r]();for(var e in b)a.removeEventListener(e,A);a._m=null}};return a._m=rr,rr}},Er=r=>{if(!r||typeof r!==Q)return r;var e=r._t||r;if(t[P](e))return e.map(r=>Er(r));var a={};for(var o in e)a[o]=Er(e[o]);return a};return{data:(r,e)=>{sr[r]=e},start:()=>{for(var r=i.querySelectorAll("[s-data]"),e=r[f];e--;)wr(r[e])},store:(e,t)=>{if(void 0===t)return r[e];r[e]=t;var a=r[e];return a&&typeof a[tr]===z&&a[tr][_](a),a},raw:Er,mount:r=>wr(r),unmount:r=>{r&&r._m&&r._m[ir]()}}})();export default spiki;
1
+ var spiki=(()=>{var e,t=Object.create(null),r=[],a=!1,n=null,o=!1,i=Promise.resolve(),l={blur:1,focus:1,scroll:1,load:1,error:1,mouseenter:1,mouseleave:1,toggle:1},s=e=>{e._q||(e._q=!0,r.push(e),a||(a=!0,i.then(()=>{var e=r;r=[],a=!1;for(var t=e.length;t--;)e[t]._q=!1,e[t]()})))},c=(e,t)=>{var r,a=e;if("string"==typeof t)r=e?e[t]:void 0;else{for(var n=0,o=t.length;n<o-1&&a;)a=a[t[n++]];r=a?a[t[o-1]]:void 0}if(void 0===r){var i=Array.isArray(t)?t.join("."):t;console.warn("[spikijs] Property undefined: "+i)}return{ctx:a,val:r}},p={};["push","pop","shift","unshift","splice","sort","reverse"].forEach(e=>{p[e]=function(...t){o=!0;try{return Array.prototype[e].apply(this,t)}finally{o=!1,u(this,"length")}}});var f=(e,t)=>{if(n){var r=e._d||(Object.defineProperty(e,"_d",{value:Object.create(null),writable:!0}),e._d),a=r[t]||(r[t]=[]);-1===a.indexOf(n)&&(a.push(n),n.deps.push(a))}},u=(e,t)=>{if(!o&&e._d&&e._d[t])for(var r=e._d[t].slice(),a=0,n=r.length;a<n;a++){var i=r[a];i.sched?i.sched(i):i()}},v=e=>{for(var t=e.deps.length;t--;){var r=e.deps[t],a=r.indexOf(e);-1!==a&&(r[a]=r[r.length-1],r.pop())}e.deps=[]},h=(e,t)=>{var r=()=>{v(r);var t=n;n=r;try{e()}finally{n=t}};return r.deps=[],r.sched=t,r(),()=>v(r)},d=e=>{if(!e||"object"!=typeof e||e._y||e instanceof Node)return e;if(Object.prototype.hasOwnProperty.call(e,"_p"))return e._p;var t=new Proxy(e,{get:(e,t,r)=>{if("_y"===t)return r===e._p;if("_t"===t)return e;if("_d"===t)return e._d;if("_i"===t)return e._i;if(Array.isArray(e)&&p.hasOwnProperty(t))return p[t];var a=Object.getOwnPropertyDescriptor(e,t);if(a&&a.get){var n="_"+t;return n in e||h(()=>r[n]=a.get.call(r)),r[n]}f(e,t);var o=Reflect.get(e,t,r);return!o||"object"!=typeof o||o instanceof Node?o:d(o)},set:(e,t,r,a)=>{var n=e[t],i=Array.isArray(e),l=i?Number(t)<e.length:Object.prototype.hasOwnProperty.call(e,t);if(e._i&&!l)for(var s=Object.getPrototypeOf(e);s&&s!==Object.prototype;){if(Object.prototype.hasOwnProperty.call(s,t)){var c=Reflect.set(s,t,r);return!o&&(r!==n||r&&"object"==typeof r)&&u(e,t),c}s=Object.getPrototypeOf(s)}c=Reflect.set(e,t,r,a);return!o&&c&&(!l||r!==n||r&&"object"==typeof r)&&(u(e,t),i?u(e,"length"):l||u(e,"_k")),c},deleteProperty:(e,t)=>{var r=Object.prototype.hasOwnProperty.call(e,t),a=Reflect.deleteProperty(e,t);return a&&r&&(u(e,t),Array.isArray(e)?u(e,"length"):u(e,"_k")),a},ownKeys:e=>(f(e,"_k"),Reflect.ownKeys(e))});return Object.defineProperty(e,"_p",{value:t}),t};e=d({});var y=Object.create(null);y.text=(e,t)=>{t=null==t?"":t,e.textContent!==String(t)&&(e.textContent=t)},y.html=(e,t)=>{e.innerHTML!=t&&(e.innerHTML=null==t?"":t)},y.value=(e,t)=>{"checkbox"===e.type?e.checked=!!t:"radio"===e.type?e.checked=e.value==t:e.value!=t&&(e.value=null==t?"":t)},y.attr=(e,t,r)=>{if(null==t||!1===t)e.removeAttribute(r);else{var a=!0===t?"":String(t);e.getAttribute(r)!==a&&e.setAttribute(r,a)}},y.class=(e,t)=>{var r=e._n||"",a=Object.create(null);if(r.split(/\s+/).forEach(e=>e&&(a[e]=1)),"string"==typeof t)t.split(/\s+/).forEach(e=>e&&(a[e]=1));else if(t)for(var n in t)t[n]?a[n]=1:delete a[n];var o=Object.keys(a).join(" ");(e.getAttribute("class")||"")!==o&&e.setAttribute("class",o)};var g=(r,a)=>{if(r._m)return r._m;var n=r.getAttribute("s-data");if(t[n]){var o=t[n]();a&&Object.setPrototypeOf(o,a);var i=d(o);i.$refs={},i.$root=r,i.$store=e,i.$parent=a;var p=[],u=Object.create(null),v=e=>{var t=e.target;if("input"!==e.type||!t._c)for(var a=r.parentNode,n=e.type;t&&t!==a;){var o=t._h&&t._h[n];if(o){var l=t._s;if(!l||l.$root!==i.$root){t=t.parentNode;continue}for(var s=o.length;s--;){var p=o[s],f=p.p;if(p.model){var u="checkbox"===t.type?t.checked:t.value;if("string"==typeof u){var v=u.trim();v&&isFinite(v)&&(48===v.charCodeAt(0)&&1!==v.length&&46!==v.charCodeAt(1)||(u=Number(v)))}if("string"==typeof f)l&&(l[f]=u);else{for(var h=l,d=0,y=f.length-1;d<y&&h;)h=h[f[d++]];h&&(h[f[y]]=u)}}else{var g=c(l,f);"function"==typeof g.val&&(Object.defineProperty(e,"currentTarget",{configurable:!0,value:t}),g.val.call(g.ctx,e))}}}t=t.parentNode}},b=e=>{u[e]||(u[e]=!0,r.addEventListener(e,v,!!l[e]))},_=(e,t,a)=>{if(1===e.nodeType&&!e.hasAttribute("s-ignore"))if(e!==r&&e.hasAttribute("s-data")){var n=g(e,t);n&&a.push(n.unmount)}else{var o=e.getAttribute("s-if"),l=!o&&"TEMPLATE"===e.tagName&&e.getAttribute("s-for"),p=[];if(e.hasAttribute("class")&&!e._n&&(e._n=e.getAttribute("class")),o){var u=document.createTextNode(""),m=null,O=[];e.replaceWith(u);var A="!"===o[0],j=A?o.slice(1):o,x=-1===j.indexOf(".")?j:j.split(".");return a.push(()=>{for(var e=O.length;e--;)O[e]()}),a.push(h(()=>{var r=c(t,x).val;if(A&&(r=!r),r)m||((m=e.cloneNode(!0)).removeAttribute("s-if"),_(m,t,O),u.parentNode.insertBefore(m,u));else if(m){for(var a=O.length;a--;)O[a]();O=[],m.remove(),m=null}},s))}if(l){var P=l.indexOf(" in ");if(-1!==P){var N,k=l.slice(0,P).trim(),E=l.slice(P+4).trim(),w=k.replace(/[()]/g,"").split(","),C=w[0].trim(),S=w[1]?w[1].trim():null,T=-1===E.indexOf(".")?E:E.split("."),L=e.getAttribute("s-key"),$=L?-1===L.indexOf(".")?L:L.split("."):null,M=(u=document.createTextNode(""),Object.create(null));return e.replaceWith(u),a.push(()=>{for(var e in M)M[e].cleanups.forEach(e=>e())}),a.push(h(()=>{var r=c(t,T).val||[];"number"==typeof r&&(r=Array.from({length:Math.max(0,Math.floor(r))},(e,t)=>t+1)),Array.isArray(r)&&f(r,"length");var a=document.createDocumentFragment(),n=u.nextSibling;N=Object.create(null);for(var o=Array.isArray(r),i=o?r:Object.keys(r),l=o?r.length:i.length,s=0;s<l;s++){var p,v=o?s:i[s],h=o?r[s]:r[v];p=null==h||"object"!=typeof h?String(h):$?c(h,$).val:String(v)+"_o",N[p]&&(p+="_"+s);var y=M[p];if(y)y.scope[C]=h,S&&(y.scope[S]=v);else{var g=e.content.cloneNode(!0),b=Object.create(t);Object.defineProperty(b,"_i",{value:!0});var m=d(b);m[C]=h,S&&(m[S]=v);for(var O=Array.prototype.slice.call(g.childNodes),A=[],j=0;j<O.length;j++)_(O[j],m,A);y={nodes:Array.prototype.slice.call(g.childNodes),scope:m,cleanups:A},M[p]=y}if(y.nodes[0]===n)a.childNodes.length&&u.parentNode.insertBefore(a,n),n=y.nodes[y.nodes.length-1].nextSibling;else for(j=0;j<y.nodes.length;j++)a.appendChild(y.nodes[j]);N[p]=!0}for(var x in a.childNodes.length&&u.parentNode.insertBefore(a,n),M)N[x]||(M[x].cleanups.forEach(e=>e()),M[x].nodes.forEach(e=>e.remove()),delete M[x])},s))}}if(e.hasAttributes())for(var R=e.attributes,q=R.length;q--;){var B=R[q],D=B.name,F=B.value;if(58===D.charCodeAt(0)){var H=D.slice(1),K=33===F.charCodeAt(0),W=K?F.slice(1):F;x=-1===W.indexOf(".")?W:W.split(".");p.push({type:"attr",name:H,path:x,neg:K})}else if(115===D.charCodeAt(0)&&45===D.charCodeAt(1)){let r=D.slice(2),n=-1===F.indexOf(".")?F:F.split(".");if("init"===r||"destroy"===r)((r,n)=>{var o=c(t,n);"function"==typeof o.val&&("init"===r?s(()=>{var t=o.val.call(o.ctx,e);"function"==typeof t&&a.push(t)}):a.push(()=>o.val.call(o.ctx,e)))})(r,n);else if("effect"===r)a.push(h(()=>{var r=c(t,n);"function"==typeof r.val&&r.val.call(r.ctx,e)},s));else if("model"===r){p.push({type:"value",path:n}),e._s=t,e._h=e._h||{};var z="checkbox"===e.type||"radio"===e.type||"SELECT"===e.tagName?"change":"input";"input"===z&&(e.addEventListener("compositionstart",()=>e._c=!0),e.addEventListener("compositionend",()=>{e._c=!1,v({target:e,type:"input"})})),(e._h[z]=e._h[z]||[]).push({model:!0,p:n}),b(z)}else"ref"===r?i.$refs[F]=e:y[r]?p.push({type:r,path:n}):(e._s=t,e._h=e._h||{},(e._h[r]=e._h[r]||[]).unshift({p:n}),b(r))}}p.length&&a.push(h(()=>{for(var r=p.length;r--;){var a=p[r],n=c(t,a.path),o="function"==typeof n.val?n.val.call(n.ctx,e):n.val;"attr"===a.type?(a.neg&&(o=!o),"class"===a.name?y.class(e,o):y.attr(e,o,a.name)):y[a.type](e,o)}},s));for(var G=e.firstChild;G;){var I=G.nextSibling;_(G,t,a),G=I}}};_(r,i,p),i.init&&i.init();var m={unmount:()=>{i.destroy&&i.destroy.call(i);for(var e=p.length;e--;)p[e]();for(var t in u)r.removeEventListener(t,v);r._m=null}};return r._m=m,m}},b=e=>{if(!e||"object"!=typeof e)return e;var t=e._t||e;if(Array.isArray(t))return t.map(e=>b(e));var r={};for(var a in t)r[a]=b(t[a]);return r};return{data:(e,r)=>{t[e]=r},compose:(...e)=>{for(var t={},r=0;r<e.length;r++){var a=e[r];a&&Object.defineProperties(t,Object.getOwnPropertyDescriptors("function"==typeof a?a():a))}return t},start:()=>{for(var e=document.querySelectorAll("[s-data]"),t=e.length;t--;)g(e[t])},store:(t,r)=>{if(void 0===r)return e[t];e[t]=r;var a=e[t];return a&&"function"==typeof a.init&&a.init.call(a),a},raw:b,mount:e=>g(e),unmount:e=>{e&&e._m&&e._m.unmount()}}})();export default spiki;
package/spiki.js CHANGED
@@ -554,8 +554,23 @@ var spiki = (() => {
554
554
  return result;
555
555
  };
556
556
 
557
+ var compose = (...modules) => {
558
+ var target = {};
559
+ for (var i = 0; i < modules.length; i++) {
560
+ var mod = modules[i];
561
+ if (mod) {
562
+ Object.defineProperties(
563
+ target,
564
+ Object.getOwnPropertyDescriptors(typeof mod === 'function' ? mod() : mod)
565
+ );
566
+ }
567
+ }
568
+ return target;
569
+ };
570
+
557
571
  return {
558
572
  data: (name, factory) => { cmpReg[name] = factory; },
573
+ compose: compose,
559
574
  start: () => {
560
575
  var els = document.querySelectorAll('[s-data]');
561
576
  var i = els.length;
package/spiki.min.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var spiki=(()=>{var r,e=Object,t=Array,a=Reflect,o=Promise,n=Node,i=document,l=console,f="length",v="value",s="push",u="forEach",p="indexOf",c="split",d="slice",_="call",y="keys",h="get",m="prototype",g="hasOwnProperty",b="getPrototypeOf",x="defineProperty",N="create",P="isArray",k="getAttribute",A="setAttribute",w="removeAttribute",E="hasAttribute",S="tagName",T="type",$="name",O="checked",j="parentNode",C="nextSibling",L="textContent",q="innerHTML",M="replaceWith",D="insertBefore",F="cloneNode",K="remove",B="createTextNode",H="addEventListener",R="input",W="checkbox",z="function",G="radio",I="class",J="model",Q="object",U="unshift",V="scope",X="trim",Y="cleanups",Z="nodes",rr="deps",er="destroy",tr="init",ar="charCodeAt",or="sched",nr="string",ir="unmount",lr="attr",fr="s-data",vr="s-if",sr=e[N](null),ur=[],pr=!1,cr=null,dr=!1,_r=o.resolve(),yr={blur:1,focus:1,scroll:1,load:1,error:1,mouseenter:1,mouseleave:1,toggle:1},hr=r=>{r._q||(r._q=!0,ur[s](r),pr||(pr=!0,_r.then(()=>{var r=ur;ur=[],pr=!1;for(var e=r[f];e--;)r[e]._q=!1,r[e]()})))},mr=(r,e)=>{var a,o=r;if(typeof e===nr)a=r?r[e]:void 0;else{for(var n=0,i=e[f];n<i-1&&o;)o=o[e[n++]];a=o?o[e[i-1]]:void 0}if(void 0===a){var v=t[P](e)?e.join("."):e;l.warn("[spikijs] Property undefined: "+v)}return{ctx:o,val:a}},gr={};[s,"pop","shift",U,"splice","sort","reverse"][u](r=>{gr[r]=function(...e){dr=!0;try{return t[m][r].apply(this,e)}finally{dr=!1,xr(this,f)}}});var br=(r,t)=>{if(cr){var a=r._d||(e[x](r,"_d",{value:e[N](null),writable:!0}),r._d),o=a[t]||(a[t]=[]);-1===o[p](cr)&&(o[s](cr),cr[rr][s](o))}},xr=(r,e)=>{if(!dr&&r._d&&r._d[e])for(var t=r._d[e][d](),a=0,o=t[f];a<o;a++){var n=t[a];n[or]?n[or](n):n()}},Nr=r=>{for(var e=r[rr][f];e--;){var t=r[rr][e],a=t[p](r);-1!==a&&(t[a]=t[t[f]-1],t.pop())}r[rr]=[]},Pr=(r,e)=>{var t=()=>{Nr(t);var e=cr;cr=t;try{r()}finally{cr=e}};return t[rr]=[],t[or]=e,t(),()=>Nr(t)},kr=r=>{if(!r||typeof r!==Q||r._y||r instanceof n)return r;if(e[m][g][_](r,"_p"))return r._p;var o=new Proxy(r,{get:(r,o,i)=>{if("_y"===o)return i===r._p;if("_t"===o)return r;if("_d"===o)return r._d;if("_i"===o)return r._i;if(t[P](r)&&gr[g](o))return gr[o];var l=e.getOwnPropertyDescriptor(r,o);if(l&&l[h]){var f="_"+o;return f in r||Pr(()=>i[f]=l[h][_](i)),i[f]}br(r,o);var v=a[h](r,o,i);return!v||typeof v!==Q||v instanceof n?v:kr(v)},set:(r,o,n,i)=>{var l=r[o],v=t[P](r),s=v?Number(o)<r[f]:e[m][g][_](r,o);if(r._i&&!s)for(var u=e[b](r);u&&u!==e[m];){if(e[m][g][_](u,o)){var p=a.set(u,o,n);return!dr&&(n!==l||n&&typeof n===Q)&&xr(r,o),p}u=e[b](u)}return p=a.set(r,o,n,i),!dr&&p&&(!s||n!==l||n&&typeof n===Q)&&(xr(r,o),v?xr(r,f):s||xr(r,"_k")),p},deleteProperty:(r,o)=>{var n=e[m][g][_](r,o),i=a.deleteProperty(r,o);return i&&n&&(xr(r,o),t[P](r)?xr(r,f):xr(r,"_k")),i},ownKeys:r=>(br(r,"_k"),a.ownKeys(r))});return e[x](r,"_p",{value:o}),o};r=kr({});var Ar=e[N](null);Ar.text=(r,e)=>{e=null==e?"":e,r[L]!==String(e)&&(r[L]=e)},Ar.html=(r,e)=>{r[q]!=e&&(r[q]=null==e?"":e)},Ar[v]=(r,e)=>{r[T]===W?r[O]=!!e:r[T]===G?r[O]=r[v]==e:r[v]!=e&&(r[v]=null==e?"":e)},Ar[lr]=(r,e,t)=>{if(null==e||!1===e)r[w](t);else{var a=!0===e?"":String(e);r[k](t)!==a&&r[A](t,a)}},Ar[I]=(r,t)=>{var a=r._n||"",o=e[N](null);if(a[c](/\s+/)[u](r=>r&&(o[r]=1)),typeof t===nr)t[c](/\s+/)[u](r=>r&&(o[r]=1));else if(t)for(var n in t)t[n]?o[n]=1:delete o[n];var i=e[y](o).join(" ");(r[k](I)||"")!==i&&r[A](I,i)};var wr=(a,o)=>{if(a._m)return a._m;var n=a[k](fr);if(sr[n]){var l=sr[n]();o&&e.setPrototypeOf(l,o);var h=kr(l);h.$refs={},h.$root=a,h.$store=r,h.$parent=o;var g=[],b=e[N](null),A=r=>{var t=r.target;if(r[T]!==R||!t._c)for(var o=a[j],n=r[T];t&&t!==o;){var i=t._h&&t._h[n];if(i){var l=t._s;if(!l||l.$root!==h.$root){t=t[j];continue}for(var s=i[f];s--;){var u=i[s],p=u.p;if(u[J]){var c=t[T]===W?t[O]:t[v];if(typeof c===nr){var d=c[X]();d&&isFinite(d)&&(48===d[ar](0)&&1!==d[f]&&46!==d[ar](1)||(c=Number(d)))}if(typeof p===nr)l&&(l[p]=c);else{for(var y=l,m=0,g=p[f]-1;m<g&&y;)y=y[p[m++]];y&&(y[p[g]]=c)}}else{var b=mr(l,p);typeof b.val===z&&(e[x](r,"currentTarget",{configurable:!0,value:t}),b.val[_](b.ctx,r))}}}t=t[j]}},L=r=>{b[r]||(b[r]=!0,a[H](r,A,!!yr[r]))},q=(r,o,n)=>{if(1===r.nodeType&&!r[E]("s-ignore"))if(r!==a&&r[E](fr)){var l=wr(r,o);l&&n[s](l[ir])}else{var g=r[k](vr),b=!g&&"TEMPLATE"===r[S]&&r[k]("s-for"),O=[];if(r[E](I)&&!r._n&&(r._n=r[k](I)),g){var rr=i[B](""),or=null,nr=[];r[M](rr);var sr="!"===g[0],ur=sr?g[d](1):g,pr=-1===ur[p](".")?ur:ur[c](".");return n[s](()=>{for(var r=nr[f];r--;)nr[r]()}),n[s](Pr(()=>{var e=mr(o,pr).val;if(sr&&(e=!e),e)or||((or=r[F](!0))[w](vr),q(or,o,nr),rr[j][D](or,rr));else if(or){for(var t=nr[f];t--;)nr[t]();nr=[],or[K](),or=null}},hr))}if(b){var cr=b[p](" in ");if(-1!==cr){var dr,_r=b[d](0,cr)[X](),yr=b[d](cr+4)[X](),gr=_r.replace(/[()]/g,"")[c](","),xr=gr[0][X](),Nr=gr[1]?gr[1][X]():null,Er=-1===yr[p](".")?yr:yr[c]("."),Sr=r[k]("s-key"),Tr=Sr?-1===Sr[p](".")?Sr:Sr[c]("."):null,$r=(rr=i[B](""),e[N](null));return r[M](rr),n[s](()=>{for(var r in $r)$r[r][Y][u](r=>r())}),n[s](Pr(()=>{var a=mr(o,Er).val||[];"number"==typeof a&&(a=t.from({length:Math.max(0,Math.floor(a))},(r,e)=>e+1)),t[P](a)&&br(a,f);var n=i.createDocumentFragment(),l=rr[C];dr=e[N](null);for(var v=t[P](a),s=v?a:e[y](a),p=v?a[f]:s[f],c=0;c<p;c++){var h,g=v?c:s[c],b=v?a[c]:a[g];h=null==b||typeof b!==Q?String(b):Tr?mr(b,Tr).val:String(g)+"_o",dr[h]&&(h+="_"+c);var k=$r[h];if(k)k[V][xr]=b,Nr&&(k[V][Nr]=g);else{var A=r.content[F](!0),w=e[N](o);e[x](w,"_i",{value:!0});var E=kr(w);E[xr]=b,Nr&&(E[Nr]=g);for(var S=t[m][d][_](A.childNodes),T=[],$=0;$<S[f];$++)q(S[$],E,T);k={nodes:t[m][d][_](A.childNodes),scope:E,cleanups:T},$r[h]=k}if(k[Z][0]===l)n.childNodes[f]&&rr[j][D](n,l),l=k[Z][k[Z][f]-1][C];else for($=0;$<k[Z][f];$++)n.appendChild(k[Z][$]);dr[h]=!0}for(var O in n.childNodes[f]&&rr[j][D](n,l),$r)dr[O]||($r[O][Y][u](r=>r()),$r[O][Z][u](r=>r[K]()),delete $r[O])},hr))}}if(r.hasAttributes())for(var Or=r.attributes,jr=Or[f];jr--;){var Cr=Or[jr],Lr=Cr[$],qr=Cr[v];if(58===Lr[ar](0)){var Mr=Lr[d](1),Dr=33===qr[ar](0),Fr=Dr?qr[d](1):qr;pr=-1===Fr[p](".")?Fr:Fr[c]("."),O[s]({type:lr,name:Mr,path:pr,neg:Dr})}else if(115===Lr[ar](0)&&45===Lr[ar](1)){let e=Lr[d](2),t=-1===qr[p](".")?qr:qr[c](".");if(e===tr||e===er)((e,t)=>{var a=mr(o,t);typeof a.val===z&&(e===tr?hr(()=>{var e=a.val[_](a.ctx,r);typeof e===z&&n[s](e)}):n[s](()=>a.val[_](a.ctx,r)))})(e,t);else if("effect"===e)n[s](Pr(()=>{var e=mr(o,t);typeof e.val===z&&e.val[_](e.ctx,r)},hr));else if(e===J){O[s]({type:v,path:t}),r._s=o,r._h=r._h||{};var Kr=r[T]===W||r[T]===G||"SELECT"===r[S]?"change":R;Kr===R&&(r[H]("compositionstart",()=>r._c=!0),r[H]("compositionend",()=>{r._c=!1,A({target:r,type:R})})),(r._h[Kr]=r._h[Kr]||[])[s]({model:!0,p:t}),L(Kr)}else"ref"===e?h.$refs[qr]=r:Ar[e]?O[s]({type:e,path:t}):(r._s=o,r._h=r._h||{},(r._h[e]=r._h[e]||[])[U]({p:t}),L(e))}}O[f]&&n[s](Pr(()=>{for(var e=O[f];e--;){var t=O[e],a=mr(o,t.path),n=typeof a.val===z?a.val[_](a.ctx,r):a.val;t[T]===lr?(t.neg&&(n=!n),t[$]===I?Ar[I](r,n):Ar[lr](r,n,t[$])):Ar[t[T]](r,n)}},hr));for(var Br=r.firstChild;Br;){var Hr=Br[C];q(Br,o,n),Br=Hr}}};q(a,h,g),h[tr]&&h[tr]();var rr={unmount:()=>{h[er]&&h[er][_](h);for(var r=g[f];r--;)g[r]();for(var e in b)a.removeEventListener(e,A);a._m=null}};return a._m=rr,rr}},Er=r=>{if(!r||typeof r!==Q)return r;var e=r._t||r;if(t[P](e))return e.map(r=>Er(r));var a={};for(var o in e)a[o]=Er(e[o]);return a};return{data:(r,e)=>{sr[r]=e},start:()=>{for(var r=i.querySelectorAll("[s-data]"),e=r[f];e--;)wr(r[e])},store:(e,t)=>{if(void 0===t)return r[e];r[e]=t;var a=r[e];return a&&typeof a[tr]===z&&a[tr][_](a),a},raw:Er,mount:r=>wr(r),unmount:r=>{r&&r._m&&r._m[ir]()}}})();window.spiki=spiki})();
1
+ !function(){"use strict";var e=(()=>{var e,t=Object.create(null),r=[],a=!1,n=null,o=!1,i=Promise.resolve(),l={blur:1,focus:1,scroll:1,load:1,error:1,mouseenter:1,mouseleave:1,toggle:1},s=e=>{e._q||(e._q=!0,r.push(e),a||(a=!0,i.then(()=>{var e=r;r=[],a=!1;for(var t=e.length;t--;)e[t]._q=!1,e[t]()})))},c=(e,t)=>{var r,a=e;if("string"==typeof t)r=e?e[t]:void 0;else{for(var n=0,o=t.length;n<o-1&&a;)a=a[t[n++]];r=a?a[t[o-1]]:void 0}if(void 0===r){var i=Array.isArray(t)?t.join("."):t;console.warn("[spikijs] Property undefined: "+i)}return{ctx:a,val:r}},f={};["push","pop","shift","unshift","splice","sort","reverse"].forEach(e=>{f[e]=function(...t){o=!0;try{return Array.prototype[e].apply(this,t)}finally{o=!1,u(this,"length")}}});var p=(e,t)=>{if(n){var r=e._d||(Object.defineProperty(e,"_d",{value:Object.create(null),writable:!0}),e._d),a=r[t]||(r[t]=[]);-1===a.indexOf(n)&&(a.push(n),n.deps.push(a))}},u=(e,t)=>{if(!o&&e._d&&e._d[t])for(var r=e._d[t].slice(),a=0,n=r.length;a<n;a++){var i=r[a];i.sched?i.sched(i):i()}},v=e=>{for(var t=e.deps.length;t--;){var r=e.deps[t],a=r.indexOf(e);-1!==a&&(r[a]=r[r.length-1],r.pop())}e.deps=[]},h=(e,t)=>{var r=()=>{v(r);var t=n;n=r;try{e()}finally{n=t}};return r.deps=[],r.sched=t,r(),()=>v(r)},d=e=>{if(!e||"object"!=typeof e||e._y||e instanceof Node)return e;if(Object.prototype.hasOwnProperty.call(e,"_p"))return e._p;var t=new Proxy(e,{get:(e,t,r)=>{if("_y"===t)return r===e._p;if("_t"===t)return e;if("_d"===t)return e._d;if("_i"===t)return e._i;if(Array.isArray(e)&&f.hasOwnProperty(t))return f[t];var a=Object.getOwnPropertyDescriptor(e,t);if(a&&a.get){var n="_"+t;return n in e||h(()=>r[n]=a.get.call(r)),r[n]}p(e,t);var o=Reflect.get(e,t,r);return!o||"object"!=typeof o||o instanceof Node?o:d(o)},set:(e,t,r,a)=>{var n=e[t],i=Array.isArray(e),l=i?Number(t)<e.length:Object.prototype.hasOwnProperty.call(e,t);if(e._i&&!l)for(var s=Object.getPrototypeOf(e);s&&s!==Object.prototype;){if(Object.prototype.hasOwnProperty.call(s,t)){var c=Reflect.set(s,t,r);return!o&&(r!==n||r&&"object"==typeof r)&&u(e,t),c}s=Object.getPrototypeOf(s)}c=Reflect.set(e,t,r,a);return!o&&c&&(!l||r!==n||r&&"object"==typeof r)&&(u(e,t),i?u(e,"length"):l||u(e,"_k")),c},deleteProperty:(e,t)=>{var r=Object.prototype.hasOwnProperty.call(e,t),a=Reflect.deleteProperty(e,t);return a&&r&&(u(e,t),Array.isArray(e)?u(e,"length"):u(e,"_k")),a},ownKeys:e=>(p(e,"_k"),Reflect.ownKeys(e))});return Object.defineProperty(e,"_p",{value:t}),t};e=d({});var y=Object.create(null);y.text=(e,t)=>{t=null==t?"":t,e.textContent!==String(t)&&(e.textContent=t)},y.html=(e,t)=>{e.innerHTML!=t&&(e.innerHTML=null==t?"":t)},y.value=(e,t)=>{"checkbox"===e.type?e.checked=!!t:"radio"===e.type?e.checked=e.value==t:e.value!=t&&(e.value=null==t?"":t)},y.attr=(e,t,r)=>{if(null==t||!1===t)e.removeAttribute(r);else{var a=!0===t?"":String(t);e.getAttribute(r)!==a&&e.setAttribute(r,a)}},y.class=(e,t)=>{var r=e._n||"",a=Object.create(null);if(r.split(/\s+/).forEach(e=>e&&(a[e]=1)),"string"==typeof t)t.split(/\s+/).forEach(e=>e&&(a[e]=1));else if(t)for(var n in t)t[n]?a[n]=1:delete a[n];var o=Object.keys(a).join(" ");(e.getAttribute("class")||"")!==o&&e.setAttribute("class",o)};var g=(r,a)=>{if(r._m)return r._m;var n=r.getAttribute("s-data");if(t[n]){var o=t[n]();a&&Object.setPrototypeOf(o,a);var i=d(o);i.$refs={},i.$root=r,i.$store=e,i.$parent=a;var f=[],u=Object.create(null),v=e=>{var t=e.target;if("input"!==e.type||!t._c)for(var a=r.parentNode,n=e.type;t&&t!==a;){var o=t._h&&t._h[n];if(o){var l=t._s;if(!l||l.$root!==i.$root){t=t.parentNode;continue}for(var s=o.length;s--;){var f=o[s],p=f.p;if(f.model){var u="checkbox"===t.type?t.checked:t.value;if("string"==typeof u){var v=u.trim();v&&isFinite(v)&&(48===v.charCodeAt(0)&&1!==v.length&&46!==v.charCodeAt(1)||(u=Number(v)))}if("string"==typeof p)l&&(l[p]=u);else{for(var h=l,d=0,y=p.length-1;d<y&&h;)h=h[p[d++]];h&&(h[p[y]]=u)}}else{var g=c(l,p);"function"==typeof g.val&&(Object.defineProperty(e,"currentTarget",{configurable:!0,value:t}),g.val.call(g.ctx,e))}}}t=t.parentNode}},b=e=>{u[e]||(u[e]=!0,r.addEventListener(e,v,!!l[e]))},_=(e,t,a)=>{if(1===e.nodeType&&!e.hasAttribute("s-ignore"))if(e!==r&&e.hasAttribute("s-data")){var n=g(e,t);n&&a.push(n.unmount)}else{var o=e.getAttribute("s-if"),l=!o&&"TEMPLATE"===e.tagName&&e.getAttribute("s-for"),f=[];if(e.hasAttribute("class")&&!e._n&&(e._n=e.getAttribute("class")),o){var u=document.createTextNode(""),m=null,O=[];e.replaceWith(u);var A="!"===o[0],j=A?o.slice(1):o,x=-1===j.indexOf(".")?j:j.split(".");return a.push(()=>{for(var e=O.length;e--;)O[e]()}),a.push(h(()=>{var r=c(t,x).val;if(A&&(r=!r),r)m||((m=e.cloneNode(!0)).removeAttribute("s-if"),_(m,t,O),u.parentNode.insertBefore(m,u));else if(m){for(var a=O.length;a--;)O[a]();O=[],m.remove(),m=null}},s))}if(l){var P=l.indexOf(" in ");if(-1!==P){var N,w=l.slice(0,P).trim(),k=l.slice(P+4).trim(),E=w.replace(/[()]/g,"").split(","),C=E[0].trim(),S=E[1]?E[1].trim():null,T=-1===k.indexOf(".")?k:k.split("."),L=e.getAttribute("s-key"),$=L?-1===L.indexOf(".")?L:L.split("."):null,M=(u=document.createTextNode(""),Object.create(null));return e.replaceWith(u),a.push(()=>{for(var e in M)M[e].cleanups.forEach(e=>e())}),a.push(h(()=>{var r=c(t,T).val||[];"number"==typeof r&&(r=Array.from({length:Math.max(0,Math.floor(r))},(e,t)=>t+1)),Array.isArray(r)&&p(r,"length");var a=document.createDocumentFragment(),n=u.nextSibling;N=Object.create(null);for(var o=Array.isArray(r),i=o?r:Object.keys(r),l=o?r.length:i.length,s=0;s<l;s++){var f,v=o?s:i[s],h=o?r[s]:r[v];f=null==h||"object"!=typeof h?String(h):$?c(h,$).val:String(v)+"_o",N[f]&&(f+="_"+s);var y=M[f];if(y)y.scope[C]=h,S&&(y.scope[S]=v);else{var g=e.content.cloneNode(!0),b=Object.create(t);Object.defineProperty(b,"_i",{value:!0});var m=d(b);m[C]=h,S&&(m[S]=v);for(var O=Array.prototype.slice.call(g.childNodes),A=[],j=0;j<O.length;j++)_(O[j],m,A);y={nodes:Array.prototype.slice.call(g.childNodes),scope:m,cleanups:A},M[f]=y}if(y.nodes[0]===n)a.childNodes.length&&u.parentNode.insertBefore(a,n),n=y.nodes[y.nodes.length-1].nextSibling;else for(j=0;j<y.nodes.length;j++)a.appendChild(y.nodes[j]);N[f]=!0}for(var x in a.childNodes.length&&u.parentNode.insertBefore(a,n),M)N[x]||(M[x].cleanups.forEach(e=>e()),M[x].nodes.forEach(e=>e.remove()),delete M[x])},s))}}if(e.hasAttributes())for(var R=e.attributes,q=R.length;q--;){var B=R[q],D=B.name,F=B.value;if(58===D.charCodeAt(0)){var H=D.slice(1),K=33===F.charCodeAt(0),W=K?F.slice(1):F;x=-1===W.indexOf(".")?W:W.split(".");f.push({type:"attr",name:H,path:x,neg:K})}else if(115===D.charCodeAt(0)&&45===D.charCodeAt(1)){let r=D.slice(2),n=-1===F.indexOf(".")?F:F.split(".");if("init"===r||"destroy"===r)((r,n)=>{var o=c(t,n);"function"==typeof o.val&&("init"===r?s(()=>{var t=o.val.call(o.ctx,e);"function"==typeof t&&a.push(t)}):a.push(()=>o.val.call(o.ctx,e)))})(r,n);else if("effect"===r)a.push(h(()=>{var r=c(t,n);"function"==typeof r.val&&r.val.call(r.ctx,e)},s));else if("model"===r){f.push({type:"value",path:n}),e._s=t,e._h=e._h||{};var z="checkbox"===e.type||"radio"===e.type||"SELECT"===e.tagName?"change":"input";"input"===z&&(e.addEventListener("compositionstart",()=>e._c=!0),e.addEventListener("compositionend",()=>{e._c=!1,v({target:e,type:"input"})})),(e._h[z]=e._h[z]||[]).push({model:!0,p:n}),b(z)}else"ref"===r?i.$refs[F]=e:y[r]?f.push({type:r,path:n}):(e._s=t,e._h=e._h||{},(e._h[r]=e._h[r]||[]).unshift({p:n}),b(r))}}f.length&&a.push(h(()=>{for(var r=f.length;r--;){var a=f[r],n=c(t,a.path),o="function"==typeof n.val?n.val.call(n.ctx,e):n.val;"attr"===a.type?(a.neg&&(o=!o),"class"===a.name?y.class(e,o):y.attr(e,o,a.name)):y[a.type](e,o)}},s));for(var G=e.firstChild;G;){var I=G.nextSibling;_(G,t,a),G=I}}};_(r,i,f),i.init&&i.init();var m={unmount:()=>{i.destroy&&i.destroy.call(i);for(var e=f.length;e--;)f[e]();for(var t in u)r.removeEventListener(t,v);r._m=null}};return r._m=m,m}},b=e=>{if(!e||"object"!=typeof e)return e;var t=e._t||e;if(Array.isArray(t))return t.map(e=>b(e));var r={};for(var a in t)r[a]=b(t[a]);return r};return{data:(e,r)=>{t[e]=r},compose:(...e)=>{for(var t={},r=0;r<e.length;r++){var a=e[r];a&&Object.defineProperties(t,Object.getOwnPropertyDescriptors("function"==typeof a?a():a))}return t},start:()=>{for(var e=document.querySelectorAll("[s-data]"),t=e.length;t--;)g(e[t])},store:(t,r)=>{if(void 0===r)return e[t];e[t]=r;var a=e[t];return a&&"function"==typeof a.init&&a.init.call(a),a},raw:b,mount:e=>g(e),unmount:e=>{e&&e._m&&e._m.unmount()}}})();window.spiki=e}();