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 +38 -1
- package/package.json +1 -1
- package/spiki.d.ts +5 -0
- package/spiki.esm.js +15 -0
- package/spiki.esm.min.js +1 -1
- package/spiki.js +15 -0
- package/spiki.min.js +1 -1
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-
|
|
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
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
|
|
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
|
-
(
|
|
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}();
|