spikijs 1.1.27 → 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 +22 -5
- package/spiki.esm.min.js +1 -1
- package/spiki.js +22 -5
- 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
|
@@ -385,7 +385,7 @@ var spiki = (() => {
|
|
|
385
385
|
}
|
|
386
386
|
if (Array.isArray(list)) track(list, 'length');
|
|
387
387
|
var frag = document.createDocumentFragment();
|
|
388
|
-
var
|
|
388
|
+
var anchor = end.nextSibling;
|
|
389
389
|
usedKeys = Object.create(null);
|
|
390
390
|
var isArr = Array.isArray(list);
|
|
391
391
|
var keys = isArr ? list : Object.keys(list);
|
|
@@ -418,13 +418,15 @@ var spiki = (() => {
|
|
|
418
418
|
row = { nodes: Array.prototype.slice.call(clone.childNodes), scope: rowScope, cleanups: rowCleanups };
|
|
419
419
|
nodePool[unique] = row;
|
|
420
420
|
}
|
|
421
|
-
if (row.nodes[0]
|
|
422
|
-
|
|
423
|
-
|
|
421
|
+
if (row.nodes[0] === anchor) {
|
|
422
|
+
if (frag.childNodes.length) end.parentNode.insertBefore(frag, anchor);
|
|
423
|
+
anchor = row.nodes[row.nodes.length - 1].nextSibling;
|
|
424
|
+
} else {
|
|
425
|
+
for (var n = 0; n < row.nodes.length; n++) frag.appendChild(row.nodes[n]);
|
|
424
426
|
}
|
|
425
|
-
cursor = row.nodes[row.nodes.length-1];
|
|
426
427
|
usedKeys[unique] = true;
|
|
427
428
|
}
|
|
429
|
+
if (frag.childNodes.length) end.parentNode.insertBefore(frag, anchor);
|
|
428
430
|
for (var k in nodePool) if (!usedKeys[k]) {
|
|
429
431
|
nodePool[k].cleanups.forEach(c => c());
|
|
430
432
|
nodePool[k].nodes.forEach(n => n.remove());
|
|
@@ -549,8 +551,23 @@ var spiki = (() => {
|
|
|
549
551
|
return result;
|
|
550
552
|
};
|
|
551
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
|
+
|
|
552
568
|
return {
|
|
553
569
|
data: (name, factory) => { cmpReg[name] = factory; },
|
|
570
|
+
compose: compose,
|
|
554
571
|
start: () => {
|
|
555
572
|
var els = document.querySelectorAll('[s-data]');
|
|
556
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
|
@@ -388,7 +388,7 @@ var spiki = (() => {
|
|
|
388
388
|
}
|
|
389
389
|
if (Array.isArray(list)) track(list, 'length');
|
|
390
390
|
var frag = document.createDocumentFragment();
|
|
391
|
-
var
|
|
391
|
+
var anchor = end.nextSibling;
|
|
392
392
|
usedKeys = Object.create(null);
|
|
393
393
|
var isArr = Array.isArray(list);
|
|
394
394
|
var keys = isArr ? list : Object.keys(list);
|
|
@@ -421,13 +421,15 @@ var spiki = (() => {
|
|
|
421
421
|
row = { nodes: Array.prototype.slice.call(clone.childNodes), scope: rowScope, cleanups: rowCleanups };
|
|
422
422
|
nodePool[unique] = row;
|
|
423
423
|
}
|
|
424
|
-
if (row.nodes[0]
|
|
425
|
-
|
|
426
|
-
|
|
424
|
+
if (row.nodes[0] === anchor) {
|
|
425
|
+
if (frag.childNodes.length) end.parentNode.insertBefore(frag, anchor);
|
|
426
|
+
anchor = row.nodes[row.nodes.length - 1].nextSibling;
|
|
427
|
+
} else {
|
|
428
|
+
for (var n = 0; n < row.nodes.length; n++) frag.appendChild(row.nodes[n]);
|
|
427
429
|
}
|
|
428
|
-
cursor = row.nodes[row.nodes.length-1];
|
|
429
430
|
usedKeys[unique] = true;
|
|
430
431
|
}
|
|
432
|
+
if (frag.childNodes.length) end.parentNode.insertBefore(frag, anchor);
|
|
431
433
|
for (var k in nodePool) if (!usedKeys[k]) {
|
|
432
434
|
nodePool[k].cleanups.forEach(c => c());
|
|
433
435
|
nodePool[k].nodes.forEach(n => n.remove());
|
|
@@ -552,8 +554,23 @@ var spiki = (() => {
|
|
|
552
554
|
return result;
|
|
553
555
|
};
|
|
554
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
|
+
|
|
555
571
|
return {
|
|
556
572
|
data: (name, factory) => { cmpReg[name] = factory; },
|
|
573
|
+
compose: compose,
|
|
557
574
|
start: () => {
|
|
558
575
|
var els = document.querySelectorAll('[s-data]');
|
|
559
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}();
|