spikijs 1.1.30 → 1.1.32
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 +11 -12
- package/package.json +1 -1
- package/spiki.d.ts +3 -8
- package/spiki.esm.js +40 -19
- package/spiki.esm.min.js +1 -1
- package/spiki.js +40 -19
- package/spiki.min.js +1 -1
package/README.md
CHANGED
|
@@ -117,8 +117,8 @@ import spiki from 'spikijs';
|
|
|
117
117
|
| **`this.$refs`** | Object containing all `s-ref` DOM elements. | `this.$refs.textInput.focus();` |
|
|
118
118
|
| **`this.$store`** | Accesses registered global stores. | `this.$store.settings.theme` |
|
|
119
119
|
| **`spiki.store()`** | Registers global store (runs `init()` automatically if present). | `spiki.store('settings', { theme: 'dark', init() {} })` |
|
|
120
|
+
| **`spiki.data()`** | Registers component state with one or more modules/factories. | `spiki.data('app', createAuth, createCart)` |
|
|
120
121
|
| **`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)` |
|
|
122
122
|
|
|
123
123
|
---
|
|
124
124
|
|
|
@@ -347,9 +347,9 @@ spiki.data('noteApp', () => ({
|
|
|
347
347
|
|
|
348
348
|
---
|
|
349
349
|
|
|
350
|
-
### 8. Modular State Composition
|
|
350
|
+
### 8. Modular State Composition
|
|
351
351
|
|
|
352
|
-
For large applications, organize code into smaller modules and
|
|
352
|
+
For large applications, organize code into smaller modules and pass them directly into `spiki.data()`. It preserves getters, setters, and computed properties while allowing methods across modules to share state via `this`:
|
|
353
353
|
|
|
354
354
|
```javascript
|
|
355
355
|
import spiki from 'spikijs';
|
|
@@ -364,16 +364,15 @@ const createThemeModule = () => ({
|
|
|
364
364
|
toggleTheme() { this.darkMode = !this.darkMode; }
|
|
365
365
|
});
|
|
366
366
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
}
|
|
367
|
+
// Pass multiple factory functions directly:
|
|
368
|
+
spiki.data('app',
|
|
369
|
+
createCounterModule,
|
|
370
|
+
createThemeModule,
|
|
371
|
+
() => ({
|
|
372
|
+
init() {
|
|
373
|
+
console.log('App ready, initial count:', this.count);
|
|
375
374
|
}
|
|
376
|
-
)
|
|
375
|
+
})
|
|
377
376
|
);
|
|
378
377
|
```
|
|
379
378
|
|
package/package.json
CHANGED
package/spiki.d.ts
CHANGED
|
@@ -56,11 +56,11 @@ export type ComponentFactory<T> = () => T & ThisType<T & SpikiInstance>;
|
|
|
56
56
|
|
|
57
57
|
export interface Spiki {
|
|
58
58
|
/**
|
|
59
|
-
* Registers a new component.
|
|
59
|
+
* Registers a new component with one or more modules/factories.
|
|
60
60
|
* @param name Name matching 's-data' in HTML.
|
|
61
|
-
* @param
|
|
61
|
+
* @param modules Factory functions or objects returning/containing state.
|
|
62
62
|
*/
|
|
63
|
-
data
|
|
63
|
+
data(name: string, ...modules: any[]): void;
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
66
|
* Scans the document and mounts all components.
|
|
@@ -92,11 +92,6 @@ 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;
|
|
100
95
|
}
|
|
101
96
|
|
|
102
97
|
declare const spiki: Spiki;
|
package/spiki.esm.js
CHANGED
|
@@ -138,13 +138,40 @@ var spiki = (() => {
|
|
|
138
138
|
if (key === '_t') return target;
|
|
139
139
|
if (key === '_d') return target._d;
|
|
140
140
|
if (key === '_i') return target._i;
|
|
141
|
+
if (key === '_c') return target._c;
|
|
141
142
|
|
|
142
143
|
if (Array.isArray(target) && arrInst.hasOwnProperty(key)) return arrInst[key];
|
|
143
144
|
var desc = Object.getOwnPropertyDescriptor(target, key);
|
|
144
145
|
if (desc && desc.get) {
|
|
145
|
-
var
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
var c = target._c || (Object.defineProperty(target, '_c', {
|
|
147
|
+
value: Object.create(null)
|
|
148
|
+
}), target._c);
|
|
149
|
+
|
|
150
|
+
var comp = c[key];
|
|
151
|
+
if (!comp) {
|
|
152
|
+
var runner = () => {
|
|
153
|
+
cleanup(runner);
|
|
154
|
+
var prev = activeEffect;
|
|
155
|
+
activeEffect = runner;
|
|
156
|
+
try {
|
|
157
|
+
comp.d = false;
|
|
158
|
+
comp.v = desc.get.call(receiver);
|
|
159
|
+
} finally {
|
|
160
|
+
activeEffect = prev;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
runner.deps = [];
|
|
164
|
+
runner.sched = () => {
|
|
165
|
+
if (!comp.d) {
|
|
166
|
+
comp.d = true;
|
|
167
|
+
trigger(target, key);
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
comp = c[key] = { r: runner, d: true, v: undefined };
|
|
171
|
+
}
|
|
172
|
+
if (comp.d) comp.r();
|
|
173
|
+
track(target, key);
|
|
174
|
+
return (comp.v && typeof comp.v === 'object' && !(comp.v instanceof Node)) ? makeReactive(comp.v) : comp.v;
|
|
148
175
|
}
|
|
149
176
|
track(target, key);
|
|
150
177
|
var res = Reflect.get(target, key, receiver);
|
|
@@ -536,6 +563,7 @@ var spiki = (() => {
|
|
|
536
563
|
if (state.destroy) state.destroy.call(state);
|
|
537
564
|
var i = cleanups.length; while (i--) cleanups[i]();
|
|
538
565
|
for(var k in listeners) rootElement.removeEventListener(k, handle);
|
|
566
|
+
if (state._c) for (var k in state._c) cleanup(state._c[k].r);
|
|
539
567
|
rootElement._m = null;
|
|
540
568
|
}
|
|
541
569
|
};
|
|
@@ -552,23 +580,16 @@ var spiki = (() => {
|
|
|
552
580
|
return result;
|
|
553
581
|
};
|
|
554
582
|
|
|
555
|
-
var compose = (...modules) => {
|
|
556
|
-
var target = {};
|
|
557
|
-
for (var i = 0; i < modules.length; i++) {
|
|
558
|
-
var mod = modules[i];
|
|
559
|
-
if (mod) {
|
|
560
|
-
Object.defineProperties(
|
|
561
|
-
target,
|
|
562
|
-
Object.getOwnPropertyDescriptors(typeof mod === 'function' ? mod() : mod)
|
|
563
|
-
);
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
return target;
|
|
567
|
-
};
|
|
568
|
-
|
|
569
583
|
return {
|
|
570
|
-
data: (name,
|
|
571
|
-
|
|
584
|
+
data: (name, ...fns) => {
|
|
585
|
+
cmpReg[name] = fns.length === 1 ? fns[0] : () => {
|
|
586
|
+
var target = {};
|
|
587
|
+
for (var i = 0; i < fns.length; i++) {
|
|
588
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(fns[i]()));
|
|
589
|
+
}
|
|
590
|
+
return target;
|
|
591
|
+
};
|
|
592
|
+
},
|
|
572
593
|
start: () => {
|
|
573
594
|
var els = document.querySelectorAll('[s-data]');
|
|
574
595
|
var i = els.length;
|
package/spiki.esm.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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}},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=[]},
|
|
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}},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=[]},d=(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)},h=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("_c"===t)return e._c;if(Array.isArray(e)&&f.hasOwnProperty(t))return f[t];var a=Object.getOwnPropertyDescriptor(e,t);if(a&&a.get){var o=e._c||(Object.defineProperty(e,"_c",{value:Object.create(null)}),e._c),i=o[t];if(!i){var l=()=>{v(l);var e=n;n=l;try{i.d=!1,i.v=a.get.call(r)}finally{n=e}};l.deps=[],l.sched=()=>{i.d||(i.d=!0,u(e,t))},i=o[t]={r:l,d:!0,v:void 0}}return i.d&&i.r(),p(e,t),!i.v||"object"!=typeof i.v||i.v instanceof Node?i.v:h(i.v)}p(e,t);var s=Reflect.get(e,t,r);return!s||"object"!=typeof s||s instanceof Node?s:h(s)},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=h({});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=h(o);i.$refs={},i.$root=r,i.$store=e,i.$parent=a;var f=[],u=Object.create(null),b=e=>{var t=e.target;if("input"!==e.type||!t._c)for(var a=r.parentNode,n=e.type;t&&t!==a&&!e.cancelBubble;){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 d=l,h=0,y=p.length-1;h<y&&d;)d=d[p[h++]];d&&(d[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))}if(e.cancelBubble)break}}t=t.parentNode}},_=e=>{u[e]||(u[e]=!0,r.addEventListener(e,b,!!l[e]))},m=(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(""),v=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(d(()=>{var r=c(t,x).val;if(A&&(r=!r),r)v||((v=e.cloneNode(!0)).removeAttribute("s-if"),m(v,t,O),u.parentNode.insertBefore(v,u));else if(v){for(var a=O.length;a--;)O[a]();O=[],v.remove(),v=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,B=(u=document.createTextNode(""),Object.create(null));return e.replaceWith(u),a.push(()=>{for(var e in B)B[e].cleanups.forEach(e=>e())}),a.push(d(()=>{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],d=o?r[s]:r[v];f=null==d||"object"!=typeof d?String(d):$?c(d,$).val:String(v)+"_o",N[f]&&(f+="_"+s);var y=B[f];if(y)y.scope[C]=d,S&&(y.scope[S]=v);else{var g=e.content.cloneNode(!0),b=Object.create(t);Object.defineProperty(b,"_i",{value:!0});var _=h(b);_[C]=d,S&&(_[S]=v);for(var O=Array.prototype.slice.call(g.childNodes),A=[],j=0;j<O.length;j++)m(O[j],_,A);y={nodes:Array.prototype.slice.call(g.childNodes),scope:_,cleanups:A},B[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),B)N[x]||(B[x].cleanups.forEach(e=>e()),B[x].nodes.forEach(e=>e.remove()),delete B[x])},s))}}if(e.hasAttributes())for(var M=e.attributes,R=M.length;R--;){var q=M[R],D=q.name,F=q.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(d(()=>{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,b({target:e,type:"input"})})),(e._h[z]=e._h[z]||[]).push({model:!0,p:n}),_(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}),_(r))}}f.length&&a.push(d(()=>{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;m(G,t,a),G=I}}};m(r,i,f),i.init&&i.init();var O={unmount:()=>{i.destroy&&i.destroy.call(i);for(var e=f.length;e--;)f[e]();for(var t in u)r.removeEventListener(t,b);if(i._c)for(var t in i._c)v(i._c[t].r);r._m=null}};return r._m=O,O}},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]=1===r.length?r[0]:()=>{for(var e={},t=0;t<r.length;t++)Object.defineProperties(e,Object.getOwnPropertyDescriptors(r[t]()));return e}},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
|
@@ -141,13 +141,40 @@ var spiki = (() => {
|
|
|
141
141
|
if (key === '_t') return target;
|
|
142
142
|
if (key === '_d') return target._d;
|
|
143
143
|
if (key === '_i') return target._i;
|
|
144
|
+
if (key === '_c') return target._c;
|
|
144
145
|
|
|
145
146
|
if (Array.isArray(target) && arrInst.hasOwnProperty(key)) return arrInst[key];
|
|
146
147
|
var desc = Object.getOwnPropertyDescriptor(target, key);
|
|
147
148
|
if (desc && desc.get) {
|
|
148
|
-
var
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
var c = target._c || (Object.defineProperty(target, '_c', {
|
|
150
|
+
value: Object.create(null)
|
|
151
|
+
}), target._c);
|
|
152
|
+
|
|
153
|
+
var comp = c[key];
|
|
154
|
+
if (!comp) {
|
|
155
|
+
var runner = () => {
|
|
156
|
+
cleanup(runner);
|
|
157
|
+
var prev = activeEffect;
|
|
158
|
+
activeEffect = runner;
|
|
159
|
+
try {
|
|
160
|
+
comp.d = false;
|
|
161
|
+
comp.v = desc.get.call(receiver);
|
|
162
|
+
} finally {
|
|
163
|
+
activeEffect = prev;
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
runner.deps = [];
|
|
167
|
+
runner.sched = () => {
|
|
168
|
+
if (!comp.d) {
|
|
169
|
+
comp.d = true;
|
|
170
|
+
trigger(target, key);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
comp = c[key] = { r: runner, d: true, v: undefined };
|
|
174
|
+
}
|
|
175
|
+
if (comp.d) comp.r();
|
|
176
|
+
track(target, key);
|
|
177
|
+
return (comp.v && typeof comp.v === 'object' && !(comp.v instanceof Node)) ? makeReactive(comp.v) : comp.v;
|
|
151
178
|
}
|
|
152
179
|
track(target, key);
|
|
153
180
|
var res = Reflect.get(target, key, receiver);
|
|
@@ -539,6 +566,7 @@ var spiki = (() => {
|
|
|
539
566
|
if (state.destroy) state.destroy.call(state);
|
|
540
567
|
var i = cleanups.length; while (i--) cleanups[i]();
|
|
541
568
|
for(var k in listeners) rootElement.removeEventListener(k, handle);
|
|
569
|
+
if (state._c) for (var k in state._c) cleanup(state._c[k].r);
|
|
542
570
|
rootElement._m = null;
|
|
543
571
|
}
|
|
544
572
|
};
|
|
@@ -555,23 +583,16 @@ var spiki = (() => {
|
|
|
555
583
|
return result;
|
|
556
584
|
};
|
|
557
585
|
|
|
558
|
-
var compose = (...modules) => {
|
|
559
|
-
var target = {};
|
|
560
|
-
for (var i = 0; i < modules.length; i++) {
|
|
561
|
-
var mod = modules[i];
|
|
562
|
-
if (mod) {
|
|
563
|
-
Object.defineProperties(
|
|
564
|
-
target,
|
|
565
|
-
Object.getOwnPropertyDescriptors(typeof mod === 'function' ? mod() : mod)
|
|
566
|
-
);
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
return target;
|
|
570
|
-
};
|
|
571
|
-
|
|
572
586
|
return {
|
|
573
|
-
data: (name,
|
|
574
|
-
|
|
587
|
+
data: (name, ...fns) => {
|
|
588
|
+
cmpReg[name] = fns.length === 1 ? fns[0] : () => {
|
|
589
|
+
var target = {};
|
|
590
|
+
for (var i = 0; i < fns.length; i++) {
|
|
591
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(fns[i]()));
|
|
592
|
+
}
|
|
593
|
+
return target;
|
|
594
|
+
};
|
|
595
|
+
},
|
|
575
596
|
start: () => {
|
|
576
597
|
var els = document.querySelectorAll('[s-data]');
|
|
577
598
|
var i = els.length;
|
package/spiki.min.js
CHANGED
|
@@ -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=[]},
|
|
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=[]},d=(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)},h=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("_c"===t)return e._c;if(Array.isArray(e)&&f.hasOwnProperty(t))return f[t];var a=Object.getOwnPropertyDescriptor(e,t);if(a&&a.get){var o=e._c||(Object.defineProperty(e,"_c",{value:Object.create(null)}),e._c),i=o[t];if(!i){var l=()=>{v(l);var e=n;n=l;try{i.d=!1,i.v=a.get.call(r)}finally{n=e}};l.deps=[],l.sched=()=>{i.d||(i.d=!0,u(e,t))},i=o[t]={r:l,d:!0,v:void 0}}return i.d&&i.r(),p(e,t),!i.v||"object"!=typeof i.v||i.v instanceof Node?i.v:h(i.v)}p(e,t);var s=Reflect.get(e,t,r);return!s||"object"!=typeof s||s instanceof Node?s:h(s)},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=h({});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=h(o);i.$refs={},i.$root=r,i.$store=e,i.$parent=a;var f=[],u=Object.create(null),b=e=>{var t=e.target;if("input"!==e.type||!t._c)for(var a=r.parentNode,n=e.type;t&&t!==a&&!e.cancelBubble;){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 d=l,h=0,y=p.length-1;h<y&&d;)d=d[p[h++]];d&&(d[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))}if(e.cancelBubble)break}}t=t.parentNode}},_=e=>{u[e]||(u[e]=!0,r.addEventListener(e,b,!!l[e]))},m=(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(""),v=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(d(()=>{var r=c(t,x).val;if(A&&(r=!r),r)v||((v=e.cloneNode(!0)).removeAttribute("s-if"),m(v,t,O),u.parentNode.insertBefore(v,u));else if(v){for(var a=O.length;a--;)O[a]();O=[],v.remove(),v=null}},s))}if(l){var P=l.indexOf(" in ");if(-1!==P){var N,k=l.slice(0,P).trim(),w=l.slice(P+4).trim(),E=k.replace(/[()]/g,"").split(","),C=E[0].trim(),S=E[1]?E[1].trim():null,T=-1===w.indexOf(".")?w:w.split("."),L=e.getAttribute("s-key"),$=L?-1===L.indexOf(".")?L:L.split("."):null,B=(u=document.createTextNode(""),Object.create(null));return e.replaceWith(u),a.push(()=>{for(var e in B)B[e].cleanups.forEach(e=>e())}),a.push(d(()=>{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],d=o?r[s]:r[v];f=null==d||"object"!=typeof d?String(d):$?c(d,$).val:String(v)+"_o",N[f]&&(f+="_"+s);var y=B[f];if(y)y.scope[C]=d,S&&(y.scope[S]=v);else{var g=e.content.cloneNode(!0),b=Object.create(t);Object.defineProperty(b,"_i",{value:!0});var _=h(b);_[C]=d,S&&(_[S]=v);for(var O=Array.prototype.slice.call(g.childNodes),A=[],j=0;j<O.length;j++)m(O[j],_,A);y={nodes:Array.prototype.slice.call(g.childNodes),scope:_,cleanups:A},B[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),B)N[x]||(B[x].cleanups.forEach(e=>e()),B[x].nodes.forEach(e=>e.remove()),delete B[x])},s))}}if(e.hasAttributes())for(var M=e.attributes,R=M.length;R--;){var q=M[R],D=q.name,F=q.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(d(()=>{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,b({target:e,type:"input"})})),(e._h[z]=e._h[z]||[]).push({model:!0,p:n}),_(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}),_(r))}}f.length&&a.push(d(()=>{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;m(G,t,a),G=I}}};m(r,i,f),i.init&&i.init();var O={unmount:()=>{i.destroy&&i.destroy.call(i);for(var e=f.length;e--;)f[e]();for(var t in u)r.removeEventListener(t,b);if(i._c)for(var t in i._c)v(i._c[t].r);r._m=null}};return r._m=O,O}},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]=1===r.length?r[0]:()=>{for(var e={},t=0;t<r.length;t++)Object.defineProperties(e,Object.getOwnPropertyDescriptors(r[t]()));return e}},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}();
|